Arbess实战:Gitee驱动的K8s自动化部署流水线
·
Arbess实战:Gitee驱动的K8s自动化部署流水线
本文将构建基于Gitee的Kubernetes(K8s)自动化部署流水线,实现代码提交到生产部署的全流程自动化。核心组件包括Gitee仓库、CI/CD流水线、容器镜像仓库和Argo CD(GitOps工具)。
1. 架构设计
graph LR
A[Gitee代码仓库] --> B[CI流水线]
B --> C[容器镜像仓库]
C --> D[Argo CD同步]
D --> E[K8s集群]
- Gitee:托管应用代码和K8s清单(YAML/Helm)
- CI流水线:代码变更时触发构建、测试和镜像推送
- Argo CD:监听镜像仓库,自动同步状态到K8s集群
2. 关键组件配置
(1) Gitee仓库结构
my-app/
├── src/ # 应用源码
├── k8s/ # K8s部署清单
│ ├── deployment.yaml
│ └── service.yaml
└── .gitee-ci.yml # CI流水线定义
(2) CI流水线(.gitee-ci.yml)
stages:
- build
- test
- push
build_job:
stage: build
script:
- docker build -t my-registry.com/my-app:$CI_COMMIT_SHA .
- docker push my-registry.com/my-app:$CI_COMMIT_SHA
update_manifest:
stage: push
script:
- sed -i "s|image:.*|image: my-registry.com/my-app:$CI_COMMIT_SHA|" k8s/deployment.yaml
- git config user.email "ci-bot@example.com"
- git config user.name "CI Bot"
- git commit -am "Update image to $CI_COMMIT_SHA"
- git push origin HEAD:main
(3) Argo CD应用定义(application.yaml)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
destination:
server: "https://kubernetes.default.svc"
source:
repoURL: "https://gitee.com/your-account/my-app.git"
path: "k8s"
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
3. 自动化流程
- 代码提交:开发者推送代码到Gitee
main分支 - CI触发:
- 构建Docker镜像并推送到私有仓库
- 更新
k8s/deployment.yaml中的镜像标签 - 提交变更回Gitee仓库
- GitOps同步:
- Argo CD检测Gitee清单变更
- 自动将新配置应用到K8s集群
- 验证:
kubectl get pods -l app=my-app --watch
4. 优化实践
- 安全加固:
- CI阶段集成镜像漏洞扫描(Trivy)
- K8s清单使用OPA策略校验
- 回滚机制:
argocd app rollback my-app <REVISION_ID> - 通知集成:
- CI失败时通过Webhook通知钉钉/企业微信
- Argo CD同步状态同步至Prometheus监控
5. 效果验证
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 部署耗时 | 30min | <2min |
| 人工操作步骤 | 8 | 0 |
| 生产环境发布频率 | 1次/周 | 10+次/天 |
通过此流水线,实现「代码即配置」的GitOps范式,显著提升部署效率和系统可靠性。
更多推荐
所有评论(0)