一、环境准备
- gitlab
- k8s
- traefik
- dnsmasq
- harbor
- argocd
概述:
Argo CD 是一款 CD 工具,能轻松的将 Git 仓库中 yaml 资源文件轻松的部署到集群中。一个 Application 可以由多个 yaml 组成。
- 拉取仓库中的资源
- 部署到集群中
二、gitlab仓库
2.1 准备仓库
- 创建一个
argodemo的仓库

manifests目录下创建svc.yaml、deployment.yaml、ingress.yaml
1 | mkdir -pv ArgoDemo/manifests |
1 | cat > deployment.yaml <<EOF |

- 推送到 gitlab
1 | cd .. |
2.2 令牌、密钥
git 仓库可以使用 SSH、HTTPS协议进行连接。
- SSH 协议
- 用户级别的 SSH 密钥
- 仓库级别的部署密钥(argocd用私钥,公钥放gitlab)
- HTTP 协议
- 用户级别的,用户名、密码(在 http 下默认被禁用)
- 仓库级别的,部署令牌(会给出用户名,或自定义用户名)
- 仓库级别的,访问令牌(用户名随便填,需要读取仓库的权限、最低是 Reporter 角色)
三、Argocd配置
3.1 指纹或证书
SSH 连接,需要 argocd 信任 gitlab 的指纹。
HTTPS 连接,需要 argocd 信任 gitlab 的证书。
3.1.1 指纹
- 查看指纹
1 | ssh-keyscan gitlab.qx.lab | ssh-keygen -lf - |
argocd-cli添加指纹
1 | ssh-keyscan gitlab.qx.lab | argocd cert add-ssh --batch |
- 修改
configmap添加指纹,一般不会立刻生效,需要重启下repo-server
1 | kubectl edit configmap argocd-ssh-known-hosts-cm -n argocd |
1 | kubectl rollout restart deployment argocd-repo-server -n argocd |
webui手动添加,一次填写进去就可以。
1 | alias yy="egrep -v '^$|^#'" |
- 非
22端口,添加-p参数
1 | alias yy="egrep -v '^$|^#'" |
3.1.2 证书
这里可以添加服务端证书,也可以添加根证书,推荐根证书,因为时间长。
argocd-ali添加证书
1 | argocd cert add-tls gitlab.qx.lab --from /path/to/root_ca.crt |
webui添加证书
1 | gitlab.qx.lab |
- 编辑
configmap添加,第二个证书的话,往后添加就好。
1 | kubectl edit cm argocd-tls-certs-cm -n argocd |
1 | apiVersion: v1 |
或者从文件中读取
1 | kubectl create configmap argocd-tls-certs-cm -n argocd \ |
不生效的话,重启一下服务
1 | kubectl rollout restart deployment argocd-repo-server -n argocd |
3.2 仓库
每个仓库本质上是一个 secrets 资源。
- 获取仓库列表
1 | argocd repo list |
- 添加仓库
1 | argocd repo add https://gitlab.qx.lab/qiaoxiong/argodemo.git --username xxx --password <token> |
1 | argocd repo add git@gitlab.qx.lab:qiaoxiong/argodemo.git --ssh-private-key-path ./deploy_key |
四、部署
- 创建应用

- 创建所需的选项

- 部署的集群

- 成功部署,并且可以访问

五、更新及回滚
5.1 更新
可以 web 直接操作资源对象,也可以修改 git 仓库,刷新后同步。
web ui 修改

gitlab 修改

因为前面设置了自动同步,所以只需要刷新即可

5.2 回滚
可以 web 操作回滚,也可以修 修改 git 仓库后,刷新,同步(省略)。也可以命令行回滚。
web ui 直接选一个旧版本回顾

命令行回滚又细分为两种,argocd-cli 提供的整个 application 回滚、kubenetes 提供的 deployemnt 回滚。
这里不展开了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 一世贪欢的私域!
评论








