第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'
この機能を使用するには、次のオブジェクトでターゲット namespace を明示的に有効化および設定する必要があります。
-
ユーザー定義のクラスタースコープ Argo CD インスタンスの
ArgoCD
カスタムリソース (CR) -
AppProject
カスタムリソース (CR) -
Application
CR
コントロールプレーン以外の namespace で Application
リソースを作成および管理するプロセスは、次の手順で構成されます。
-
ターゲット namespace を使用して、ユーザー定義のクラスタースコープ Argo CD インスタンスの
ArgoCD
CR を設定します。 -
openshift-gitops
コントロールプレーン namespace にユーザー定義のAppProject
インスタンスを作成して設定し、ユーザー定義のAppProject
インスタンスの.spec.sourceNamespaces
フィールドにターゲット namespace を指定します。 -
Application
CR のmetadata.namespace
フィールドと.spec.project
フィールドを設定して、ターゲット namespace とユーザー定義のAppProject
インスタンスを参照します。
この機能は、分離されたチーム向けに Argo CD アプリケーションのデプロイメントを管理するマルチテナント環境で役立ちます。
アプリケーションチームの権限昇格を防ぐには、次の要件を満たす必要があります。
-
特権のある
AppProject
インスタンスの.spec.sourceNamespaces
フィールドに、コントロールプレーン以外の namespace を設定しないでください。たとえば、openshift-gitops
コントロールプレーン namespace または定義した namespace のいずれかにインストールされたAppProject
CR のdefault
インスタンスなどです。 -
AppProject
CRD 内の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-petclinic
namespace) に、ユーザー定義のクラスタースコープ Argo CD インスタンス がある。