argocd
【-1】argocd可以解决什么问题?
- helm 部署是手动的?依赖流水线。而有时候仅仅更新一个小东西,流水线跑好久,CD真的不应该和CI耦合。
- 不同环境的helm配置不同,手动修改问题多,可以用git管理起来,例如分不同环境用目录区分。argocd创建应用可以不通环境部署到不同集群,非常灵活。
/
|-- k8s/
| |-- production/
| | |-- deployment.yaml
| | |-- service.yaml
| |-- staging/
| |-- deployment.yaml
| |-- service.yaml
`-- README.md
- 不要手动修改资源, 让k8s资源修改有迹可循, git是单一真实来源可以提供标准化操作。helm chart 如何保证和线上环境一致?
- helm 安装成功了吗?kubectl 命令查看? 进到pod里面看commitid?这个argocd可以一站式解决。
- 可以管理helm、manifest…
- 如何删除某个ns下某个应用所以有的负载,包括存储。
- 唯一可信源
【0】 ArgoCD 在GitOps中的位置
argocd 的工作流程
- 开发者:
- 开发者commit代码,并推送到远程仓库
- github Action:
- 构建示例应用的镜像。
- 将示例应用的镜像推送到 Docker Registry 镜像仓库。
- 更新代码仓库中 Helm Chart values.yaml 文件的镜像版本。(目前这一步很多都是手动更新镜像版本)
- argocd :
- 通过定期 Poll 的方式持续拉取 Git 仓库,并判断是否有新的 commit。
- 从 Git 仓库获取 Kubernetes 对象,与集群对象进行实时比较,自动更新集群内有差异的资源。
【1】安装ArgoCD 和 ArgoCD Cli
安装 ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://ghproxy.com/https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl wait --for=condition=Ready pods --all -n argocd --timeout 300s
安装 ArgoCD CLI
https://github.com/argoproj/argo-cd/releases
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
获取argocd 的默认密码
argocd admin initial-password -n argocd
修改密码,
argocd account update-password
This password must be only used for first time login. We strongly recommend you update the password using `argocd account update-password`.