認証/認可系@リソース定義¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. 専用Role¶
Role¶
▼ argocd-application-controllerの場合¶
ArgoCDがSyncできるKubernetesリソースの認可スコープを設定する。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: argocd
name: argocd-application-controller
labels:
app.kubernetes.io/part-of: argocd
rules:
- apiGroups:
- ""
resources:
- secrets
- configmaps
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- argoproj.io
resources:
- applications
- applicationsets
- appprojects
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- list
ClusterRole¶
▼ argocd-serverの場合¶
ArgoCDのダッシュボードが持つKubernetesリソースに対する機能 (例:ログ、Exec) の認可スコープを設定する。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
namespace: argocd
name: argocd-server
labels:
app.kubernetes.io/part-of: argocd
rules:
- apiGroups:
- "*"
resources:
- "*"
verbs:
- delete
- get
- patch
- apiGroups:
- ""
resources:
- events
verbs:
- list
- apiGroups:
- ""
resources:
- pods
- pods/log
verbs:
- get
- apiGroups:
- ""
resources:
- pods/exec
verbs:
- create
- apiGroups:
- argoproj.io
resources:
- applications
verbs:
- get
- list
- watch
02. 専用RoleBinding¶
ServiceAccountとRoleを紐付けるために、RoleBindingを作成する。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: argocd
name: argocd-repo-server
labels:
app.kubernetes.io/part-of: argocd
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: argocd-application-controller
subjects:
- kind: ServiceAccount
name: argocd-application-controller
namespace: argocd
03. 専用ServiceAccount¶
argocd-manager¶
▼ argocd-managerとは¶
ArgoCDのapplication-controllerがデプロイ先と異なるClusterで稼働している場合に、デプロイ先のClusterにエージェントを作成する必要がある。
argocd-managerは、エージェントとして、デプロイ先Clusterでapplication-controllerからのリクエストを仲介する。
argocd-managerの実体は、ServiceAccountである。
このServiceAccountを介して、ArgoCDのapplication-controllerはClusterにKubernetesリソースをデプロイする。
argocd cluster add <デプロイ先のClusterのコンテキスト>
コマンドで、argocd-manager
というServiceAccountを作成できる。
# デフォルトでkube-systemに作成するため、nオプションは不要である
$ argocd cluster add <デプロイ先のClusterのARN> --name <ダッシュボード上でのClusterの表示名> -n kube-system
INFO[0011] ServiceAccount "argocd-manager" already exists in namespace "kube-system"
INFO[0011] ClusterRole "argocd-manager-role" updated
INFO[0011] ClusterRoleBinding "argocd-manager-role-binding" updated
Cluster 'https://*****.gr7.ap-northeast-1.eks.amazonaws.com' added
apiVersion: v1
kind: ServiceAccount
metadata:
name: argocd-manager
namespace: kube-system
secrets:
- name: argocd-manager-token-*****
argocd-application-controller¶
ArgoCDのServiceAccountを作成する。
apiVersion: v1
kind: ServiceAccount
metadata:
namespace: argocd
name: argocd-application-controller
labels:
app.kubernetes.io/part-of: argocd
automountServiceAccountToken: "true"
secrets:
- name: argocd-application-controller-token-*****