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"
-
マネージドクラスターに
OpenShift GitopsOperator をインストールした後、同じマネージドクラスターにClusterRoleBindingクラスター管理者権限を作成する必要があります。 マネージドクラスターに
ClusterRoleBindingクラスター管理者権限を追加するには、次の YAML の例を参照してください。kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: argo-admin subjects: - kind: ServiceAccount name: openshift-gitops-argocd-application-controller namespace: openshift-gitops roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminクラスター管理者ではなく、この問題を解決する必要がある場合は、次の手順を実行してください。
- Argo CD アプリケーションがデプロイされる各マネージドクラスター上にすべての namespace を作成します。
managed-byラベルを各 namespace に追加します。Argo CD アプリケーションが複数の namespace にデプロイされている場合、各 namespace は Argo CD によって管理される必要があります。managed-byラベルを使用した次の例を参照してください。
apiVersion: v1 kind: Namespace metadata: name: mortgage2 labels: argocd.argoproj.io/managed-by: openshift-gitops-
すべてのアプリケーション宛先 namespace をアプリケーションのリポジトリー内で宣言し、namespace に
managed-byラベルを含める必要があります。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 にマネージドクラスターのクラスターシークレットが作成されます。