上一篇介绍了持续交付中,以及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 argocd
kubectl 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 应用名字--repo
git仓库地址--path
git仓库下的yaml资源清单目录--dest-server
要部署到的目标k8s集群,当前集群就是这样https://kubernetes.default.svc--dest-namespace
目标集群的命名空间--revision
git仓库的分支--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
新建任务
- 根据情况逐个添加信息
- 集群直接使用默认的
- 查看任务情况