使用Kustomize部署禅道21.7.6项目管理平台
实际应用场景背景
在现代软件开发过程中,项目管理工具是团队协作不可或缺的一部分。禅道(ZenTao)作为一款开源的项目管理软件,提供了需求管理、任务管理、缺陷跟踪、文档管理等功能。通过Kubernetes和Kustomize的组合,我们可以实现禅道的标准化部署和配置管理,提高部署效率和环境一致性。
为什么选择禅道21.7.6版本
禅道21.7.6版本具有以下优势:
- 功能完善,包含了项目管理所需的核心功能
- 界面友好,易于上手和使用
- 开源免费,降低了企业成本
- 支持插件扩展,可根据需要定制功能
- 稳定性经过充分验证,适合生产环境使用
禅道21.7.6基础部署配置
ConfigMap配置
首先,我们需要配置禅道所需的环境变量,包括数据库连接信息等:
apiVersion: v1
kind: ConfigMap
metadata:
name: zentao-config
data:
# 数据库连接配置
MYSQL_HOST: "192.168.3.7"
MYSQL_PORT: "3306"
MYSQL_DB: "zentao"
MYSQL_USER: "zentao"
MYSQL_PASSWORD: "Zentao@345"
MYSQL_INTERNAL: "false"
# SSL配置
MYSQL_USE_SSL: "false"
# 其他配置
ZENTAO_CONTEXT: "/"
Deployment配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: zentao
spec:
template:
spec:
securityContext:
fsGroup: 1000
containers:
- name: zentao
image: easysoft/zentao:21.7.6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: http
envFrom:
- configMapRef:
name: zentao-config
volumeMounts:
- name: zentao-data
mountPath: /data
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 60
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 3
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 180
timeoutSeconds: 5
periodSeconds: 30
failureThreshold: 3
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "4Gi"
volumes:
- name: zentao-data
persistentVolumeClaim:
claimName: zentao-pvc
Service配置
apiVersion: v1
kind: Service
metadata:
name: zentao
spec:
selector:
app: zentao
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: zentao-nodeport
spec:
type: NodePort
ports:
- name: zentao-ui
port: 80
targetPort: 80
nodePort: 31410
PVC配置
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zentao-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: nfs-storage
使用Kustomize组织配置
Base配置
resources:
- ./configmap.yaml
- ./deployment.yaml
- ./service.yaml
- ./pvc.yaml
commonAnnotations:
application: infrastructure-zentao应用
commonLabels:
version: "2176"
Overlay配置
resources:
- ../../base
namespace: infrastructure
commonLabels:
env: "2176"
部署命令
使用以下命令部署禅道:
kubectl apply -k overlays/infrastructure
或者使用dry-run模式预览将要部署的资源:
kubectl apply -k overlays/infrastructure --dry-run=client -o yaml
配置参数详解
以下表格详细说明了禅道部署中的关键配置参数:
| 参数名 | 含义 | 可选值 | 默认值 |
|---|---|---|---|
| MYSQL_HOST | 数据库主机地址 | 有效的主机地址或IP | "192.168.3.7" |
| MYSQL_PORT | 数据库端口 | 有效的端口号 | "3306" |
| MYSQL_DB | 数据库名称 | 数据库名 | "zentao" |
| MYSQL_USER | 数据库用户名 | 用户名 | "zentao" |
| MYSQL_PASSWORD | 数据库密码 | 密码 | "Zentao@345" |
| MYSQL_INTERNAL | 是否使用内部数据库 | "true"/"false" | "false" |
| MYSQL_USE_SSL | 是否启用SSL连接 | "true"/"false" | "false" |
| ZENTAO_CONTEXT | 禅道上下文路径 | 有效的URL路径 | "/" |
| initialDelaySeconds | 健康检查初始延迟时间 | 正整数(秒) | 60(就绪检查)/180(存活检查) |
| periodSeconds | 健康检查间隔时间 | 正整数(秒) | 10(就绪检查)/30(存活检查) |
| failureThreshold | 健康检查失败阈值 | 正整数 | 3 |
| cpu | CPU资源配置 | Kubernetes资源单位 | 500m(请求)/2(限制) |
| memory | 内存资源配置 | Kubernetes资源单位 | 1Gi(请求)/4Gi(限制) |
访问禅道
部署完成后,可以通过以下方式访问禅道:
- 通过NodePort访问:http://<节点IP>:31410
- 通过Service ClusterIP访问:http://zentao.infrastructure.svc.cluster.local
首次访问需要进行初始化配置,包括设置管理员账号密码等。
数据持久化
禅道的数据通过PersistentVolumeClaim进行持久化存储,确保在Pod重启或重新调度后数据不会丢失。存储使用的是nfs-storage类型的StorageClass,容量为10Gi。
总结
通过Kustomize部署禅道21.7.6,我们可以实现配置的标准化和可重复性。这种部署方式不仅便于维护和升级,还能与GitOps工具如ArgoCD良好集成,实现持续交付。在企业环境中,这种方式能够显著提高部署效率和可靠性。
评论区