本指南假定您已经了解 Argo CD 所基于的工具。请阅读基础知识以了解这些工具。
~/.kube/config
)。kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
这将创建一个新的命名空间 argocd
,Argo CD 服务和应用程序资源将驻留在该命名空间中。
如果您对 UI,SSO,多集群管理不感兴趣并且只想将更改放入集群中,则可以使用 --disable-auth
flag 禁用身份验证,并使用 --port-forward
或 --port-forward-namespace
flag 通过 CLI 访问 Argo CD。并继续执行步骤6:
`kubectl patch deploy argocd-server -n argocd -p '[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--disable-auth"}]' --type json`
从 https://github.com/argoproj/argo-cd/releases/latest 下载最新版的 Argo CD。可通过 CLI 安装文档找到更详细的安装说明。
在 Mac Homebrew 中也可用:
brew install argocd
默认情况下,Argo CD API Server 未使用外部 IP 暴露。要访问 API 服务器,请选择以下技术之一以暴露 Argo CD API Server:
改变 argocd-server service type 到 LoadBalancer
:
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
根据 ingress 文档,以了解如何使用 ingress 配置 Argo CD。
Kubectl port-forwarding 也可以用于连接到 API server,而无需暴露服务。
kubectl port-forward svc/argocd-server -n argocd 8080:443
然后可以使用 localhost:8080 访问 API server
初始密码将自动生成为 Argo CD API server 的容器名称。可以使用以下命令进行检索:
kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
使用用户名 admin
和上面的密码,登录到 Argo CD 的 IP 或主机名:
argocd login <ARGOCD_SERVER>
使用以下命令更改密码:
argocd account update-password
在 ArgoCD 的初始启动过程中,初始密码是在名为 argocd-secret
的 kubernetes secret 中设置的。这意味着如果您以任何方式来编辑 deployment 导致新的 Pod 被部署,例如在 Argo CD API server 上禁用 TLS。首次安装Argo CD 时,请记下初始 Pod 名称,或按照以下说明重设密码
此步骤将集群的凭据注册到 Argo CD,仅在部署到外部集群时才需要。在内部进行部署(到与 Argo CD 运行所在的同一集群)时,应将 https://kubernetes.default.svc 用作应用程序的 K8s API server 地址。
首先列出当前 kubeconfig 中的所有集群上下文:
argocd cluster add
从列表中选择一个上下文名称,并将其提供给 argocd cluster add CONTEXTNAME
。例如,对于 docker-for-desktop 上下文,运行:
argocd cluster add docker-for-desktop
上面的命令将 ServiceAccount(argocd-manager
)安装到该 kubectl 上下文的 kube-system 命名空间中,并将该服务帐户绑定到管理员级别的 ClusterRole。Argo CD 使用此服务帐户令牌执行其管理任务(即部署/监视)。
可以修改 argocd-manager-role
角色的规则,使其仅对有限的一组名称空间,组和种类具有 create
,update
,patch
,delete
特权。但是,在 cluster-scope 中,get
,list
,watch
特权是 Argo CD 起作用所必需的。
包含 guestbook 应用程序的示例存储库可从 https://github.com/argoproj/argocd-example-apps.git 获得,以演示 Argo CD 的工作方式。
您可以使用端口转发访问 Argo CD:在每个 CLI 命令中添加 --port-forward-namespace argocd
flag,或设置ARGOCD_OPTS
环境变量:export ARGOCD_OPTS='--port-forward-namespace argocd'
:
`argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default`
打开浏览器进入 Argo CD 外部 UI,然后通过在浏览器中访问 IP/hostname 登录并使用在步骤4中设置的凭据。
登录后,单击 + New App 按钮,如下所示:
给您的应用命名为 guestbook
,使用项目 default
,并将同步策略保留为 Manual
:
通过将 Respository url 设置为 github repo url,将 https://github.com/argoproj/argocd-example-apps.git repo 连接到 Argo CD,将 Revision 保留为 HEAD
,并将 Path 设置为 guestbook
:
对于 Destination,将集群设置为 in-cluster
,并将名称空间设置为 default
:
填写完以上信息后,请单击 UI 顶部的 Create 以创建 guestbook
应用程序:
创建 guestbook 应用程序后,您现在可以查看其状态:
$ argocd app get guestbook
Name: guestbook
Server: https://kubernetes.default.svc
Namespace: default
URL: https://10.97.164.88/applications/guestbook
Repo: https://github.com/argoproj/argocd-example-apps.git
Target:
Path: guestbook
Sync Policy: <none>
Sync Status: OutOfSync from (1ff8a67)
Health Status: Missing
GROUP KIND NAMESPACE NAME STATUS HEALTH
apps Deployment default guestbook-ui OutOfSync Missing
Service default guestbook-ui OutOfSync Missing
由于尚未部署应用程序,并且尚未创建 Kubernetes 资源,因此应用程序状态最初处于 OutOfSync
状态。要同步(部署)应用程序,请运行:
argocd app sync guestbook
该命令从存储库中检索清单,并对清单执行 kubectl apply
。该 guestbook 应用程序现在正在运行,您现在可以查看其资源组件,日志,事件和评估的健康状态: