GitOps
GitOps for Applications を使用して、アプリケーションをデプロイおよび管理します。
概要
第1章 GitOps の概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Container Platform の GitOps および Argo CD は、Red Hat Advanced Cluster Management for Kubernetes と統合されています。以前のアプリケーションライフサイクルの チャネル および サブスクリプション モデルと比較して、高度な機能を備えています。
Argo CD 開発と GitOps の統合が活発であり、Argo CD の機能拡張や更新に貢献する大規模なコミュニティーも活発です。OpenShift Container Platform GitOps Operator を利用すると、Argo CD 開発の最新の進歩を利用でき、GitOps Operator サブスクリプションからサポートを受けることができます。
Red Hat Advanced Cluster Management for Kubernetes と OpenShift Container Platform GitOps および Argo CD の統合の詳細は、以下のトピックを参照してください。
- GitOps コンソール
- プルモデル用の任意の名前空間に Argo CD ApplicationSet リソースをデプロイします (テクノロジープレビュー)。
- 任意の名前空間で ApplicationSet リソースを有効にする
- マネージドクラスターを Red Hat OpenShift GitOps Operator に登録する
- GitOps のアプリケーション配置許容範囲の設定
- プッシュアンドプルモデルを使用した Argo CD の導入
- GitOps Operator をインストールするためのポリシーの生成
- OpenShift Container Platform GitOps を使用したポリシー定義の管理 (Argo CD)
- Red Hat OpenShift GitOps アドオンの管理
- ArgoCD エージェントで Red Hat OpenShift GitOps アドオンを有効にする
- ArgoCD エージェントなしで Red Hat OpenShift GitOps アドオンを有効にする
- OpenShift GitOps アドオンの適用をスキップする
- OpenShift GitOps アドオンのアンインストール
- {gitops-short) アドオン機能の検証
- ArgoCD エージェント機能の検証
- ApplicationSet リソースを使用した段階的なロールアウトストラテジーの実装 (テクノロジープレビュー)
1.1. GitOps コンソール リンクのコピーリンクがクリップボードにコピーされました!
統合された OpenShift Container Platform GitOps コンソールの機能を詳しく説明します。ApplicationSet や Argo CD タイプなどのアプリケーションを作成および表示します。ApplicationSet は、このコントローラーから生成される Argo アプリケーションを表します。
- Launch resource in Search をクリックし、関連リソースを検索します。
-
Search を使用して、各リソースのコンポーネント
kind別にアプリケーションリソースを検索します。
重要: 利用可能なアクションは割り当てられたロールに基づきます。ロールベースのアクセス制御 のドキュメントで、アクセス要件を確認してください。
1.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
以下の前提条件および要件を参照してください。
-
Argo CD
ApplicationSetを作成するには、Sync policyからAutomatically sync when cluster state changesを有効にする必要があります。 -
kustomizationコントローラーを使用する Flux の場合は、kustomize.toolkit.fluxcd.io/name=<app_name>ラベルが付いた Kubernetes リソースを見つけます。 -
helmコントローラーを使用する Flux の場合は、helm.toolkit.fluxcd.io/name=<app_name>ラベルが付いた Kubernetes リソースを見つけます。 -
ApplicationSetを作成するには、GitOps クラスターリソースと GitOps Operator がインストールされている必要があります。これらの前提条件がないと、コンソールに Argo サーバー オプションが表示されず、ApplicationSetは作成されません。
1.1.2. Argo CD アプリケーションのクエリー リンクのコピーリンクがクリップボードにコピーされました!
Argo CD アプリケーションを検索すると、Applications ページに移動します。Search ページから Argo CD アプリケーションにアクセスするには、以下の手順を実行します。
- Red Hat Advanced Cluster Management ハブクラスターにログインします。
- コンソールヘッダーから Search アイコンを選択します。
-
kind:applicationおよびapigroup:argoproj.ioの値でクエリーをフィルターします。 - 表示するアプリケーションを選択します。アプリケーション ページでは、アプリケーションに関する情報の概要が表示されます。
検索の詳細は、検索サービス を参照してください。
1.2. プルモデル用の任意の名前空間に Argo CD ApplicationSet リソースをデプロイする (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
Argo CD プルモデルを使用すると、ハブクラスターの任意の名前空間に ApplicationSet リソースを作成できます。
Argo CD ApplicationSet リソースを完全に管理するには、次のセクションを完了します。
必要なアクセス権: クラスター管理者
前提条件
- 管理対象クラスターを登録する手順を完了します。手順については、マネージドクラスターを Red Hat OpenShift GitOps オペレーターに登録するを 参照してください。
-
任意のカスタム名前空間で
ApplicationSetおよびApplicationリソースを有効にするための手順を完了します。手順については、任意の名前空間で ApplicationSet リソースを有効にする を参照してください。
1.2.1. 標準設定の ApplicationSet リソースの展開 リンクのコピーリンクがクリップボードにコピーされました!
ロールベースのアクセス制御 (RBAC) のサポートが制限されている場合は、標準設定の ApplicationSet リソースを展開することを推奨します。
シンプルな RBAC 管理のために、標準設定の ApplicationSet リソースを展開すると、次の利点が得られます。
- GitHub リポジトリーリソースでは名前空間が指定されていません。
-
ワークロード名前空間の宛先は、
アプリケーションテンプレートで指定されます。 -
ApplicationSetリソースは、デフォルトのAppProjectリソースを使用します。
標準設定の ApplicationSet リソースを展開するには、次の手順を実行します。
-
openshift-gitops名前空間で、Placementリソースを作成します。 次の YAML ファイルサンプルを追加して、デフォルトの
AppProjectリソースを使用して、appset-2名前空間にApplicationSetリソースを作成します。apiVersion: v1 kind: Namespace metadata: annotations: name: appset-2
apiVersion: v1 kind: Namespace metadata: annotations: name: appset-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML ファイルサンプルを適用します。
oc apply -f namespace-example.yaml
oc apply -f namespace-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の YAML ファイルサンプルを追加して、デフォルトの
AppProjectリソースを使用して、appset-2名前空間にApplicationSetリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML ファイルサンプルを適用します。
oc apply -f applicationset-example.yaml
oc apply -f applicationset-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
ApplicationSetリソースは、ハブクラスターのappset-2名前空間に作成されます。 -
アプリケーションリソースは、管理対象クラスターのappset-2名前空間にデプロイされます。 -
アプリケーションリソースは、マネージドクラスター上のHelloworld名前空間にワークロードをデプロイします。 -
デフォルトの Argo CD
AppProjectリソース設定が適用されます -
GitHub リポジトリーの指定されたパスで定義されているすべての
アプリケーションリソースは、名前空間固有ではありません。
-
1.2.2. 高度な設定のための ApplicationSet リソースの展開 リンクのコピーリンクがクリップボードにコピーされました!
ロールベースのアクセス制御 (RBAC) をサポートしている場合は、高度な設定のために ApplicationSet リソースを展開するオプションがあります。
より高度な RBAC 管理を備えた高度な設定のために ApplicationSet リソースを展開すると、次のような利点が得られます。
-
GitHub リポジトリーリソースで指定された
アプリケーションリソースのワークロード名前空間。 -
ApplicationSetリソースで指定されているワークロード名前空間の宛先は、GitHub リポジトリーと一致します。 -
ApplicationSetリソースは、RBAC 制御にカスタム Argo CDAppProjectリソースを使用します。
高度な設定の ApplicationSet リソースを展開するには、次の手順を実行します。
-
openshift-gitops名前空間で、Placementリソースを作成します。 次の YAML ファイルサンプルを追加して、カスタム
bgdkAppProjectリソースを使用してbgdk名前空間にApplicationSetリソースを作成します。apiVersion: v1 kind: Namespace metadata: annotations: name: bgdk
apiVersion: v1 kind: Namespace metadata: annotations: name: bgdkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML ファイルサンプルを適用します。
oc apply -f namespace-example.yaml
oc apply -f namespace-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の YAML ファイルサンプルを追加して、OpenShift GitOps 名前空間に
bgdkAppProjectリソース設定を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
sourceNamespacesは、アプリケーション自体が作成される名前空間です。 -
sourceRepos は、アプリケーションテンプレートが使用するリポジトリーです。 -
destinations は、アプリケーションがワークロードをデプロイする名前空間です。 -
clusterResourceWhitelistは、アプリケーションがデプロイできるクラスタースコープのリソースリストです。このシナリオでは、アプリケーションが新しい名前空間を作成する必要があるため、この名前空間の種類は必須です。
-
次のコマンドを実行して、YAML ファイルサンプルを適用します。
oc apply -f appproject-example.yaml
oc apply -f appproject-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の YAML ファイルサンプルを追加して、カスタマイズされた Argo CD
AppProjectリソース設定をApplicationSetリソースに適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML ファイルサンプルを適用します。
oc apply -f applicationset-example.yaml
oc apply -f applicationset-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
ArgoCD ApplicationSet の詳細は、次のリソースを参照してください。
1.3. 任意の名前空間で ApplicationSet リソースを有効にする リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスター上の任意の名前空間で ApplicationSet リソースを有効にできます。
Argo CD ApplicationSet リソースを有効にするには、次のセクションを完了します。
必要なアクセス権: クラスター管理者
1.3.1. ハブクラスター上の任意の名前空間で ApplicationSet リソースを有効にする リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターの任意の名前空間で Argo CD ApplicationSet リソースを有効にするには、次の手順を実行します。
コマンドラインインターフェイスから次のコマンドを実行して GitHub リポジトリーのクローンを作成します。
git clone https://github.com/stolostron/multicloud-integrations
git clone https://github.com/stolostron/multicloud-integrationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クローンした GitHub リポジトリーに移動します。
cd multicloud-integrations/deploy/appset-any-namespace
cd multicloud-integrations/deploy/appset-any-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、任意の名前空間で
ApplicationSetリソースを有効にします。./setup-appset-any-namespace.sh --namespace openshift-gitops --argocd-name openshift-gitops
./setup-appset-any-namespace.sh --namespace openshift-gitops --argocd-name openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift GitOps インスタンスが再起動し、ハブクラスターで実行されていることを確認します。ハブクラスターで次のコマンドを実行します。
oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2. マネージドクラスター上の任意の名前空間で アプリケーション リソースを有効にする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management OpenShift GitOps アドオンは、管理対象クラスター上の任意の名前空間で アプリケーション リソースを有効にするために使用できる OpenShift GitOps インスタンスを起動します。管理対象クラスターの任意の名前空間で Argo CD アプリケーション リソースを有効にするには、次の手順を実行します。
次の YAML ファイルサンプルを追加して、グローバル
ManagedClusterSetBindingリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML ファイルサンプルを適用します。
oc apply -f managedclustersetbinding-example.yaml
oc apply -f managedclustersetbinding-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow (gitops-short) アドオンが有効になる管理対象クラスターを選択するための
配置カスタムリソースを作成します。次の YAML ファイルサンプルを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML ファイルサンプルを適用します。
oc apply -f placement-example.yaml
oc apply -f placement-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow GitOpsClusterリソースを作成し、gitopsAddon仕様を追加します。YAML ファイルは以下のポリシーのようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML ファイルサンプルを適用します。
oc apply -f gitopscluster-example.yaml
oc apply -f gitopscluster-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 管理対象クラスターで次のコマンドを実行して、OpenShift GitOps インスタンスが再起動し、管理対象クラスターで実行されていることを確認します。
oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
引き続き、Argo CD ApplicationSet リソースを展開して完全に管理します。手順については、プルモデル用の任意の名前空間での Argo CD ApplicationSet リソースのデプロイ (テクノロジープレビュー) を 参照してください。
Argo CD ApplicationSet リソースの詳細は、次のリソースを参照してください。
1.4. マネージドクラスターを Red Hat OpenShift GitOps Operator に登録する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps を Push モデルで設定するには、1 つ以上の Red Hat Advanced Cluster Management for Kubernetes マネージドクラスターのセットを OpenShift GitOps Operator のインスタンスに登録します。登録後、アプリケーションをこれらのクラスターにデプロイできます。継続的な OpenShift GitOps 環境を設定して、開発環境、ステージング、および実稼働環境のクラスター全体でアプリケーションの整合性を自動化します。
1.4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Advanced Cluster Management for Kubernetes に Red Hat OpenShift GitOps Operator をインストールする必要がある。
- 1 つ以上のマネージドクラスターをインポートする。
- マネージドクラスターを OpenShift GitOps に登録するには、ManagedClusterSet の作成 ドキュメントに記載されている内容を完了してください。
-
ManagedServiceAccountアドオンを有効にして、Argo CD プッシュおよびプルモデルがマネージドクラスターに接続するために使用するトークンをローテーションします。アドオンを有効にする方法は、klusterlet アドオンの設定 を参照してください。
1.4.2. マネージドクラスターを Red Hat OpenShift GitOps に登録する リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターを OpenShift GitOps に登録するには、次の手順を実行します。
OpenShift GitOps がデプロイされている namespace にバインドして、マネージドクラスターセットを作成します。
-
ManagedClusterSetBindingの作成に関する一般的な情報は、関連情報 セクションの ManagedClusterSetBinding リソースの作成 を参照してください。 - 配置情報は、ManagedCluster オブジェクトによるフィルタリング を参照してください。
-
マネージドクラスターセットバインディングで使用される namespace で、
Placementカスタムリソースを作成し、OpenShift GitOps Operator インスタンスに登録するマネージドクラスターのセットを選択します。multicloud-integration配置例をテンプレートとして使用します。配置情報は、配置での ManagedClusterSets の使用 を参照してください。注記:
- 他の Kubernetes クラスターではなく、OpenShift GitOps Operator インスタンスに登録されるのは、OpenShift Container Platform クラスターのみです。
-
一部の不安定なネットワークシナリオでは、マネージドクラスターが一時的に使用
unavailableまたはunreachable状態になることがあります。詳細は、Red Hat Advanced Cluster Management および OpenShift GitOps の配置許容範囲の設定 を参照してください。
GitOpsClusterカスタムリソースを作成し、配置決定から OpenShift GitOps の指定されたインスタンスにマネージドクラスターのセットを登録します。これにより、OpenShift GitOps インスタンスは、これらの Red Hat Advanced Cluster Management マネージドクラスターのいずれかにアプリケーションをデプロイできます。multicloud-integrationsOpenShift GitOps クラスターの例を使用します。注記: 参照される
Placementリソースは、GitOpsClusterリソースと同じ namespace に配置されている必要があります。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
placementRef.nameの値はall-openshift-clustersで、argoNamespace: openshift-gitopsにインストールされている OpenShift GitOps インスタンスのターゲットクラスターとして指定されます。argoServer.cluster仕様には<your-local-cluster-name>値が必要です。
- 変更を保存します。これで、OpenShift GitOps ワークフローに従ってアプリケーションを管理できるようになりました。
1.4.3. OpenShift Container Platform クラスター以外のクラスターを Red Hat OpenShift GitOps に登録する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management GitOpsCluster リソースを使用して、OpenShift Container Platform クラスター以外のクラスターを OpenShift GitOps クラスターに登録できるようになりました。この機能では、OpenShift GitOps コンソールを使用して、OpenShift Container Platform クラスター以外のクラスターにアプリケーションリソースをデプロイできます。OpenShift Container Platform クラスター以外のクラスターを OpenShift GitOps クラスターに登録するには、次の手順を実行します。
OpenShift Container Platform 以外の
ManagedClusterリソースspecの API サーバー URL に移動し、次のコマンドを実行して検証します。oc get managedclusters eks-1
oc get managedclusters eks-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の情報のような出力になっていることを確認します。
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE eks-1 true https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.com True True 37m
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE eks-1 true https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.com True True 37mCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform 以外の
MangedClusterリソースspecの API サーバー URL が空の場合は、次の手順を実行して手動で更新します。API サーバー URL を完成させるには、次のコマンドを実行して
MangedClusterリソースspecを編集します。oc edit managedclusters eks-1
oc edit managedclusters eks-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML が次のファイルのようになっていることを確認します。
spec: managedClusterClientConfigs: - caBundle: ZW1wdHlDQWJ1bmRsZQo= url: https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.comspec: managedClusterClientConfigs: - caBundle: ZW1wdHlDQWJ1bmRsZQo= url: https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を保存し、次のコマンドを実行して API サーバーが完了したことを確認します。
oc get managedclusters eks-1
oc get managedclusters eks-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次の情報のような出力になっていることを確認します。
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE eks-1 true https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.com True True 37m
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE eks-1 true https://5E336C922AB16684A332C10535B8D407.gr7.us-east-2.eks.amazonaws.com True True 37mCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターシークレットが生成されたことを確認するには、
openshift-gitopsnamespace に移動し、GitOpsClusterリソースのステータスがsuccessfulとして報告されていることを確認します。注記:
以下のインポート方法を使用すると、OpenShift Container Platform を除くあらゆる種類の
ManagedClusterリソースの API サーバー URL が自動的にレンダリングされます。- 既存クラスターのサーバー URL および API トークンを入力する。
-
既存クラスターの
kubeconfigファイルを入力する。
次の場合、いずれかの
ManagedClustersリソースの API サーバー URL が空になる可能性があります。- OpenShift Container Platform 以外のクラスターを、バージョン 2.12 より前の Red Hat Advanced Cluster Management ハブクラスターにインポートする。
-
OpenShift Container Platform クラスター以外のクラスターを、インポートモード
Run import commandsを使用して、Red Hat Advanced Cluster Management ハブクラスターに手動でインポートする。
1.4.4. Red Hat OpenShift GitOps トークン リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps Operator と統合すると、配置および ManagedClusterSetBinding カスタムリソースを通じて OpenShift GitOps namespace にバインドされているすべてのマネージドクラスターに対して、ManagedCluster にアクセスするためのトークンを含むシークレットが OpenShift GitOps インスタンスサーバー namespace に作成されます。
OpenShift GitOps コントローラーは、リソースをマネージドクラスターに同期するためにこのシークレットを必要とします。デフォルトでは、サービスアカウントアプリケーションマネージャーは、マネージドクラスターのクラスター管理者権限を使用して、OpenShift GitOps インスタンスサーバーの namespace に OpenShift GitOps クラスターシークレットを生成します。デフォルトの namespace は openshift-gitops です。
このデフォルトが不要な場合は、OpenShift GitOps インスタンスサーバーの namespace で OpenShift GitOps クラスターシークレットを生成するために、カスタマイズされた権限を持つサービスアカウントをマネージドクラスターで作成します。デフォルトの namespace は引き続き openshift-gitops です。詳細は、Argo CD プッシュモデル用のカスタマイズされたサービスアカウントの作成 を参照してください。
1.4.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
詳細は、次のリソースと例を参照してください。
1.5. GitOps のアプリケーション配置許容範囲の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management は、アプリケーションを Red Hat OpenShift GitOps にデプロイするマネージドクラスターを登録する方法を提供します。
一部の不安定なネットワークシナリオでは、マネージドクラスターが一時的に使用 Unavailable 状態になることがあります。アプリケーションのデプロイを容易にするために Placement リソースが使用されている場合は、使用できないクラスターを引き続き含めるために、Placement リソースに次の許容範囲を追加します。次の例は、許容範囲を含む Placement リソースを示しています。
1.6. プッシュアンドプルモデルを使用した Argo CD の導入 リンクのコピーリンクがクリップボードにコピーされました!
Push モデル 使用して、ハブクラスター上の Argo CD サーバーは、マネージドクラスターにアプリケーションリソースをデプロイします。Pull モデル の場合、アプリケーションリソースは manifestWork を使用して Propagation controller によってマネージドクラスターに伝播されます。
どちらのモデルでも、同じ ApplicationSet CRD を使用してアプリケーションをマネージドクラスターにデプロイします。
必要なアクセス権: クラスター管理者
1.6.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Argo CD Pull モデルの次の前提条件を確認している。
重要:
-
openshift-gitops-ArgoCD-application-controllerサービスアカウントがクラスター管理者として割り当てられてい ない 場合、Red Hat OpenShift GitOps アプリケーションコントローラーはリソースをデプロイしない可能性があります。アプリケーションのステータスによって、次のようなエラーが送信される場合があります。
cannot create resource "services" in API group "" in the namespace "mortgage",deployments.apps is forbidden: User "system:serviceaccount:openshift-gitops:openshift-gitops-Argo CD-application-controller"
cannot create resource "services" in API group "" in the namespace
"mortgage",deployments.apps is forbidden: User
"system:serviceaccount:openshift-gitops:openshift-gitops-Argo CD-application-controller"
-
マネージドクラスターに
OpenShift GitopsOperator をインストールした後、同じマネージドクラスターにClusterRoleBindingクラスター管理者権限を作成する必要があります。 マネージドクラスターに
ClusterRoleBindingクラスター管理者権限を追加するには、次の YAML の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター管理者ではなく、この問題を解決する必要がある場合は、次の手順を実行してください。
- Argo CD アプリケーションがデプロイされる各マネージドクラスター上にすべての namespace を作成します。
managed-byラベルを各 namespace に追加します。Argo CD アプリケーションが複数の namespace にデプロイされている場合、各 namespace は Argo CD によって管理される必要があります。managed-byラベルを使用した次の例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
すべてのアプリケーション宛先 namespace をアプリケーションのリポジトリー内で宣言し、namespace に
managedラベルを含める必要があります。namespace を宣言する方法は、Additional resources を参照してください。
Argo CD Pull モデルを使用するには、次の要件を参照してください。
-
Red Hat OpenShift GitOps Operator はハブクラスターに、ターゲットのマネージドクラスターを
openshift-gitopsnamespace にインストールする必要があります。 - 必要なハブクラスター OpenShift Container Platform GitOps Operator はバージョン 1.9.0 以降である必要があります。
- ハブクラスター上の Red Hat OpenShift GitOps Operator のバージョンは、マネージドクラスター上の Operator のバージョンと同じか、それより新しい必要があります。
- マネージドクラスターの Argo CD アプリケーションテンプレートを伝播するには、ApplicationSet コントローラー が必要です。
すべてのマネージドクラスターは、ハブクラスター上の Argo CD サーバー namespace にクラスターシークレットを持っている必要があります。これは、ArgoCD アプリケーションセットコントローラーがマネージドクラスターの Argo CD アプリケーションテンプレートを伝播するために必要です。
クラスターシークレットを作成するには、
placementリソースへの参照が含まれるgitOpsClusterリソースを作成します。placementリソースは、プルモデルをサポートする必要があるすべてのマネージドクラスターを選択します。OpenShift GitOps クラスターコントローラーが調整すると、Argo CD サーバーの namespace にマネージドクラスターのクラスターシークレットが作成されます。
1.6.2. アーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
Push および Pull モデルの両方で、ハブクラスター上の Argo CD ApplicationSet コントローラー が調整して、ターゲットのマネージドクラスターごとにアプリケーションリソースを作成します。両方のモデルのアーキテクチャーに関する以下の情報を参照してください。
1.6.2.1. アーキテクチャープッシュモデル リンクのコピーリンクがクリップボードにコピーされました!
- Push モデルを使用すると、OpenShift Container Platform GitOps は、一元化されたハブクラスターからマネージドクラスターにリソースを 直接 適用します。
- ハブクラスター上で実行されている Argo CD アプリケーションは、GitHub リポジトリーと通信し、マニフェストをマネージドクラスターに直接デプロイします。
- Push モデルの実装には、マネージドクラスターの認証情報を持つハブクラスター上の Argo CD アプリケーションのみが含まれます。ハブクラスター上の Argo CD アプリケーションは、アプリケーションをマネージドクラスターにデプロイできます。
- 重要: リソースの適用を必要とするマネージドクラスターが多数ある場合は、OpenShift GitOps コントローラーのメモリーと CPU の使用率に負担がかかる可能性があることを考慮してください。リソース管理を最適化するには、Red Hat OpenShift GitOps ドキュメントの リソースクォータまたはリクエストの設定 を参照してください。
-
デフォルトでは、
ApplicationSetのテンプレートセクションにapps.open-cluster-management.io/ocm-managed-clusterおよびapps.open-cluster-management.io/pull-to-ocm-managed-clusterアノテーションを追加しない限り、アプリケーションのデプロイには Push モデルが使用されます。
1.6.2.2. アーキテクチャープルモデル リンクのコピーリンクがクリップボードにコピーされました!
- プルモデルでは、ハブクラスター内のコントローラーのストレスが軽減されるため、プッシュモデルと比較してスケーラビリティーが軽減されますが、より多くのリクエストとステータスレポートが必要になります。
- プルモデルの場合、OpenShift Container Platform GitOps は、一元化されたハブクラスターからマネージドクラスターにリソースを直接適用 しません。Argo CD アプリケーションは、ハブクラスターからマネージドクラスターに伝播されます。
-
Pull モデルの実装では、OpenShift Cluster Manager の登録、配置、
manifestWorkAPI が適用され、ハブクラスターがハブクラスターとマネージドクラスター間の安全な通信チャネルを使用してリソースをデプロイできるようになります。 - 各マネージドクラスターは個別に GitHub リポジトリーと通信してリソースマニフェストをローカルにデプロイするため、各マネージドクラスターに OpenShift GitOps operator をインストールして設定する必要があります。
-
Argo CD サーバーは、各ターゲットのマネージドクラスター上で実行されている必要があります。Argo CD アプリケーションリソースはマネージドクラスター上に複製され、ローカルの Argo CD サーバーによってデプロイされます。マネージドクラスター上の分散 Argo CD アプリケーションは、ハブクラスター上の単一の Argo CD
ApplicationSetリソースを使用して作成されます。 -
マネージドクラスターは、
ocm-managed-clusterアノテーションの値によって決定されます。 -
Pull モデルを正常に実装するには、Argo CD アプリケーションコントローラーは、
ApplicationSetのテンプレートセクションにあるargocd.argoproj.io/skip-reconcileアノテーションを持つプッシュモデルアプリケーションリソースを 無視 する必要があります。 - Pull モデルの場合、マネージドクラスター上の Argo CD アプリケーションコントローラー が調整してアプリケーションをデプロイします。
- ハブクラスター上の Pull モデル Resource sync controller は、各マネージドクラスター上の OpenShift Cluster Manager 検索 V2 コンポーネントに定期的にクエリーを実行し、各 Argo CD アプリケーションのリソースリストとエラーメッセージを取得します。
-
ハブクラスターの Aggregation controller はリソース同期コントローラーからのデータと、
manifestWorkからのステータス情報を使用して、クラスター全体からMulticlusterApplicationSetReportを作成および更新します。 - デプロイメントのステータスはハブクラスターに収集されますが、すべての詳細情報が送信されるわけではありません。概要を提供するために、追加のステータス更新が定期的に収集されます。ステータスのフィードバックはリアルタイムではなく、各マネージドクラスターの OpenShift GitOps operator は Git リポジトリーと通信する必要があるため、複数のリクエストが発生します。
1.6.3. ApplicationSet カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
Argo CD ApplicationSet リソースは、マネージドクラスターのリストを取得するために使用されるジェネレーターフィールド内の placement リソースを含むプッシュまたはプルモデルを使用して、マネージドクラスターにアプリケーションをデプロイするために使用されます。
- プルモデルの場合、次の例に示すように、アプリケーションの宛先をデフォルトのローカル Kubernetes サーバーに設定します。アプリケーションは、マネージドクラスター上のアプリケーションコントローラーによってローカルにデプロイされます。
以下の
ApplicationSetYAML の例に示されるように、デフォルトの Push モデルを上書きするために必要なアノテーションを追加します。これは、テンプレートアノテーションで Pull モデルを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.4. MulticlusterApplicationSetReport リンクのコピーリンクがクリップボードにコピーされました!
-
Pull モデルの場合、
MulticlusterApplicationSetReportはマネージドクラスター全体からアプリケーションステータスを集約します。 - レポートには、リソースのリストと、各マネージドクラスターからのアプリケーションの全体的なステータスが含まれます。
-
Argo CD ApplicationSet リソースごとに個別のレポートリソースが作成されます。レポートは
ApplicationSetと同じ namespace に作成されます。 レポートには次の項目が含まれます。
- Argo CD アプリケーションのリソースのリスト
- 各 Argo CD アプリケーションの全体的な同期およびヘルスステータス
-
全体的なステータスが
out of sync、またはunhealthy各クラスターのエラーメッセージ - 管理対象クラスタのすべての状態を示すサマリーステータス
- Resource sync controller と Aggregation controller は両方とも 10 秒ごとに実行され、レポートを作成します。
次の出力例に示すように、2 つのコントローラーと Propagation コントローラーは、同じ
multicluster-integrationsPod 内の別々のコンテナーで実行されます。NAMESPACE NAME READY STATUS open-cluster-management multicluster-integrations-7c46498d9-fqbq4 3/3 Running
NAMESPACE NAME READY STATUS open-cluster-management multicluster-integrations-7c46498d9-fqbq4 3/3 RunningCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下は、guestbook アプリケーションの MulticlusterApplicationSetReport YAML ファイルの例です。
Note: リソースがデプロイに失敗した場合、リソースはリソース一覧に含まれません。詳細は、エラーメッセージを参照してください。
1.6.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift GitOps ドキュメントの クラスター設定を使用してアプリケーションをデプロイして OpenShift クラスターの設定 を参照してください。
- Red Hat OpenShift GitOps ドキュメントの Argo CD インスタンスの設定 を参照してください。
1.7. Red Hat OpenShift GitOps を使用したポリシー定義の管理 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD リソースを使用する場合、Red Hat Advanced Cluster Management ハブクラスターでポリシーを作成するための OpenShift GitOps アクセスを許可することで、Red Hat OpenShift GitOps を使用してポリシー定義を管理できます。
1.7.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
ハブクラスターにログインしておく。
必要なアクセス権: クラスター管理者
非推奨: PlacementRule
1.7.2. OpenShift GitOps 用の ClusterRole リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
ポリシーと配置の作成、読み取り、更新、削除のアクセス権を持つ OpenShift GitOps の ClusterRole リソースを作成するには以下を実行します。
コンソールから
ClusterRoleを作成します。ClusterRoleは次の例のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterRoleBindingオブジェクトを作成して、OpenShift GitOps サービスアカウントにopenshift-gitops-policy-adminClusterRoleオブジェクトへのアクセスを許可します。ClusterRoleBindingは次の例のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記: - Red Hat Advanced Cluster Management ポリシー定義が OpenShift GitOps でデプロイされると、ハブテンプレートの違いを解決するために、各マネージドクラスター namespace にポリシーのコピーが作成されます。これらのコピーは、複製されたポリシーと呼ばれます。- OpenShift GitOps がこの複製されたポリシーを繰り返し削除したり、Argo CD
Applicationが同期されていないことを示したりするのを防ぐために、Red Hat Advanced Cluster Management ポリシーフレームワークによって、各複製されたポリシーにargocd.argoproj.io/compare-options: IgnoreExtraneousアノテーションが自動的に設定されます。-
Argo CD がオブジェクトを追跡するために使用するラベルとアノテーションがあります。複製されたポリシーが Argo CD にまったく表示されないようにするには、Red Hat Advanced Cluster Management ポリシー定義で
spec.copyPolicyMetadataをfalseに設定して、Argo CD 追跡ラベルとアノテーションを無効にします。
1.7.3. ポリシージェネレーターと OpenShift GitOps の統合 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps を使用すると、GitOps を通じてポリシージェネレーターを使用してポリシーを生成できます。ポリシージェネレーターは OpenShift GitOps コンテナーイメージにプリインストールされていないため、カスタマイズを行う必要があります。
1.7.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift GitOps を Red Hat Advanced Cluster Management ハブクラスターにインストールしておく。
- ハブクラスターにログインしておく。
1.7.3.2. OpenShift GitOps からのポリシージェネレーターへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps からポリシージェネレーターにアクセスするには、Init コンテナーを設定して、Red Hat Advanced Cluster Management Application Subscription コンテナーイメージからポリシージェネレーターバイナリーをコピーする必要があります。Kustomize を実行するときに --enable-alpha-plugins フラグを指定して OpenShift GitOps を設定する必要もあります。
ポリシージェネレーターを使用してポリシーと配置を作成、読み取り、更新、削除するには、OpenShift GitOps からポリシージェネレーターへのアクセス権を付与します。以下の手順を実行します。
次のコマンドを使用して、OpenShift GitOps
argocdオブジェクトを編集します。oc -n openshift-gitops edit argocd openshift-gitops
oc -n openshift-gitops edit argocd openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシージェネレーターを新しいバージョンに更新するには、Init コンテナーで使用される
registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9イメージを新しいタグに追加します。<version>パラメーターは、ArgoCDリソースの最新の Red Hat Advanced Cluster Management バージョンに置き換えます。ArgoCDリソースは、次の YAML ファイルのようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記: または、
ArgoCDマニフェストを含むConfigurationPolicyリソースを作成し、MultiClusterHubで設定されたバージョンと一致するバージョンをテンプレート化することもできます。image: '{{ (index (lookup "apps/v1" "Deployment" "open-cluster-management" "multicluster-operators-hub-subscription").spec.template.spec.containers 0).image }}'image: '{{ (index (lookup "apps/v1" "Deployment" "open-cluster-management" "multicluster-operators-hub-subscription").spec.template.spec.containers 0).image }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーを生成する前に Kustomize ディレクトリー内で Helm チャート処理を有効にする場合は、
spec.repo.envフィールドでPOLICY_GEN_ENABLE_HELM環境変数を"true"に設定します。env: - name: POLICY_GEN_ENABLE_HELM value: "true"
env: - name: POLICY_GEN_ENABLE_HELM value: "true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーと配置を作成、読み取り、更新、削除するには、
ClusterRoleBindingオブジェクトを作成し、OpenShift GitOps サービスアカウントに Red Hat Advanced Cluster Management ハブクラスターへのアクセス権を付与します。ClusterRoleBindingは、次のようなリソースになる場合があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.4. OpenShift GitOps でのポリシーヘルスチェックの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps を ArgoCD リソースとともに使用して、resourceHealthChecks フィールドに追加することで、リソースの状態に基づいてリソースのヘルスステータスを設定するカスタムロジックを定義します。たとえば、ポリシーに準拠している場合にのみポリシーが正常であると報告するカスタムヘルスチェックを定義できます。
重要: インターネットから悪意のあるものをダウンロードしていないことを確認するには、ポリシーを適用する前にすべてのポリシーを確認してください。
リソースの種類のヘルスチェックを定義するには、次の手順を実行します。
argocd-policy-healthchecks.yamlをダウンロードして、CertificatePolicy、ConfigurationPolicy、OperatorPolicy、およびPolicyリソースにヘルスチェックを追加します。以下のコマンドを実行します。wget https://raw.githubusercontent.com/open-cluster-management-io/policy-collection/main/stable/CM-Configuration-Management/argocd-policy-healthchecks.yaml
wget https://raw.githubusercontent.com/open-cluster-management-io/policy-collection/main/stable/CM-Configuration-Management/argocd-policy-healthchecks.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンソールで Governance > Create policy に移動し、内容を YAML エディターに貼り付けて、
argocd-policy-healthchecks.yamlポリシーを適用します。注記: YAML エディターで配置情報を追加すると、ポリシーがアクティブなクラスターを特定できます。
-
ArgoCDリソースの Summary タブを表示して、ヘルスチェックが期待どおりに機能していることを確認します。Argo CD コンソールから健全性の詳細を表示します。
1.7.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift GitOps について のドキュメントを参照してください。
1.8. GitOps Operator をインストールするためのポリシーの生成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management ポリシーの一般的な用途は、Operator を 1 つ以上の Red Hat OpenShift Container Platform マネージドクラスターにインストールすることです。ポリシージェネレーターを使用してポリシーを生成する方法、および生成されたポリシーを使用して OpenShift Container Platform GitOps Operator をインストールする方法は、引き続きお読みください。
1.8.1. OpenShift Container Platform GitOps をインストールするポリシーの生成 リンクのコピーリンクがクリップボードにコピーされました!
Policy Generator を使用して、OpenShift Container Platform GitOps をインストールするポリシーを生成できます。OpenShift Container Platform GitOps Operator は all namespaces インストールモードを提供しており、次の例で確認できます。次の例のように、openshift-gitops-subscription.yaml という Subscription マニフェストファイルを作成します。
Operator の特定のバージョンに固定するには、パラメーターと値 spec.startingCSV: openshift-gitops-operator.v<version> を追加します。<version> を希望のバージョンに置き換えます。
PolicyGenerator 設定ファイルが必要です。policy-generator-config.yaml という名前の設定ファイルを使用してポリシーを生成し、すべての OpenShift Container Platform マネージドクラスターに OpenShift GitOps をインストールします。以下の例を参照してください。
最後に必要なファイルは kustomization.yaml で、次の設定が必要です。
generators: - policy-generator-config.yaml
generators:
- policy-generator-config.yaml
生成されたポリシーは、PlacementRule (非推奨) を含む次のファイルのようになります。
OpenShift Container Platform ドキュメントのマニフェストから生成されたポリシーがサポートされています。ポリシージェネレーターを使用して、OpenShift Container Platform ドキュメントの設定ガイダンスを適用できます。
1.8.2. OperatorGroups でのポリシー依存関係の使用 リンクのコピーリンクがクリップボードにコピーされました!
OperatorGroup マニフェストを使用して Operator をインストールする場合、Subscription が作成される前に、クラスターに OperatorGroup が存在している必要があります。ポリシージェネレーターとともにポリシー依存関係機能を使用して、Subscription ポリシーを実施する前に OperatorGroup ポリシーが準拠していることを確認します。
必要な順序でマニフェストを一覧表示して、ポリシーの依存関係を設定します。たとえば、namespace ポリシーを最初に作成し、次に OperatorGroup を作成し、最後に Subscription を作成することができます。
ポリシージェネレーター設定マニフェストで policyDefaults.orderManifests パラメーターを有効にし、policyDefaults.consolidateManifests を無効にして、マニフェスト間の依存関係を自動的に設定します。
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テンプレートを適用します。
1.10. Red Hat OpenShift GitOps アドオンの管理 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps アドオンは、マネージドクラスターのデプロイメントとライフサイクル管理を自動化します。アーキテクチャーと接続要件に基づいて、ArgoCD エージェントコンポーネントとともに GitOps アドオンをデプロイするかどうかを決定します。それ以外の場合は、ArgoCD エージェントなしで OpenShift GitOps アドオンをデプロイできます。
重要: GitOpsCluster カスタムリソースを使用して OpenShift GitOps アドオンを有効にすると、GitOpsCluster は、すべてのアプリケーションの Push Model を無効にします。
OpenShift GitOps アドオンを有効にすると、次のデプロイメントモードが利用可能になります。
-
Basicモード:GitOpsClusterカスタムリソースを通じて、マネージドクラスターに OpenShift GitOps Operator とArgoCDインスタンスをデプロイします。 -
Agentモード: 強化されたプルベースのアーキテクチャー用のArgoCDエージェントとともに、すべての基本モードコンポーネントが含まれます。
選択したマネージドクラスターに対して OpenShift GitOps アドオンを有効にするには、Placement を参照し、有効化のインターフェイスとして GitOpsCluster カスタムリソースを使用します。
前提条件
ArgoCD エージェントで OpenShift GitOps アドオンを有効にする場合は、Agent モードを使用します。ArgoCD エージェントを伴う Red Hat OpenShift GitOps アドオンの有効化 を参照してください。
ArgoCD エージェントなしで OpenShift GitOps アドオンを有効にする場合は、Basic モードを使用します。ArgoCD エージェントなしで Red Hat OpenShift GitOps アドオンを有効にする を参照してください。
1.10.1. OpenShift GitOps アドオン設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps アドオンは、要件に応じてデプロイメントをカスタマイズするためのさまざまな設定オプションをサポートしています。
OpenShift GitOps アドオンは、gitopsAddon 仕様の次の設定オプションをサポートしています。
-
enabled: GitOps アドオンを有効または無効にします。デフォルトはfalseです。 -
gitOpsOperatorImage: GitOps Operator のカスタムコンテナーイメージ。 -
gitOpsImage:ArgoCDコンポーネントのカスタムコンテナーイメージ。 -
redisImage:Redisのカスタムコンテナーイメージ。 -
gitOpsOperatorNamespace: GitOps Operator がデプロイされる namespace。デフォルトはopenshift-gitops-operatorです。 -
gitOpsNamespace:ArgoCDインスタンスがデプロイされる namespace。デフォルトは `openshift-gitops` です。 -
reconcileScope:All-NamespacesまたはSingle-Namespaceを含むArgoCDリコンシリエーションスコープを制御します。デフォルト:Single-Namespaces。 -
overrideExistingConfigs: 既存のAddOnDeploymentConfig値をGitOpsCluster仕様の新しい値でオーバーライドします。アンインストール操作を実行するときはtrueに設定する必要があります。デフォルトはfalseです。 -
argoCDAgent:ArgoCDエージェント設定サブセクション。
Argo CD Agent は、argoCDAgent 仕様の次の設定オプションをサポートしています。
-
enabled: エージェントを有効または無効にします。デフォルトはfalseです。 -
propagateHubCA: ハブ認定機関 (CA) 証明書をマネージドクラスターに伝播します。デフォルトはtrueです。 -
image: カスタムエージェントコンテナーイメージ。 -
serverAddress:ArgoCDエージェントのプリンシパルサーバーアドレスをオーバーライドします。 -
serverPort:ArgoCDエージェントのプリンシパルサーバーポートをオーバーライドします。 -
mode: エージェントの操作モード。デフォルトはmanagedです。
OpenShift GitOps アドオン設定を行うには、ハブクラスターで次の手順を実行します。
GitOpsClusterを含む YAML サンプルを追加して、OpenShift GitOps コンポーネントのコンテナーイメージをカスタマイズします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML サンプルを適用します。
oc apply -f gitopscluster-example.yaml
oc apply -f gitopscluster-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow GitOpsClusterに以下の YAML を追加し、OpenShift GitOps コンポーネントをデプロイする namespace をカスタマイズします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML サンプルを適用します。
oc apply -f gitopscluster-example.yaml
oc apply -f gitopscluster-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow GitOpsClusterに次の YAML を追加して、ArgoCDエージェントがすべての namespace でアプリケーションをリコンサイルできるかどうかを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ArgoCDインスタンスにすべての namespace のアプリケーションをリコンサイルさせたい場合は、reconcileScopeフィールドにAll-Namespaces値を指定します。 -
ArgoCDインスタンスに独自の namespace のアプリケーションのみをリコンサイルさせたい場合は、reconcileScopeフィールドにSingle-Namespace値を指定します。
-
次のコマンドを実行して、YAML サンプルを適用します。
oc apply -f gitopscluster-example.yaml
oc apply -f gitopscluster-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
不要な特定の OpenShift GitOps アドオン機能をスキップできます。OpenShift GitOps アドオンの適用をスキップする を参照してください。
OpenShift GitOps アドオンが機能することを検証するには、{gitops-short) アドオン機能の検証 を参照してください。
ArgoCD エージェントが機能することを検証するには、ArgoCD エージェント機能の検証 を参照してください。
OpenShift GitOps の詳細は、次のドキュメントを参照してください。
1.11. ArgoCD エージェントを伴う Red Hat OpenShift GitOps アドオンを有効にする リンクのコピーリンクがクリップボードにコピーされました!
プルモデルの Agent モードは、OpenShift GitOps アドオンを、ArgoCD エージェントを伴う Advanced プルモデル向けに有効化し、アプリケーションの健全性について詳細なステータスを取得できるようにします。この Agent モードは、ネットワーク制限やセキュリティー要件が強化されている環境、またはアプリケーション配信にプルモデルを実装する場合に使用します。高度なプルモデルは ArgoCD エージェントによって実行され、完全に自動化された OpenShift GitOps エクスペリエンスを提供します。
ArgoCD エージェントで OpenShift GitOps アドオンを有効にするには、次のセクションを完了します。
前提条件
- Red Hat Advanced Cluster Management ハブクラスターがインストールされている。
- Red Hat Advanced Cluster Management に登録されたマネージドクラスター
- ハブクラスターにインストールされた OpenShift GitOps Operator
-
ターゲットマネージドクラスターを選択するための
Placementリソース -
ターゲット namespace にバインドされた
ManagedClusterSet -
ArgoCDエージェント環境で設定された OpenShift GitOps Operator サブスクリプション -
Agentモード用に設定されたArgoCDカスタムリソース
1.11.1. サブスクリプションとリソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD エージェントを有効にするには、OpenShift GitOps Operator のサブスクリプションと ArgoCD カスタムリソースを設定する必要があります。必要なサブスクリプションとリソースを設定するには、次の手順を実行します。
ハブクラスターでのみ、次のコマンドを実行して、OpenShift GitOps Operator サブスクリプションを変更し、必要な環境変数を含めます。
oc edit subscription gitops-operator -n openshift-gitops-operator
oc edit subscription gitops-operator -n openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の YAML サンプルを追加して、次の環境変数を
spec.config.envファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の YAML サンプルを追加して、既存の
ArgoCDカスタムリソースを互換性のあるAgentモード設定に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML サンプルを適用します。
oc apply -f argocd-example.yaml
oc apply -f argocd-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
注記: ハブクラスターのみで、この設定により従来の
ArgoCDコントローラーが無効になり、相互 TLS 認証を使用したエージェントプリンシパルが有効になります。
-
注記: ハブクラスターのみで、この設定により従来の
1.11.2. ArgoCD エージェントの有効化 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD エージェントアドオンのデプロイメントを管理するための GitOpsCluster リソースを作成します。コントローラーは、Placement によって選択された各マネージドクラスターに対して、以下のリソースを自動的に作成します。
GitOpsCluster コントローラーは、次の操作を実行します。
- PKI 管理を作成して自動化する
-
エージェントモード用に設定された
ArgoCDクラスターシークレットを作成する - 選択された各マネージドクラスターに Argo CD Agent をデプロイする
高度なプルモデル Argo CD Agent アーキテクチャーを有効にするには、次の手順を実行します。
マネージドクラスターで、次の YAML サンプルを追加して、
ArgoCDエージェントが有効になっているGitOpsCluster`リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML サンプルを適用します。
oc apply -f gitopscluster-example.yaml
oc apply -f gitopscluster-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.11.3. ArgoCD のインストールの検証 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD エージェントが正常にデプロイされたら、ハブクラスターにアプリケーションを作成し、それがマネージドクラスターで動作することを確認することで、高度な Pull Model ワークフローが完了したことを確認します。
正常なデプロイメントに必要なインストールとリソースを確認するには、次の手順を実行します。
次のコマンドを実行して、特定の
Agent条件のGitOpsClusterステータスを確認します。oc get gitopscluster gitops-agent-clusters -n openshift-gitops -o jsonpath='{.status.conditions}' | jqoc get gitopscluster gitops-agent-clusters -n openshift-gitops -o jsonpath='{.status.conditions}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスに次の条件タイプが表示されていることを確認します。
-
Ready:GitOpsClusterの準備が完了し、すべてのコンポーネントが機能しています。 -
PlacementResolved:Placement参照が解決され、マネージドクラスターが取得済みです。 -
ClustersRegistered: マネージドクラスターがArgoCDサーバーに正常に登録されています。 -
AddOnDeploymentConfigsReady: すべてのマネージドクラスターに対してAddOnDeploymentConfigsが作成済みです。 -
ManagedClusterAddOnsReady:ManagedClusterAddonsは、マネージドクラスターを作成および更新します。 -
AddOnTemplateReady:ArgoCDエージェントモード用に作成された動的AddOnTemplate。 -
ArgoCDAgentPrereqsReady: エージェントの前提条件がセットアップされています。 -
CertificatesReady: TLS 証明書が署名されています。 -
ManifestWorksApplied: マネージドクラスターに伝播された CA 証明書。
-
次の YAML ファイルを追加して、マネージドクラスター namespace に
ArgoCDアプリケーションリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML サンプルを適用します。
oc apply -f application-example.yaml
oc apply -f application-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターで、次のコマンドを実行して、アプリケーションリソースがデプロイされていることを確認します。
oc get all -n guestbook
oc get all -n guestbookCopy to Clipboard Copied! Toggle word wrap Toggle overflow ハブクラスターで次のコマンドを実行して、アプリケーションステータスが反映されていることを確認します。
oc get application guestbook -n <managed cluster name>
oc get application guestbook -n <managed cluster name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
アプリケーションが正常にデプロイされたら、ステータスが
Syncedと表示されていることを確認します。
関連情報
Red Hat OpenShift GitOps アドオンの管理 を完了して、OpenShift GitOps アドオンのセットアップを続行します。
1.12. ArgoCD エージェントなしで Red Hat OpenShift GitOps アドオンを有効にする リンクのコピーリンクがクリップボードにコピーされました!
プルモデルの Basic モードには ArgoCD エージェントが含まれていないため、プルモデルではハブクラスター管理のセットアップが簡素化され、ハブクラスターの正常性に関する必要なステータスのみが提供されます。このモードでは、Placement で選択したマネージドクラスターに対して OpenShift GitOps アドオンが有効になります。
アドオンの有効化後、Basic モードは、クラスターのワークフローに適した OpenShift GitOps ArgoCD コンポーネントをデプロイします。
前提条件
- Red Hat Advanced Cluster Management ハブクラスターがインストールされている。
- Red Hat Advanced Cluster Management に登録されているマネージドクラスター
- ハブクラスターにインストールされた OpenShift GitOps Operator
-
ターゲットマネージドクラスターを選択するために定義された
Placementリソース -
ターゲット namespace にバインドされた
ManagedClusterSet
ArgoCD エージェントなしで OpenShift GitOps アドオンを有効にするには、次のセクションを完了します。
1.12.1. GitOpsCluster リソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
基本的なプルモデルを有効にするには、GitOpsCluster リソースを作成します。コントローラーは、Placement ポリシーによって選択されたマネージドクラスターごとに、次のリソースを自動的に作成します。
-
マネージドクラスター namespace 内の
AddOnDeploymentConfigリソース -
マネージドクラスター namespace 内の
ManagedClusterAddOnリソース
Red Hat OpenShift GitOps アドオンは、選択された各マネージドクラスターにデプロイされ、次のリソースがインストールされます。
-
openshift-gitops-operatornamespace の OpenShift GitOps Operator -
openshift-gitopsnamespace の ArgoCD インスタンス
GitOpsCluster リソースを作成するには、次の手順を実行します。
ハブクラスターで、次の YAML サンプルを追加して、Red Hat OpenShift GitOps アドオンを有効にする
GitOpsClusterリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML サンプルを適用します。
oc apply -f gitopscluster-example.yaml
oc apply -f gitopscluster-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.12.2. インストールの検証 リンクのコピーリンクがクリップボードにコピーされました!
正常なデプロイメントに必要なインストールとリソースを確認するには、次の手順を実行します。
次のコマンドを実行して、
GitOpsClusterリソースにデプロイメントが成功したことを示すステータスがあることを確認します。oc get gitopscluster gitops-clusters -n openshift-gitops -o yaml
oc get gitopscluster gitops-clusters -n openshift-gitops -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OpenShift GitOps アドオンコントローラーが動作していることを確認します。
oc get pods -n open-cluster-management-agent-addon
oc get pods -n open-cluster-management-agent-addonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OpenShift GitOps Operator が動作していることを確認します。
oc get pods -n openshift-gitops-operator
oc get pods -n openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ArgoCD`インスタンスが動作していることを確認します。oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
Red Hat OpenShift GitOps アドオンの管理 を完了して、OpenShift GitOps アドオンのセットアップを続行します。
1.13. OpenShift GitOps アドオンの適用をスキップする リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps アドオンは、一貫性を維持するために、マネージドクラスターに特定のリソースを適用します。マネージドクラスター上の特定のリソースに gitops-addon.open-cluster-management.io/skip アノテーションを追加することで、特定のリソースに対する適用をスキップできます。強制をスキップすると、アドオンが管理する ArgoCD カスタムリソースやその他の OpenShift GitOps コンポーネントをカスタマイズする必要がある場合に役立ちます。
マネージドクラスター上のリソースにスキップアノテーションが付いている場合、OpenShift GitOps アドオンはそのリソースを更新または管理しません。アドオンは変更を適用する前にこのアノテーションをチェックし、アドオンのデフォルト設定とは異なるカスタム設定を維持できるようにします。
注記: スキップアノテーションを使用する場合は、カスタム設定が OpenShift GitOps アドオンの要件と互換性があることを確認してください。適用をスキップすると、OpenShift GitOps アドオンはこれらのリソースを管理またはリコンサイルしないため、一貫性と正確性を維持する責任はユーザーにあります。
リソースの適用をスキップするには、マネージドクラスターの ArgoCD カスタムリソースに次のアノテーションを追加します。
metadata:
Annotations:
gitops-addon.open-cluster-management.io/skip: "true"
metadata:
Annotations:
gitops-addon.open-cluster-management.io/skip: "true"
大規模なマネージドクラスター全体でスキップアノテーションを管理するために、Red Hat Advanced Cluster Management Policy を使用して、そのアノテーションをフリート全体に適用します。
1.13.1. ArgoCD カスタムリソースをカスタマイズして強制をスキップする リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD カスタムリソースのカスタマイズは、リソース制限を調整したり、特定の設定を行ったり、追加機能を有効にしたりするための一般的なユースケースです。
ArgoCD カスタムリソースをカスタマイズして適用をスキップするには、次の手順を実行します。
マネージドクラスターで、
ArgoCDカスタムリソースを編集します。oc edit argocd openshift-gitops -n openshift-gitops
oc edit argocd openshift-gitops -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の YAML に示されるように、
gitops-addon.open-cluster-management.io/skipアノテーションを追加し、trueに設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、YAML サンプルを適用します。
oc apply -f argocd-example.yaml
oc apply -f argocd-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次の YAML サンプルを追加して、
GitOpsClusterがAddOnDeploymentConfig仕様で保持する既存の設定値をオーバーライドします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して YAML サンプルを適用します。
oc apply -f gitopscluster-example.yaml
oc apply -f gitopscluster-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
OpenShift GitOps アドオンを完全にアンインストールする場合は、OpenShift GitOps アドオンのアンインストール を参照してください。
1.14. OpenShift GitOps アドオンのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Operator と GitOpsCluster リソースを含む OpenShift GitOps アドオンを完全にアンインストールするには、次の手順を実行します。
次のコマンドを実行して、
GitOpsClusterリソースを削除します。oc delete gitopscluster gitops-clusters -n openshift-gitops
oc delete gitopscluster gitops-clusters -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ManagedClusterAddOnリソースを削除します。oc -n <managed_cluster_namespace> delete managedclusteraddon gitops-addon
oc -n <managed_cluster_namespace> delete managedclusteraddon gitops-addonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ManagedClusterAddOnリソースがマネージドクラスターの namespace から削除されていることを確認します。oc get managedclusteraddon gitops-addon -n <managed-cluster-name>
oc get managedclusteraddon gitops-addon -n <managed-cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.15. {gitops-short) アドオン機能の検証 リンクのコピーリンクがクリップボードにコピーされました!
次のセクションを完了することで、OpenShift GitOps アドオン機能が動作することを確認できます。
1.15.1. GitOpsCluster ステータスの検証 リンクのコピーリンクがクリップボードにコピーされました!
GitOpsCluster のステータスを確認するには、次の手順を実行します。
次のコマンドを実行して、
GitOpsClusterリソースのステータスを表示します。oc get gitopscluster <gitopscluster-name> -n openshift-gitops -o yaml
oc get gitopscluster <gitopscluster-name> -n openshift-gitops -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、特定の障害情報のステータス条件を確認します。
oc get gitopscluster <gitopscluster-name> -n openshift-gitops -o jsonpath='{.status.conditions}' | jqoc get gitopscluster <gitopscluster-name> -n openshift-gitops -o jsonpath='{.status.conditions}' | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow
確認するには、次の一般的な条件タイプを参照してください。
-
Ready:GitOpsCluster全体の健全性 -
PlacementResolved:Placementリソースのステータス -
ClustersRegistered: クラスター登録ステータス -
ArgoCDAgentPrereqsReady: エージェントの前提条件 (エージェントを有効にした場合) -
CertificatesReady: エージェントを有効にしている場合の TLS 証明書のステータス。 -
ManifestWorksApplied: エージェントを有効にしている場合のManifestWork伝播ステータス。
1.15.2. OpenShift GitOps アドオンコントローラーのログの検証 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps アドオンコントローラーのログを確認するには、次の手順を実行します。
- マネージドクラスターに移動します。
次のコマンドを実行して、OpenShift GitOps アドオンコントローラーのログを確認します。
oc logs -n open-cluster-management-agent-addon -l app=gitops-addon
oc logs -n open-cluster-management-agent-addon -l app=gitops-addonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.15.3. OpenShift GitOps Operator の検証 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift GitOps Operator が機能することを確認するには、次の手順を実行します。
次のコマンドを実行して、Operator が動作していることを確認します。
oc get pods -n openshift-gitops-operator
oc get pods -n openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Operator のログを確認します。
oc logs -n openshift-gitops-operator -l control-plane=controller-manager
oc logs -n openshift-gitops-operator -l control-plane=controller-managerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.16. ArgoCD エージェント機能の検証 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD エージェントを使用する場合は、それが動作することを確認する必要があります。ArgoCD インスタンスが動作していることを確認するには、次の手順を実行します。
次のコマンドを実行して、Argo CD コンポーネントが動作していることを確認します。
oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ArgoCDアプリケーションコントローラーのログを確認します。oc logs -n openshift-gitops -l app.kubernetes.io/name=argocd-application-controller
oc logs -n openshift-gitops -l app.kubernetes.io/name=argocd-application-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ArgoCD エージェントを有効にしている場合は、次の手順を実行して動作していることを確認します。
次のコマンドを実行して、エージェントが動作していることを確認します。
oc get pods -n openshift-gitops
oc get pods -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、エージェントログが機能していることを確認します。
oc logs -n openshift-gitops
oc logs -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ManifestWorkのステータスが証明書認証局 (CA) の伝播のために設定されていることを確認してくださいoc get manifestwork -n <managed-cluster-name> argocd-agent-ca-propagation -o yaml
oc get manifestwork -n <managed-cluster-name> argocd-agent-ca-propagation -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.17. ApplicationSet リソースを使用した段階的なロールアウトストラテジーの実装 (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
プッシュモデルとプルモデルの両方について、クラスターフリート内のアプリケーションに段階的なロールアウトストラテジーを実装することで、クラスターフリート全体にわたって安全に変更を加える Red Hat OpenShift GitOps ベースのプロセスが実現します。ロールアウトストラテジーを使用すると、さまざまなクラスター間で段階的な更新を調整できます。さらに、開発や製品クラスターなど、ラベルで定義されたグループ全体に変更を促進できます。
アプリケーションへの段階的なロールアウトストラテジーに ApplicationSet リソースを使用すると、ApplicationSet コントローラーはアプリケーションのクラスターをグループに編成します。コントローラーは、Argo CD ヘルスサイクルを通じて一度に 1 つのグループを処理し、ステータスが Healthy である場合にのみグループを使用可能にします。
ApplicationSet リソースを使用して段階的なロールアウトストラテジーを実装する方法の詳細は、次のセクションを確認してください。
1.17.1. ApplicationSet リソースを使用して段階的なロールアウトストラテジーを有効にする リンクのコピーリンクがクリップボードにコピーされました!
ApplicationSet リソースで段階的なロールアウトストラテジーを有効にするには、次の手順を実行します。
-
ハブクラスターで、
openshift-gitopsnamespace の OpenShift GitOps Operator インスタンス設定を更新します。 次のコマンドを実行して、
ApplicationSetリソースの段階的な同期を有効にします。oc -n openshift-gitops patch argocd openshift-gitops --type='merge' -p '{"spec":{"applicationSet":{"extraCommandArgs":["--enable-progressive-syncs"]}}}'oc -n openshift-gitops patch argocd openshift-gitops --type='merge' -p '{"spec":{"applicationSet":{"extraCommandArgs":["--enable-progressive-syncs"]}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
openshift-gitopsnamespace でopenshift-gitops-applicationset-controllerデプロイメントを再起動します。 次のコマンドを実行して、更新された OpenShift GitOps Operator インスタンス設定を適用し、新しいロールアウトを作成します。
oc -n openshift-gitops rollout restart deployment openshift-gitops-applicationset-controller
oc -n openshift-gitops rollout restart deployment openshift-gitops-applicationset-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.17.2. 段階的なロールアウトストラテジーのサンプル ApplicationSet リソースを理解する リンクのコピーリンクがクリップボードにコピーされました!
ストラテジー仕様を確認して、段階的なロールアウトストラテジーを実装する Argo CD プルモデルを使用したサンプル ApplicationSet を理解します。この YAML は、段階的なロールアウトストラテジーを有効にします。ハブクラスターに strategy パラメーターセクションを追加すると、クラスターを個別に更新するのではなく、完全に同時に更新できるようになります。
たとえば、次の ApplicationSet リソースでストラテジーがどのように定義されているかを確認します。
- 1
preserveFieldsパラメーターを使用して、ApplicationSetコントローラーが無視する必要があるラベルをリストします。必要なラベルを手動で適用できます (例:envLabel=env-qa)。このフィールドがない場合、ApplicationSetコントローラーはテンプレートに定義されていないラベルを上書きまたは削除します。
1.17.3. 段階的なブロールアウトストラテジーを使用するアプリケーションのラベルを理解する リンクのコピーリンクがクリップボードにコピーされました!
ロールアウトストラテジーは、Argo CD ヘルスサイクル全体で一度に 1 つのアプリケーショングループを処理するために使用されます。コントローラーは、アプリケーションオブジェクトに設定されたラベルを照合して、これらのアプリケーショングループを整理します。
ロールアウトストラテジーを使用しているすべてのアプリケーションに必要なプロモーション順序を指定する一意のラベルがあることを確認します。以下の例を参照してください。
たとえば、ハブクラスターで次のコマンドを実行すると、アプリケーションに一意のラベルを付けることができます。
oc -n openshift-gitops label applications.argoproj.io/cluster1-guestbook-app envLabel=env-dev
oc -n openshift-gitops label applications.argoproj.io/cluster1-guestbook-app envLabel=env-devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 品質保証のアプリケーションを指定する場合は、次のコマンドを実行します。
oc -n openshift-gitops label applications.argoproj.io/cluster2-guestbook-app envLabel=env-qa
oc -n openshift-gitops label applications.argoproj.io/cluster2-guestbook-app envLabel=env-qaCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 製品のアプリケーショングループを指定する場合は、次のコマンドを実行します。
oc -n openshift-gitops label applications.argoproj.io/cluster3-guestbook-app envLabel=env-prod
oc -n openshift-gitops label applications.argoproj.io/cluster3-guestbook-app envLabel=env-prod
1.17.4. 段階的なブロールアウトストラテジーを使用する Git リポジトリーの変更を理解する リンクのコピーリンクがクリップボードにコピーされました!
クラスターフリート上の ApplicationSet リソースの段階的なロールアウトストラテジーを開始するために、Argo CD アプリケーションは Git リポジトリーでコミットされた変更を確認します。コミットされた変更がある場合、段階的なロールアウトストラテジーが開始されます。
Argo CD がロールアウトストラテジーを開始すると、ApplicationSet コントローラーは OutOfSync ステータスのアプリケーションを検出し、段階的なロールアウトのためにアプリケーションをスケジュールします。アプリケーショングループに使用するラベルに基づいて、ApplicationSet コントローラーは env-dev アプリケーショングループで最初の RollingSync ステップを開始します。
Argo CD のヘルスサイクルから、各アプリケーショングループのステータスが OutOfSync から Healthy に移行するのを確認できます。すべてのアプリケーショングループのステータスが Healthy になったら、ApplicationSet コントローラーは env-qa ラベルのアプリケーショングループを同期し、次に env-prod ラベルのアプリケーショングループを同期します。最後の env-prod アプリケーショングループのステータスが Healthy になると、段階的なロールアウトストラテジーが自動的に完了し、クラスターフリートでそのストラテジーが完全に実行されます。