介绍
Argo CD 是一款适用于 Kubernetes 的声明式 GitOps 持续交付工具。
架构
Argo CD 是作为一个 Kubernetes 控制器来实现的,它能持续监控运行中的应用程序,并将当前的实时状态与所需的目标状态(在 Git 仓库中指定)进行比较。 如果部署的应用程序的实时状态与目标状态有偏差,则会被视为 "不同步"。 Argo CD 会报告并可视化差异,同时提供自动或手动同步实时状态的功能,使其恢复到所需的目标状态。 对 Git 仓库中的所需目标状态所做的任何修改都会自动应用并反映在指定的目标环境中。
功能
- 将应用程序自动部署到指定的目标环境中
- 支持多种配置管理/模板工具(kustomize、helm、Jsonnet、plain-YAML)
- 管理和部署到多个集群的能力
- SSO 集成(OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedIn)
- 多租户和 RBAC 授权策略
- 回滚/任意滚动到 Git 仓库中提交的任何应用程序配置
- 应用资源健康状态分析
- 自动配置漂移检测和可视化
- 自动或手动将应用程序同步到所需状态
- 提供应用程序活动实时视图的 Web UI
- 用于自动化和 CI 集成的 CLI
- Webhook 集成(GitHub、BitBucket、GitLab)
- 用于自动化的访问令牌
- 同步前、同步中、同步后钩子,以支持复杂的应用程序推出(如蓝色/绿色和金丝雀升级)
- 应用程序事件和 API 调用的审计跟踪
- Prometheus 指标
- 参数重写,用于重写 Git 中的 helm 参数
安装
sh
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
部署完成后查看pod是否正常启动
sh
kubectl get pods -n argocd
安装 Argo CD CLI
Argo CD CLI 是用于管理 Argo CD 的命令行工具,具体操作系统安装文档参考 Argo CD CLI 安装文档
sh
# ubuntu 系统安装
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
# 授权
chmod +x /usr/local/bin/argocd
验证:
暴露 Argo CD 服务
默认情况下,Argo CD API 服务器不公开外部 IP。 要访问 API 服务器,请选择以下技术之一公开 Argo CD API 服务器:
sh
# NodePort
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
# LoadBalancer
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
浏览器通过https:// :31951 访问Argo CD
获取 Argo CD 密码
Argo CD 安装后有一个内置的 "admin "用户,可以完全访问系统。 建议仅在初始配置时使用 "admin "用户,然后切换到本地用户或配置 SSO 集成,admin "账户的初始密码会自动生成,并以明文形式存储在 Argo CD 安装命名空间中名为 "argocd-initial-admin-secret "的秘密中的 "password "字段中。
sh
# 获取 admin 密码
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
命令方式获取
sh
argocd admin initial-password -n argocd
修改 Argo CD 密码
图形化界面修改 Argo CD 密码
命令行方式修改 Argo CD 密码
sh
# 首先登录
argocd login 192.168.0.81:31951
# 修改密码
argocd account update-password
测试通过 Git 实现应用部署
首先在设置里面添加git仓库
创建成功显示
创建应用
点击sync部署
kubernetes-dashboard查看