安装部署

ArgoCD的部署非常简单,安装官方的部署方法(HA模式:

1
2
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.5.2/manifests/ha/install.yaml

可以按照需求调整部署文件,待pod顺利启动后

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# kubectl  -n argocd get pod
NAME                                             READY   STATUS    RESTARTS   AGE
argocd-application-controller-66fbf66657-ghf2c   1/1     Running   0          6d17h
argocd-application-controller-66fbf66657-gpm7d   1/1     Running   0          6d17h
argocd-application-controller-66fbf66657-tr5kd   1/1     Running   0          6d17h
argocd-dex-server-5c5f986596-c8ftv               1/1     Running   0          9d
argocd-redis-ha-haproxy-69c6df79c6-2fxd6         1/1     Running   0          9d
argocd-redis-ha-haproxy-69c6df79c6-mksg2         1/1     Running   0          9d
argocd-redis-ha-haproxy-69c6df79c6-wq57f         1/1     Running   0          9d
argocd-redis-ha-server-0                         2/2     Running   0          9d
argocd-redis-ha-server-1                         2/2     Running   0          9d
argocd-redis-ha-server-2                         2/2     Running   0          9d
argocd-repo-server-76bbb56cc7-d8fp5              1/1     Running   0          7d
argocd-repo-server-76bbb56cc7-qvl5z              1/1     Running   0          7d
argocd-repo-server-76bbb56cc7-xqrfn              1/1     Running   0          7d
argocd-server-6464c7bcd-fgktr                    1/1     Running   0          6d19h
argocd-server-6464c7bcd-jkqdb                    1/1     Running   0          6d19h
argocd-server-6464c7bcd-nfdwn                    1/1     Running   0          6d19h

配置ingress访问argocd

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: argocd-server-ingress
  namespace: argocd
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/redirect-entry-point: https
spec:
  rules:
    - host: cd.testcn
      http:
        paths:
        - backend:
            serviceName: argocd-server
            servicePort: https
          path: /

通过https://cd.test.cn/访问argocd,默认本地用户名是admin,密码是其中一个pod的name,获取密码使用如下方法:

1
# kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2

argocd

用户管理

argocd默认使用本地用户,可以支持ldap。本地用户管理使用修改argocd-cm这个configmap方式,新增用户如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
apiVersion: v1
kind: ConfigMap
metadata:
  annotations:
  labels:
    app.kubernetes.io/name: argocd-cm
    app.kubernetes.io/part-of: argocd
  name: argocd-cm
  namespace: argocd
data:
  accounts.chlai: apiKey,login  #允许用户login和生成aipkey
  users.anonymous.enabled: "true"  #允许匿名用户登陆。

修改完保存立即生效。

系统默认的role有readonly和admin两个,授予用户admin的权限方法是修改argocd-rbac-cm这个configmap:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/name: argocd-rbac-cm
    app.kubernetes.io/part-of: argocd
  name: argocd-rbac-cm
  namespace: argocd
data:
  policy.csv: |-
    g, chlai, role:admin    
  policy.default: role:readonly  #匿名登陆默认使用readonly角色。

生成登陆密码需要使用admin用户cli方式login server,通过argocd account update-password命令修改:

1
2
3
4
5
6
argocd login <argocd-server>
argocd account list
argocd account update-password \
  --account <name> \
  --current-password <current-admin> \
  --new-password <new-user-password>

使用新的用户密码登陆argocd web ui。

argocd

ArgoCD UI界面来创建应用

点击“+ NEW APP”按钮创建应用; argocd

填写应用名称:guestbook;项目:default;同步策略:手动;

argocd

配置来源。这里配置的是Git ,代码仓库的URL配置为 Github上的项目地址为:https://github.com/argoproj/argocd-example-apps.git;Revision选择:HEAD;项目路径选择:guestbook;

argocd

选择应用部署的目标集群:https://kubernetes.default.svc ,因为此次的Argo CD部署在Kubernetes集群当中,默认Argo CD已经帮我们添加好当前所在的Kubernetes集群,直接使用即可。Namespace选择:my-app。Namespcae可以在Kubernetes集群上使用# kubectl create namespace my-app 命令来创建;

argocd

填写完成后,点击 “CREATE” 按钮进行创建;

argocd

由于尚未部署应用程序,并且尚未创建Kubernetes资源,所以Status还是OutOfSync状态,因此我们还需要点击 “SYNC”按钮进行同步(部署)。同时也可以安装argocd客户端,使用Argo CD CLI进行同步:# argocd app sync guestbook

argocd

应用创建完成,处于“未同步”状态,手动同步应用,开始部署应用 argocd

等待应用创建完成 argocd

在Kubernetes集群中查看应用

argocd