Argo CD アプリケーションセット
コントロールプレーン以外の namespace でのアプリケーションセットリソースの管理
概要
第1章 コントロールプレーン以外の namespace でのアプリケーションセットリソースの管理
コントロールプレーン以外の namespace の Argo CD アプリケーションセットは、テクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
アプリケーションセットを使用すると、単一のモノリポジトリーから複数のクラスターへの複数の Argo CD アプリケーションのデプロイメントを、より柔軟に、宣言的に自動化および管理できます。
Red Hat OpenShift GitOps 1.12 以降では、クラスター管理者は、要件に応じて ArgoCD
および ApplicationSet
カスタムリソース (CR) を明示的に有効化および設定することで、openshift-gitops
コントロールプレーン namespace 以外の非コントロールプレーン namespace で ApplicationSet
リソースを宣言的に作成および管理できます。この機能は、分離されたチーム向けに Argo CD アプリケーションのデプロイメントを管理するマルチテナント環境で特に役立ちます。この機能は、Argo CD オープンソースプロジェクトの 任意の namespace 機能の ApplicationSet と呼ばれます。
生成された Argo CD アプリケーションは、コントロールプレーン以外の任意の namespace にリソースを作成できます。ただし、アプリケーション自体は、アプリケーションセットリソースと同じ namespace に存在します。
1.1. 前提条件
-
定義した namespace に、ユーザー定義の クラスタースコープ Argo CD インスタンス があります。たとえば、
spring-petclinic
namespace。 -
非コントロールプレーン namespace のアプリケーションリソースを管理するために、
ArgoCD
CR でターゲット namespace を 明示的に有効化および設定 している。
1.2. コントロールプレーン以外の namespace でアプリケーションセットリソースの有効化
クラスター管理者は、ユーザーが ApplicationSet
リソースを作成、更新、調整できる、コントロールプレーン以外の namespace の特定のセットを定義できます。要件に応じて、ArgoCD
および ApplicationSet
カスタムリソース (CR) を明示的に有効化して設定する必要があります。
手順
コントロールプレーン以外の namespace を含めるには、
applicationSet
仕様のsourceNamespaces
パラメーターを設定します。Argo CD カスタムリソースの例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example namespace: spring-petclinic spec: applicationSet: sourceNamespaces: 1 - dev 2
注記現時点では、
.spec.applicationSet.sourceNamespaces
フィールドではワイルドカード (*
) の使用はサポートされていません。次のロールベースのアクセス制御 (RBAC) リソースが GitOps Operator により作成または変更されていることを確認します。
名前 種類 目的 <argocd_name>-<argocd_namespace>-argocd-applicationset-controller
ClusterRole
およびClusterRoleBinding
Argo CD ApplicationSet Controller がクラスターレベルで
ApplicationSet
リソースを監視してリスト表示する<argocd_name>-<argocd_namespace>-applicationset
Role
およびRoleBinding
Argo CD ApplicationSet Controller がターゲット namespace の
ApplicationSet
リソースを管理する<argocd_name>-<target_namespace>
Role
およびRoleBinding
Argo CD サーバーが UI、API、または CLI を介してターゲット namespace の
ApplicationSet
リソースを管理する注記Operator は、
argocd.argoproj.io/applicationset-managed-by-cluster-argocd
ラベルをターゲット namespace に追加します。
1.3. ソースコードマネージャープロバイダーの許可
このセクションを注意深くお読みください。誤った設定は潜在的なセキュリティー問題を引き起こす可能性があります。
コントロールプレーン以外の namespace で ApplicationSet
リソースを許可すると、Source Code Manager (SCM) Provider または Pull Request (PR) ジェネレーターの悪意のある API エンドポイントを通じてシークレットが流出する可能性があります。機密情報への不正アクセスを防ぐため、Operator は予防措置として SCM プロバイダーと PR ジェネレーターをデフォルトで無効にします。
手順
SCM Provider と PR ジェネレーターを使用するには、許可される SCM Provider のリストを明示的に定義します。
Argo CD カスタムリソースの例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example-argocd spec: applicationSet: sourceNamespaces: - dev scmProviders: 1 - https://git.mydomain.com/ - https://gitlab.mydomain.com/
- 1
- 許可された SCM Provider の URL のリスト。
許可された SCM Provider のリストにない URL を使用すると、Argo CD ApplicationSet コントローラーはそれを拒否します。