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. 自动化流程
  1. 代码提交:开发者推送代码到Gitee main分支
  2. CI触发
    • 构建Docker镜像并推送到私有仓库
    • 更新k8s/deployment.yaml中的镜像标签
    • 提交变更回Gitee仓库
  3. GitOps同步
    • Argo CD检测Gitee清单变更
    • 自动将新配置应用到K8s集群
  4. 验证
    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
人工操作步骤80
生产环境发布频率1次/周10+次/天

通过此流水线,实现「代码即配置」的GitOps范式,显著提升部署效率和系统可靠性。

更多推荐