1.4. プッシュアンドプルモデルを使用した Argo CD の導入
Push モデル 使用して、ハブクラスター上の Argo CD サーバーは、マネージドクラスターにアプリケーションリソースをデプロイします。Pull モデル の場合、アプリケーションリソースは manifestWork
を使用して Propagation controller によってマネージドクラスターに伝播されます。
どちらのモデルでも、同じ ApplicationSet
CRD を使用してアプリケーションをマネージドクラスターにデプロイします。
必要なアクセス権: クラスター管理者
1.4.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 Gitops
Operator をインストールした後、同じマネージドクラスターに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-gitops
namespace にインストールする必要があります。 - 必要なハブクラスター 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.4.2. アーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
Push および Pull モデルの両方で、ハブクラスター上の Argo CD ApplicationSet コントローラー が調整して、ターゲットのマネージドクラスターごとにアプリケーションリソースを作成します。両方のモデルのアーキテクチャーに関する以下の情報を参照してください。
1.4.2.1. アーキテクチャープッシュモデル リンクのコピーリンクがクリップボードにコピーされました!
- Push モデルを使用すると、OpenShift Container Platform GitOps は、一元化されたハブクラスターからマネージドクラスターにリソースを 直接 適用します。
- ハブクラスター上で実行されている Argo CD アプリケーションは、GitHub リポジトリーと通信し、マニフェストをマネージドクラスターに直接デプロイします。
- Push モデルの実装には、マネージドクラスターの認証情報を持つハブクラスター上の Argo CD アプリケーションのみが含まれます。ハブクラスター上の Argo CD アプリケーションは、アプリケーションをマネージドクラスターにデプロイできます。
- 重要: リソースの適用を必要とするマネージドクラスターが多数ある場合は、OpenShift GitOps コントローラーのメモリーと CPU の使用率に負担がかかる可能性があることを考慮してください。リソース管理を最適化するには、Red Hat OpenShift GitOps ドキュメントの リソースクォータまたはリクエストの設定 を参照してください。
-
デフォルトでは、
apps.open-cluster-management.io/ocm-managed-cluster
およびapps.open-cluster-management.io/pull-to-ocm-managed-cluster
を追加しない限り、アプリケーションのデプロイには Push モデルが使用されます。ApplicationSet
のテンプレートセクションに cluster アノテーションを追加します。
1.4.2.2. アーキテクチャープルモデル リンクのコピーリンクがクリップボードにコピーされました!
- プルモデルでは、ハブクラスター内のコントローラーのストレスが軽減されるため、プッシュモデルと比較してスケーラビリティーが軽減されますが、より多くのリクエストとステータスレポートが必要になります。
- プルモデルの場合、OpenShift Container Platform GitOps は、一元化されたハブクラスターからマネージドクラスターにリソースを直接適用 しません。Argo CD アプリケーションは、ハブクラスターからマネージドクラスターに伝播されます。
-
Pull モデルの実装では、OpenShift Cluster Manager の登録、配置、
manifestWork
API が適用され、ハブクラスターがハブクラスターとマネージドクラスター間の安全な通信チャネルを使用してリソースをデプロイできるようになります。 - 各マネージドクラスターは個別に 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.4.3. ApplicationSet カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
Argo CD ApplicationSet
リソースは、マネージドクラスターのリストを取得するために使用されるジェネレーターフィールド内の placement
リソースを含むプッシュまたはプルモデルを使用して、マネージドクラスターにアプリケーションをデプロイするために使用されます。
- プルモデルの場合、次の例に示すように、アプリケーションの宛先をデフォルトのローカル Kubernetes サーバーに設定します。アプリケーションは、マネージドクラスター上のアプリケーションコントローラーによってローカルにデプロイされます。
以下の
ApplicationSet
YAML の例に示されるように、デフォルトの Push モデルを上書きするために必要なアノテーションを追加します。これは、テンプレートアノテーションで Pull モデルを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.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-integrations
Pod 内の別々のコンテナーで実行されます。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 Running
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下は、guestbook
アプリケーションの MulticlusterApplicationSetReport
YAML ファイルの例です。
Note: リソースがデプロイに失敗した場合、リソースはリソース一覧に含まれません。詳細は、エラーメッセージを参照してください。
1.4.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift GitOps ドキュメントの クラスター設定を使用してアプリケーションをデプロイして OpenShift クラスターの設定 を参照してください。
- Red Hat OpenShift GitOps ドキュメントの Argo CD インスタンスの設定 を参照してください。