上一篇介绍了持续交付中,以及circleci用法,circleci主要负责CI部分,本篇介绍CD部分使用的Argo CD,跟circleci一样也是GitOps风格。
1. Argo CD
测试项目:https://github.com/ffzs/quarkus_demo_k8s
Argo CD官网:https://argoproj.github.io/argo-cd/
Argo CD是针对Kubernetes的开源持续交付解决方案。它由Intuit公司创建,并被许多公司采用,包括Google、NVIDIA、Datadog和Adobe等。它具有一系列令人印象深刻的功能。
1.1 k8s上安装argocd
- 在k8s上创建argocd命名空间
kubectl create namespace argocdkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
1.2 下载Argo CD CLI
访问 https://github.com/argoproj/argo-cd/releases/tag/v1.7.8 下载对应的平台版本

下载之后放到bin目录,并修改权限:

1.3 访问Argo CD API服务器
默认情况下,Argo CD API服务器未使用外部IP公开。要访问API服务器,请选择以下技术之一以公开Argo CD API服务器:
- 负载均衡
- 转发端口
1.3.1 负载均衡
将argocd-server服务类型更改为LoadBalancer
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
1.3.2 转发端口
Kubectl端口转发也可以用于连接到API服务器,而无需公开服务:
kubectl port-forward svc/argocd-server -n argocd 8000:443
然后可以使用localhost:8080访问API服务器。
这里选择负载均衡的方法:

然后通过service的名字找到对应服务的url:

1.4 使用CLI登录
初始密码将自动生成为Argo CD API服务器的容器名称。可以使用以下命令进行检索:
kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2

访问服务网址,密码输入上面的那串,用户名为admin:

修改密码:

浏览器上访问网址https://192.168.3.64:30509/,先进行登录:

2. 使用Argo CD部署
测试项目:https://github.com/ffzs/quarkus_demo_circleci
服务相关内容在svc目录,不过建议新开一个github仓库存储应用配置。
2.1 参数介绍
您可以使用端口转发访问Argo CD:--port-forward-namespace argocd向每个CLI命令添加标志或设置ARGOCD_OPTS环境变量export ARGOCD_OPTS='--port-forward-namespace argocd':
--project default(可选) 使用默认的--name(可选) 应用名字 也可以直接 argocd app create 应用名字--repogit仓库地址--pathgit仓库下的yaml资源清单目录--dest-server要部署到的目标k8s集群,当前集群就是这样https://kubernetes.default.svc--dest-namespace目标集群的命名空间--revisiongit仓库的分支--sync-policy automated(可选) 同步策略自动同步, 不设置则不自动同步,详细查看https://argoproj.github.io/argo-cd/user-guide/auto_sync/
2.2 通过CLI部署
- 部署一个名为 quarkus 的应用
- 配置
https://github.com/ffzs/quarkus_demo_circleci.git项目 - 使用
main分支,现在github把默认的分支从master改成了main
argocd app create quarkus \--repo https://github.com/ffzs/quarkus_demo_circleci.git \--path svc \--dest-server https://kubernetes.default.svc \--dest-namespace default \--revision main
- 查看部署应用
argocd app list

- 查看应用详情
argocd app get quarkus

- 同步部署的应用
argocd app get quarkus

- 设置应用为自动同步
argocd app set quarkus --sync-policy automated
2.3 通过Web UI 部署应用
- 点击
NEW APP新建任务

- 根据情况逐个添加信息

- 集群直接使用默认的

- 查看任务情况

