前置: 一套kubernetes集群
一、服务部署
根据自身要求进行部署不同版本
$ kubectl create namespace argocd$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.0.4/manifests/install.yaml
HA高可用版本
$ kubectl create namespace argocd$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.0.4/manifests/ha/install.yaml
查看部署详情,此步骤由于镜像的原因会很慢
$ kubectl get pods -n argocdargocd-application-controller-0 1/1 Running 0 15hargocd-applicationset-controller-66689cbf4b-s6f8z 1/1 Running 0 15hargocd-dex-server-5b5cf6d675-6xvpp 1/1 Running 0 15hargocd-notifications-controller-6f498fc8c6-2htbz 1/1 Running 0 15hargocd-redis-d486999b7-pfb47 1/1 Running 0 15hargocd-repo-server-5b6f6b7cc-x652q 1/1 Running 0 15hargocd-server-6d988d7467-thfj6 1/1 Running 0 15h
安装argocd cli
# 这里需要注意版本要和argocd-server版本一致 $VERSION$ curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64$ chmox +x /usr/local/bin/argocd$ argocd versionargocd: v2.3.2+ecc2af9BuildDate: 2022-03-23T02:04:18ZGitCommit: ecc2af9dcaa12975e654cde8cbbeaffbb315f75cGitTreeState: cleanGoVersion: go1.17.6Compiler: gcPlatform: linux/amd64argocd-server: v2.3.2+ecc2af9BuildDate: 2022-03-23T00:40:57ZGitCommit: ecc2af9dcaa12975e654cde8cbbeaffbb315f75cGitTreeState: cleanGoVersion: go1.17.6Compiler: gcPlatform: linux/amd64Ksonnet Version: v0.13.1Kustomize Version: v4.4.1 2021-11-11T23:36:27ZHelm Version: v3.8.0+gd141386Kubectl Version: v0.23.1Jsonnet Version: v0.18.0
登录argocd ui
# 密码获取$ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo# 更改密码 这里只填argo server的地址 并且svc使用nodePort方式暴露$ argocd login 10.2.240.31:30619WARNING: server certificate had error: x509: certificate is valid for e2d1e856c987c94f3c918276921a61ba.6a98e1283291d1b7a23d19e240b6ee89.traefik.default, not argocd.k8s.local. Proceed insecurely (y/n)? yUsername: adminPassword:'admin:login' logged in successfullyContext 'argocd.k8s.local' updatedCLI 登录成功后,可以使用如下所示命令更改密码:$ argocd account update-password*** Enter current password:*** Enter new password:*** Confirm new password:Password updatedContext 'argocd.k8s.local' updated
二、集群配置
由于 Argo CD 支持部署应用到多集群,所以如果你要将应用部署到外部集群的时候,需要先将外部集群的认证信息注册到 Argo CD 中,如果是在内部部署(运行 Argo CD 的同一个集群,默认不需要配置),应该使用 https://kubernetes.default.svc 作为应用的 K8S APIServer 地址。
首先列出当前 kubeconfig 中的所有集群上下文:
$ kubectl config get-contexts -o namecnych-contextkubernetes-admin@cluster.local
从列表中选择一个上下文名称并将其提供给 argocd cluster add CONTEXTNAME
$ argocd cluster add kubernetes-admin@cluster.local# 报错[root@k8s-master01 argocd]# argocd cluster add kubernetes-admin@cluster.localWARNING: This will create a service account `argocd-manager` on the cluster referenced by context `kubernetes-admin@cluster.local` with full cluster level admin privileges. Do you want to continue [y/N]? yINFO[0002] ServiceAccount "argocd-manager" already exists in namespace "kube-system"INFO[0002] ClusterRole "argocd-manager-role" updatedINFO[0002] ClusterRoleBinding "argocd-manager-role-binding" updatedFATA[0002] rpc error: code = Unknown desc = Get "https://127.0.0.1:6443/version?timeout=32s": dial tcp 127.0.0.1:6443: connect: connection refused# 解决: https://github.com/argoproj/argo-cd/issues/4204# 在集群的.kubu/config 配置文件中修改api server地址为真实节点地址,而不是127.0.0.1$ argocd cluster add kubernetes-admin@cluster.localWARNING: This will create a service account `argocd-manager` on the cluster referenced by context `kubernetes-admin@cluster.local` with full cluster level admin privileges. Do you want to continue [y/N]? yINFO[0002] ServiceAccount "argocd-manager" already exists in namespace "kube-system"INFO[0002] ClusterRole "argocd-manager-role" updatedINFO[0002] ClusterRoleBinding "argocd-manager-role-binding" updatedCluster 'https://10.2.240.30:6443' added
三、部署测试
3.1 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
