目 录CONTENT

文章目录

ArgoCD驱动的CICD全解耦实践-若依项目GitOps部署全解析

Administrator
2025-08-15 / 2 评论 / 7 点赞 / 190 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2025-08-15,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

ArgoCD驱动的CICD全解耦实践-若依项目GitOps部署全解析

📌 核心目标

通过Argo CD Image Updater实现若依项目容器镜像的自动化更新,解决非HTTPS私有仓库的GitOps全流程集成问题。

🔧 前置条件清单

🖥️ 镜像仓库环境说明

访问方式地址认证方式
浏览器访问http://服务器IP:30002
Docker登录docker login k8s-harbor:30002admin/Harbor12345
集群内部域名k8s-harbor:30002需配置hosts

🔄 Image Updater配置详解

⚙️ 私有仓库配置

https

kubectl edit cm argocd-image-updater-config -n argocd
data:
  registries.conf: |
    registries:
    - name: harbor
      api_url: http://k8s-harbor:30002
      prefix: k8s-harbor:30002
      ping: yes
      insecure: yes  # 跳过证书验证

registry

kubectl delete pod -n argocd $(kubectl get pods -n argocd | grep argocd-image-updater | awk '{print $1}')

🔑 镜像拉取凭证创建

kubectl create secret docker-registry harbor-secret \
  --docker-server=k8s-harbor:30002 \
  --docker-username=admin \
  --docker-password=Harbor12345 \
  -n argocd
  
# 解释:
kubectl create secret docker-registry \  # 使用 kubectl 创建 Docker 仓库认证类型的 Secret
  harbor-secret \                        # 定义 Secret 的名称为 "harbor-secret"(自定义名称)
   --docker-server=k8s-harbor:30002 \    # 指定 Docker 仓库服务器地址和端口(私有仓库地址)
   --docker-username=admin \             # 设置访问仓库的用户名(需替换为实际用户名)
   --docker-password=Harbor12345 \       # 设置访问仓库的密码(需替换为实际密码)
   -n argocd                             # 指定 Secret 部署到名为 "argocd" 的命名空间  

🐳 Docker环境适配

1. 修改daemon.json

{
  "registry-mirrors": ["http://k8s-harbor:30002"],
  "insecure-registries": ["k8s-harbor:30002"]
}
sudo systemctl daemon-reload && systemctl restart docker

2. 配置hosts解析

echo "192.168.80.128 k8s-harbor" | sudo tee -a /etc/hosts

🌐 CoreDNS域名解析增强

dns

kubectl edit cm coredns -n kube-system

在Corefile中添加:

hosts {
  192.168.80.128 k8s-harbor
  fallthrough
}

dns2

# 需要重启/重建coredns生效
kubectl delete pod -n kube-system $(kubectl get pods -n kube-system | grep coredns | awk '{print $1}')

🚀 ruoyi-gateway部署流程

🛠️ CI流水线准备

参考半解耦实践文档完成镜像构建推送

📦 Argocd Application配置

基础版本配置(无Image Updater)

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: sms-prod
spec:
  destination:
    name: ''
    namespace: ''
    server: 'https://kubernetes.default.svc'
  source:
    path: howlaisi/sms/overlays/sms-prod-project
    repoURL: 'https://gitee.com/howlaisi/argocd-gitops.git'
    targetRevision: HEAD
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true      

增强版本配置(带Image Updater)

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: sms-prod
  annotations:
    argocd-image-updater.argoproj.io/image-list: "ruoyi-gateway=k8s-harbor:30002/sms-prod-project/ruoyi-gateway"
    argocd-image-updater.argoproj.io/update-strategy: latest
    argocd-image-updater.argoproj.io/write-back-method: git
    argocd-image-updater.argoproj.io/git-branch: master

    # 镜像别名配置
    argocd-image-updater.argoproj.io/ruoyi-gateway.allow-tags: "regexp:^.*$"
    argocd-image-updater.argoproj.io/ruoyi-gateway.pull-secret: "pullsecret:argocd/harbor-secret"
    argocd-image-updater.argoproj.io/ruoyi-gateway.kustomize.image-name: "ruoyi-gateway-image"
    argocd-image-updater.argoproj.io/ruoyi-gateway.force-update: "true"
spec:
  destination:
    name: ''
    namespace: ''
    server: 'https://kubernetes.default.svc'
  source:
    path: howlaisi/sms/overlays/sms-prod-project
    repoURL: 'https://gitee.com/howlaisi/argocd-gitops.git'
    targetRevision: HEAD
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

autocommit

📖 配置参数详解表

参数类别参数名作用说明
全局配置image-list定义镜像更新列表(别名=镜像地址)
update-strategy更新策略(latest/semver)
write-back-method写回方式(git/patch)
git-branch写回分支(master或其他)
镜像别名配置allow-tags允许更新的标签正则表达式
pull-secret镜像拉取凭证
kustomize.image-nameKustomize镜像名称映射
force-update强制更新开关

🔗 参考文档

  1. Kubernetes CoreDNS私有域名解析方案
  2. KubeSphere官方GitOps实践指南
  3. Argo CD Image Updater官方文档
  4. GitOps流水线改造深度解析
7

评论区