1.4. デフォルトの Argo CD インスタンスを設定する
Operator は openshift-gitops
namespace にデフォルトの Argo CD インスタンスを作成しますが、アプリケーションのデプロイやクラスター設定で便利に使用するためには設定が必要です。
- ロールベースのアクセス制御 (RBAC) を設定する: Argo CD は独自の RBAC 設定を使用します。ユーザーが割り当てられている OpenShift Container Platform クラスターグループによっては、Operator が設定するデフォルトの権限では不十分な可能性があります。
- 権限を設定する: Operator は、デフォルトインスタンスにデフォルトの Kubernetes 権限セットを設定します。しかし、ただし、リアルタイム環境でアプリケーションをデプロイする場合、これらの権限では不十分です。したがって、このデフォルトインスタンスに追加の権限を付与する必要があります。
1.4.1. RBAC の設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーに、デフォルトインスタンスを操作するために十分なアクセス権を付与するには、RBAC を設定する必要があります。
インスタンスの defaultPolicy
は空の文字列です。つまり、ロールは自動的に割り当てられません。ユーザーはインスタンスにログインできますが、Argo CD UI または CLI で何かを表示したりタスクを実行したりする権限はありません。
インスタンスには次の 2 つのグループが含まれます。
-
system:cluster-admins
: このグループは一時的なkube-admin
認証情報にのみ適用されるため、無視できます。 -
cluster-admins
: ユーザーをこのグループに追加すると、Argo CD Web コンソールでアプリケーションのデプロイなどのタスクを実行できるようになります。
デフォルト権限の制限:
defaultPolicy
パラメーターに付与された権限は取り消すことができないため、必ず空の文字列または deny-all タイプのロールを使用してください。つまり、権限の付与方法として defaultPolicy
パラメーターを設定することは推奨されません。
前提条件
-
cluster-admin
権限で OpenShift Container Platform クラスターにアクセスするためのログイン認証情報がある。 -
oc
CLI をインストールした。
手順
Operator がデフォルトインスタンスに設定した RBAC を表示します。
oc get argocd openshift-gitops -n openshift-gitops -o=jsonpath='{.spec.rbac}'
$ oc get argocd openshift-gitops -n openshift-gitops -o=jsonpath='{.spec.rbac}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力
{"defaultPolicy":"","policy":"g, system:cluster-admins, role:admin\ng, cluster-admins, role:admin\n","scopes":"[groups]"}
{"defaultPolicy":"","policy":"g, system:cluster-admins, role:admin\ng, cluster-admins, role:admin\n","scopes":"[groups]"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-admins
グループが存在するか確認します。oc get groups
$ oc get groups
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のいずれかの手順を実行します。
グループが存在しない場合は、グループを作成してユーザーを追加します。
oc adm groups new cluster-admins <user>
$ oc adm groups new cluster-admins <user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <user>
そのグループに追加するユーザーを示します。
出力例
group.user.openshift.io/cluster-admins created
group.user.openshift.io/cluster-admins created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
グループが存在する場合は、前に実行した
oc get groups
コマンドの出力で、ユーザーがそのグループに属しているか確認します。ユーザーがグループに属していない場合は、ユーザーをグループに追加します。oc adm groups add-users cluster-admins <user>
$ oc adm groups add-users cluster-admins <user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <user>
そのグループに追加するユーザーを示します。
出力例
group.user.openshift.io/cluster-admins added: "<user>"
group.user.openshift.io/cluster-admins added: "<user>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
cluster-admins
グループが存在し、ユーザーがそのグループに属していることを確認します。oc get groups cluster-admins
$ oc get groups cluster-admins
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力では、
cluster-admins
グループが表示され、そこにユーザーが割り当てられています。
cluster-admins
グループを作成または編集した後は、グループをユーザーに関連付けるために、Argo CD Web コンソールからログアウトしてから再度ログインします。User Info ページで、ユーザーが Argo CD 内の cluster-admins
グループに属していることを確認してください。
1.4.2. 権限の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの Argo CD インスタンスにはデフォルトの Kubernetes 権限セットが自動的に設定されますが、クラスター設定に必要なすべてのリソースをデプロイするには、追加の権限を付与する必要があります。逆に、デフォルトインスタンスに対してより制限的な権限を設定して特定のリソースのみをデプロイする必要がある場合は、追加の設定を通じてそれを実現できます。
デフォルトの Kubernetes 権限セットの詳細は、「関連情報」を参照してください。
クラスター設定にデフォルトインスタンスを使用する場合は、Argo CD アプリケーションコントローラーサービスアカウントに cluster-admin
権限を付与します。その場合は、openshift-gitops-argocd-application-controller
サービスアカウントの ClusterRoleBinding
オブジェクトを作成します。なぜなら、デフォルトインスタンスは、Kubernetes API と対話してリソースをデプロイするためにこのアカウントを使用するからです。
前提条件
-
cluster-admin
権限で OpenShift Container Platform クラスターにアクセスするためのログイン認証情報がある。 -
oc
CLI をインストールした。
手順
以下のコマンドを実行します。
oc adm policy add-cluster-role-to-user --rolebinding-name="openshift-gitops-cluster-admin" cluster-admin -z openshift-gitops-argocd-application-controller -n openshift-gitops
$ oc adm policy add-cluster-role-to-user --rolebinding-name="openshift-gitops-cluster-admin" cluster-admin -z openshift-gitops-argocd-application-controller -n openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
clusterrole.rbac.authorization.k8s.io/cluster-admin added: "openshift-gitops-argocd-application-controller"
clusterrole.rbac.authorization.k8s.io/cluster-admin added: "openshift-gitops-argocd-application-controller"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
作成された
ClusterRoleBinding
オブジェクトを表示します。oc get clusterrolebinding openshift-gitops-cluster-admin -o yaml
$ oc get clusterrolebinding openshift-gitops-cluster-admin -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow