1.9. Argo CD プッシュモデル用のカスタマイズされたサービスアカウントの作成
ハブクラスター上に ManagedServiceAccount リソースを作成することにより、マネージドクラスター上にサービスアカウントを作成します。ClusterPermission リソースを使用して、特定のパーミッションをサービスアカウントに付与します。
Argo CD プッシュモデルで使用するカスタマイズされたサービスアカウントを作成すると、次の利点があります。
- アプリケーションマネージャーアドオンは、各マネージドクラスター上で実行されます。デフォルトでは、Argo CD コントローラーはサービスアカウントアプリケーションマネージャーを使用して、これらのリソースをマネージドクラスターにプッシュします。
- アプリケーションサブスクリプションアドオンはアプリケーションマネージャーサービスを使用してマネージドクラスターにアプリケーションをデプロイするため、アプリケーションマネージャーサービスアカウントには大規模なアクセスパーミッションのセットがあります。制限された権限セットが必要な場合は、アプリケーションマネージャーサービスアカウントを使用しないでください。
- Argo CD プッシュモデルで使用する別のサービスアカウントを指定できます。Argo CD コントローラーが集中ハブクラスターからマネージドクラスターにリソースをプッシュする場合、デフォルトのアプリケーションマネージャーとは異なるサービスアカウントを使用できます。別のサービスアカウントを使用すると、このサービスアカウントに付与されるアクセス許可を制御できます。
-
サービスアカウントはマネージドクラスター上に存在している必要があります。関連するアクセスパーミッションが割り当てられたサービスアカウントの作成を容易にするには、一元化されたハブクラスターで
ManagedServiceAccountリソースと新しいClusterPermissionリソースを使用します。
次の手順をすべて完了すると、マネージドサービスアカウントにクラスターのアクセスパーミッションを付与できます。クラスター権限があると、マネージドサービスアカウントには、マネージドクラスターにアプリケーションリソースをデプロイするために必要な権限が与えられます。以下の手順を実行します。
1.9.1. マネージドサービスアカウントの作成 リンクのコピーリンクがクリップボードにコピーされました!
ハブ上の ManagedServiceAccount カスタムリソースは、マネージドクラスター上に ServiceAccount を作成する場合に便利です。ハブクラスターの <managed-cluster> namespace に ManagedServiceAccount カスタムリソースが作成されると、マネージドクラスターに ServiceAccount が作成されます。
マネージドサービスアカウントを作成するには、ManagedServiceAccount アドオンの有効化 を参照してください。
1.9.2. GitOpsCluster リソースでの管理サービスアカウントの使用 リンクのコピーリンクがクリップボードにコピーされました!
GitOpsCluster リソースは、配置を使用して、選択したマネージドクラスターを Argo CD にインポートします。これには、クラスターへのアクセスに使用される情報を含む Argo CD クラスターシークレットの作成が含まれます。デフォルトでは、Argo CD クラスターシークレットは、アプリケーションマネージャーサービスアカウントを使用してマネージドクラスターにアクセスします。
-
マネージドサービスアカウントを使用するように
GitOpsClusterリソースを更新するには、マネージドサービスアカウントの名前を指定してManagedServiceAccountRefプロパティーを追加します。 次のサンプルを
gitops.yamlファイルとして保存し、GitOpsClusterカスタムリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ファイルを適用するには
oc apply -f gitops.yamlを実行します。 openshift-gitopsnamespace に移動し、<managed cluster-managed-sa-sample-cluster-secret>という名前の新しい Argo CD クラスターシークレットがあることを確認します。以下のコマンドを実行します。oc get secrets -n openshift-gitops <managed cluster-managed-sa-sample-cluster-secret>
oc get secrets -n openshift-gitops <managed cluster-managed-sa-sample-cluster-secret>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力を参照して確認します。
NAME TYPE DATA AGE <managed cluster-managed-sa-sample-cluster-secret> Opaque 3 4m2s
NAME TYPE DATA AGE <managed cluster-managed-sa-sample-cluster-secret> Opaque 3 4m2sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9.3. Argo CD アプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
プッシュモデルを使用して、Argo CD コンソールから Argo CD アプリケーションをデプロイします。Argo CD アプリケーションは、マネージドサービスアカウント <managed-sa-sample> でデプロイされます。
- Argo CD コンソールにログインします。
- Create a new application をクリックします。
- クラスター URL を選択します。
-
Argo CD アプリケーションに移動し、
<managed cluster>に伝播したロールやクラスターロールなど、指定のパーミッションがあることを確認します。
1.9.4. ポリシーを使用したマネージドサービスアカウントおよびクラスターパーミッションの作成 リンクのコピーリンクがクリップボードにコピーされました!
GitOpsCluster リソースが ManagedServiceAccountRef で更新されると、この GitOpsCluster の配置内の各マネージドクラスターにサービスアカウントが必要になります。複数のマネージドクラスターがある場合、マネージドクラスターごとにマネージドサービスアカウントとクラスター権限を作成するのは面倒になります。このプロセスは、ポリシーを使用してマネージドサービスアカウントとすべてのマネージドクラスターのクラスター権限を作成することで簡素化できます。
ManagedServiceAccount リソースと ClusterPermission リソースをハブクラスターに適用すると、このポリシーの配置はローカルクラスターにバインドされます。これらのリソースを、GitOpsCluster リソースの配置内のすべてのマネージドクラスターのマネージドクラスター namespace に複製します。
ポリシーを使用して ManagedServiceAccount および ClusterPermission リソースを作成すると、次の属性が含まれます。
-
ポリシー内の
ManagedServiceAccountとClusterPermissionオブジェクトテンプレートを更新すると、すべてのマネージドクラスターのManagedServiceAccountおよびClusterPermissionリソースがすべて更新されます。 -
ManagedServiceAccountおよびClusterPermissionリソースを直接更新すると、ポリシーが適用されるため、元の状態に戻されます。 GitOpsCluster の配置に関する決定が変更された場合、ポリシーはマネージドクラスターの namespace 内のリソースの作成と削除を管理します。
- マネージドサービスアカウントとクラスター権限を作成するための YAML のポリシーを作成するには、次の内容を含む YAML を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
YAML ファイルを
policy.yamlというファイルとして保存します。 -
oc apply -f policy.yamlを実行します。 -
ポリシーのオブジェクトテンプレートでは、GitOpsCluster に関連付けられた配置の決定を繰り返し処理し、次の
ManagedServiceAccountおよびClusterPermissionテンプレートを適用します。