一、简介
Argo CD 是一个为 Kubernetes 而生的,遵循声明式 GitOps 理念的持续部署(CD)工具,它的配置和使用非常简单,并且自带一个简单易用的 Dashboard 页面,并且支持多种配置管理/模板工具(例如 Kustomize、Helm、Ksonnet、Jsonnet、plain-YAML)。
Argo CD 被实现为一个 Kubernetes 控制器,它持续监控正在运行的应用程序并将当前的实时状态与所需的目标状态(例如 Git 仓库中的配置)进行比较,在 Git 仓库更改时自动同步和部署应用程序。
二、环境
1、准备好一套 Kubernetes 集群,详见:kubernetes环境部署
2、搭建好github/gitee/gitlab代码仓库,或者运用Argocd官方的的例子做实验
三、安装与部署
1、安装Argo CD
# 创建命名空间
kubectl create namespace argocd
# 部署 argo cd
wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl apply -n argocd -f install.yaml
2、 安装 Argo CD CLI
Argo CD CLI 是用于管理 Argo CD 的命令行工具,不同操作系统具体的安装方式不同,以下是linux系统的安装
wget https://github.com/argoproj/argo-cd/releases/download/v2.3.3/argocd-linux-amd64
chmod +x argocd-linux-amd64
sudo mv argocd-linux-amd64 /usr/local/bin/argocd
[root@master bin]# argocd version
argocd: v2.3.3+07ac038
BuildDate: 2022-03-30T01:46:59Z
GitCommit: 07ac038a8f97a93b401e824550f0505400a8c84e
GitTreeState: clean
GoVersion: go1.17.6
Compiler: gc
Platform: linux/amd64
登录
[root@master bin]# argocd login 192.168.10.11:30705
WARNING: server certificate had error: x509: cannot validate certificate for 192.168.10.11 because it doesn't contain any IP SANs. Proceed insecurely (y/n)? y
Username: admin
Password:
'admin:login' logged in successfully
Context '192.168.10.11:30705' updated
3、发布Argo CD 服务
默认情况下, Argo CD 服务不对外暴露服务,可以通过 LoadBalancer 或者 NodePort 类型的 Service、Ingress、Kubectl 端口转发等方式将 Argo CD 服务发布到 Kubernetes 集群外部。
这里使用以下命令通过 NodePort 服务的方式暴露 Argo CD 到集群外部。
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
现在我们已经将名字为 argocd-server 的 Service 改成 NodePort 类型了,可以在集群外部通过 <节点 IP>:<随机生成的 NodePort 端口> 来访问 Argo CD,我这里随机生成的 NodePort 端口是 30705。