第五部分:Argo CD 实现 GitOps 持续交付

📝 前言

在上一篇文章《Tekton K8S 原生 CI/CD 实践指南》中,我们用 Tekton 完成了从源码到镜像的流水线:代码检出 → 单元测试 → 镜像构建 → 推送镜像仓库。

该流程虽然完成了 CI 部分,但还缺少 CD 自动部署部分。

在当前 Kubernetes 生态下,越来越多团队倾向于 GitOps 模式:将 “应用配置/部署清单” 存放在 Git 仓库里,由工具自动对比 Git 状态与集群状态,一旦 Git 有更新就触发同步。

而 Argo CD 就是 GitOps 模式的典型代表。

📋 前提条件

  • 已部署 Kubernetes 集群
  • 已部署 Tekton

🚀 本章小节

1️⃣ 什么是 Argo CD?

根据官方的说法:Argo CD 是一个用于 Kubernetes 的声明式 GitOps 持续交付工具。

Argo CD 适合做把 Git 中的 YAML/Helm 值变更自动同步到 Kubernetes 的部署。

2️⃣ 安装部署 Argo CD

按照官方文档的安装指引:

1
2
3
kubectl create namespace argocd
kubectl apply -n argocd \
-f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

安装完后默认包含的组件还是挺多的:

1
2
3
4
5
6
7
8
9
10
kubectl get pod -n argocd

NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 51s
argocd-applicationset-controller-74f8788d6-86h7w 1/1 Running 0 63s
argocd-dex-server-5689479758-kg6rx 1/1 Running 0 63s
argocd-notifications-controller-6475c4d47c-vqvph 1/1 Running 0 63s
argocd-redis-7c57df67f8-nm26p 1/1 Running 0 63s
argocd-repo-server-55dd796d65-hzb22 1/1 Running 0 63s
argocd-server-857f6875f6-hh2jk 1/1 Running 0 62s

3️⃣ 暴露访问方式

方式一:端口转发(临时测试用)

1
2
3
kubectl port-forward svc/argocd-server -n argocd 8080:443

# 另外也可以将service改为NodePort暴露

然后通过浏览器访问:https://localhost:8080

方式二:Ingress(生产推荐)

如果集群有 Ingress Controller (如 Nginx Ingress),可以通过如下配置暴露服务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-server
namespace: argocd
spec:
rules:
- host: argocd.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argocd-server
port:
number: 443
tls:
- hosts:
- argocd.example.com
secretName: argocd-tls

之后即可通过 https://argocd.example.com 访问 Argo CD Web UI。

4️⃣ 获取初始登录密码

默认管理员账户名是:admin

初始密码保存在 Secret 中,可用以下命令查看:

1
2
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -d

5️⃣ 创建并同步部署应用

argocd 部署完成后面就是创建一个应用并配置清单仓库(Manifest)地址。

当清单仓库中的 yaml 出现变动时,argocd 就会自动开启部署流程了。

6️⃣ 完整的CI/CD流程

最后这里再贴一下完整的流程图:

✅ 总结

通过本文,我们在上一篇 Tekton 流水线的基础上,加入了 Argo CD,实现了真正意义上的「构建 + 部署」闭环:从代码提交到镜像构建,再到 GitOps 式部署。

整个流程更加 声明式自动化可追溯,符合 云原生 CI/CD 实践。

到这里第五部分关于云原生的 CI/CD 与 GitOps 篇 就结束了,下一部分我们将进入云原生时代的 微服务实战篇,主要包括注册/配置中心、微服务网关、限流统一认证等内容。

感兴趣的同学可以持续关注哈~