基于argocd和helm的云原生gitops-1
部署argocd
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
配置argocd
brew install argocd
argocd admin initial-password -n argocd
把serviceargocd-server
改成lb类型,通过该service访问
demo仓库
lwabish/gitops: e2e: git-tencentcloud-argocd-kubernetes (github.com)
在通过argocd将代码部署到集群前,必须解决镜像构建和推送的问题
准备helm chart
核心:将镜像的tag作为参数,每次构建镜像后修改之
镜像准备
- 通过github action,设置每次push,构建docker镜像,推送到腾讯云镜像仓库。
- 同时将镜像id持久化到chart中,使chart可以直接部署,无需镜像参数
这样就实现仓库里每个commit ID都对应一个镜像,一些非应用代码文件的修改例外,这些修改不需要构建镜像
argo sync
进入argo页面,创建项目,同步上面的仓库。
path指定helm chart的目录
demo阶段禁用了自动sync(因为我们排除了一些文件的镜像构建,如果一个commit没有触发镜像构建,那么sync后image会拉不到)
参考
Getting Started - Argo CD - Declarative GitOps CD for Kubernetes (argo-cd.readthedocs.io)
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。