第3章 コントロールプレーン以外の namespace でのアプリケーションリソースの管理
クラスター管理者は、openshift-gitops コントロールプレーン namespace 以外の非コントロールプレーン namespace で Application リソースを宣言的に作成および管理できます。この機能は、Argo CD オープンソースプロジェクトでは Applications in any namespace 機能と呼ばれます。
開発者として、openshift-gitops コントロールプレーン namespace 以外の非コントロールプレーン namespace で Argo CD アプリケーションを作成する場合は、クラスター管理者がそれらに必要な権限を付与していることを確認してください。
それ以外の場合、Argo CD の調整後に、次の例のようなエラーメッセージが表示されます。
エラーメッセージの例
error while validating and normalizing app: error getting application's project: application 'app' in namespace 'dev' is not allowed to use project 'default'
error while validating and normalizing app: error getting application's project: application 'app' in namespace 'dev' is not allowed to use project 'default'
この機能を使用するには、次のオブジェクトでターゲット namespace を明示的に有効化および設定する必要があります。
-
ユーザー定義のクラスタースコープ Argo CD インスタンスの
ArgoCDカスタムリソース (CR) -
AppProjectカスタムリソース (CR) -
ApplicationCR
コントロールプレーン以外の namespace で Application リソースを作成および管理するプロセスは、次の手順で構成されます。
-
ターゲット namespace を使用して、ユーザー定義のクラスタースコープ Argo CD インスタンスの
ArgoCDCR を設定する。 -
openshift-gitopsコントロールプレーン namespace にユーザー定義のAppProjectインスタンスを作成して設定し、ユーザー定義のAppProjectインスタンスの.spec.sourceNamespacesフィールドにターゲット namespace を指定する。 -
ApplicationCR のmetadata.namespaceフィールドと.spec.projectフィールドを設定して、ターゲット namespace とユーザー定義のAppProjectインスタンスを参照する。
この機能は、分離されたチーム向けに Argo CD アプリケーションのデプロイメントを管理するマルチテナント環境で役立ちます。
アプリケーションチームの権限昇格を防ぐには、次の要件を満たす必要があります。
-
特権のある
AppProjectインスタンスの.spec.sourceNamespacesフィールドに、コントロールプレーン以外の namespace を設定しないでください。たとえば、openshift-gitopsコントロールプレーン namespace または定義した namespace のいずれかにインストールされたAppProjectCR のdefaultインスタンスなどです。 -
AppProjectCRD 内のopenshift-gitopsコントロールプレーン namespace へのアクセスを許可しないでください。 -
常に、
openshift-gitopsコントロールプレーン namespace でユーザー定義のAppProjectインスタンスを作成して設定し、対応するユーザー定義のAppProjectインスタンス内の.spec.sourceNamespacesフィールドで非コントロールプレーンの namespace を設定します。
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform クラスターに Red Hat OpenShift GitOps 1.13.0 以降のバージョンがインストールされている。
-
定義済みの namespace (例:
spring-petclinicnamespace) に、ユーザー定義のクラスタースコープ Argo CD インスタンス がある。