ArgoCD 常用命令
2022-10-17
常用
# 列出app
argocd app list
# add repo
argocd repo add git@gitlab-hk.nqspace.com:root/search-ip-deployment.git --insecure-ignore-host-key --ssh-private-key-path ~/.ssh/id_rsa
# create app
argocd app create centos7 --repo git@gitlab-hk.nqspace.com:root/egradehkeks.git --path default/centos7 --dest-namespace default --dest-server https://kubernetes.default.svc
# 开启同步
argocd app set <APPNAME> --sync-policy auto
# 只同意 syncout 状态的资源
argocd app set <APPNAME> --sync-option ApplyOutOfSyncOnly=true
登录
# 这里域名前不加 http、https;而是用 test.com:443,
argocd login ArgoCD_Address:Port
修改密码
argocd account update-password
添加集群、多集群管理
1. 首先登录 argocd
argocd login argocd.nqspace.com:443 --username admin --password xxxxx
WARN[0002] Failed to invoke grpc call. Use flag --grpc-web in grpc calls. To avoid this warning message, use flag --grpc-web.
'admin:login' logged in successfully
Context 'argocd.nqspace.com:443' updated
2. 获取集群信息
# 获取到目标集群的config配置信息
# 根据config配置信息,获取到目标集群的上下文信息
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* liulei@egradeHK-eks-dev.ap-east-1.eksctl.io egradeHK-eks-dev.ap-east-1.eksctl.io liulei@egradeHK-eks-dev.ap-east-1.eksctl.io
3. 添加集群
argocd cluster add liulei@egradeHK-eks-dev.ap-east-1.eksctl.io --kubeconfig ~/.kube/config --name egradeHK-eks-dev
WARNING: This will create a service account `argocd-manager` on the cluster referenced by context `liulei@egradeHK-eks-dev.ap-east-1.eksctl.io` with full cluster level privileges. Do you want to continue [y/N]? y
INFO[0005] ServiceAccount "argocd-manager" created in namespace "kube-system"
INFO[0005] ClusterRole "argocd-manager-role" created
INFO[0005] ClusterRoleBinding "argocd-manager-role-binding" created
WARN[0006] Failed to invoke grpc call. Use flag --grpc-web in grpc calls. To avoid this warning message, use flag --grpc-web.
Cluster 'https://xxxxxx.sk1.ap-east-1.eks.amazonaws.com' added
4. 查看集群信息
argocd cluster list
WARN[0001] Failed to invoke grpc call. Use flag --grpc-web in grpc calls. To avoid this warning message, use flag --grpc-web.
SERVER NAME VERSION STATUS MESSAGE PROJECT
https://6AC249D8849A71C56878F2BF7AF9DA02.sk1.ap-east-1.eks.amazonaws.com egradeHK-eks-dev Unknown Cluster has no applications and is not being monitored.
https://kubernetes.default.svc in-cluster 1.20+ Successful
从git仓库创建一个Application
argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default
创建一个guestbook app,指定仓库地址、应用路径、目标apiserver地址、目标namespace
列出所有app和指定app
argocd app list
argocd app get guestbook
同步指定app
argocd app sync guestbook
管理项目
创建项目
argocd proj create myproject -d https://kubernetes.default.svc,mynamespace -s https://github.com/argoproj/argocd-example-apps.git
-d
: 该项目允许使用的apiserver和namespace
-s
: 允许使用的git仓库
- 查看项目列表:
argocd proj list
- 添加项目可使用的git仓库:
argocd proj add-source <PROJECT> <REPO>
- 删除项目可使用的git仓库:
argocd proj remove-source <PROJECT> <REPO>
- 限制项目可使用的k8s资源(cluster级别资源默认拒绝,namespace级别默认允许):
# 允许使用什么样的资源
argocd proj allow-cluster-resource <PROJECT> <GROUP> <KIND>
argocd proj allow-namespace-resource <PROJECT> <GROUP> <KIND>
# 拒绝使用什么样的资源
argocd proj deny-cluster-resource <PROJECT> <GROUP> <KIND>
argocd proj deny-namespace-resource <PROJECT> <GROUP> <KIND>
- Application分配给项目:
argocd app set guestbook-default --project myproject
- 获取项目信息:
argocd proj get myproject
- 编辑项目yaml:
argocd proj edit myproject
管理APP
查看APP列表: argocd app list|get|delete|create
-p
: 根据项目过滤-l
: 根据标签过滤-r
: 根据仓库过滤-o
: 输出格式。wide|name|json|yaml
手动同步: argocd app sync <APPNAME>
自动同步相关
开启自动同步: argocd app set <APPNAME> --sync-policy auto
关闭自动同步: argocd app set <APPNAME> --sync-policy none
自动同步时,自动删除git中不存在的资源: argocd app set <APPNAME> --auto-prune=true
是否允许一个application有0个资源: argocd app set <APPNAME> --allow-empty=true
时刻保证与git中定义的状态同步: argocd app set <APPNAME> --self-heal=true
自动同步会将所有对象都同步,对apiserver可能会造成更大的压力,可以只同步out-of-sync 状态
的资源: argocd app set <APPNAME> --sync-option ApplyOutOfSyncOnly=true
执行自动同步的要求
仅当Application为
OutOfSync
时才会执行自动同步。
同一个commit id
只会同步一次,不管成功还是失败argocd每三分钟会检测git仓库一次,用于判断app与git中描述的状态是否一致,如果不一致状态为
OutOfSync
。(注意这里并不会触发更新,除非配置了自动同步)