1.5. OpenShift Container Platform GitOps を使用したポリシー定義の管理 (Argo CD)
非推奨: PlacementRule
Argo CD に基づく OpenShift Container Platform GitOps を使用して、ポリシー定義を管理することもできます。このワークフローを許可するには、Red Hat Advanced Cluster Management ハブクラスターでポリシーを作成するためのアクセス権を OpenShift Container Platform GitOps に付与する必要があります。ポリシーと配置を作成、読み取り、更新、および削除するためのアクセス権を持つ、openshift-gitops-policy-admin
と呼ばれる以下の ClusterRole
リソースを作成します。ClusterRole
は次の例のようになります。
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: openshift-gitops-policy-admin rules: - verbs: - get - list - watch - create - update - patch - delete apiGroups: - policy.open-cluster-management.io resources: - policies - policysets - placementbindings - verbs: - get - list - watch - create - update - patch - delete apiGroups: - apps.open-cluster-management.io resources: - placementrules - verbs: - get - list - watch - create - update - patch - delete apiGroups: - cluster.open-cluster-management.io resources: - placements - placements/status - placementdecisions - placementdecisions/status
ClusterRoleBinding
オブジェクトを作成して、OpenShift Container Platform GitOps サービスアカウントに openshift-gitops-policy-admin
ClusterRole
オブジェクトへのアクセスを許可します。ClusterRoleBinding
は次の例のようになります。
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: openshift-gitops-policy-admin subjects: - kind: ServiceAccount name: openshift-gitops-argocd-application-controller namespace: openshift-gitops roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: openshift-gitops-policy-admin
Red Hat Advanced Cluster Management ポリシー定義が OpenShift Container Platform GitOps とともにデプロイされると、ポリシーのコピーが各マネージドクラスター namespace に作成されます。これらのコピーは、複製されたポリシーと呼ばれます。OpenShift Container Platform GitOps がこの複製されたポリシーを繰り返し削除したり、ArgoCD Application
が同期していないことを示したりするのを防ぐために、argocd.argoproj.io/compare-options: IgnoreExtraneous
アノテーションは、Red Hat Advanced Cluster Management ポリシーフレームワークによって、それぞれのレプリケーションされたポリシーに自動的に設定されます。
Argo CD がオブジェクトを追跡するために使用するラベルとアノテーションがあります。複製されたポリシーが ArgoCD にまったく表示されないようにするには、Red Hat Advanced Cluster Management ポリシー定義で spec.copyPolicyMetadata
を false
に設定して、これらの ArgoCD 追跡ラベルとアノテーションが複製されたポリシーにコピーされないようにすることができます。
1.5.1. ポリシージェネレーターと OpenShift Container Platform GitOps (Argo CD) の統合
ArgoCD に基づく OpenShift Container Platform GitOps は、GitOps を通じて Policy Generator を使用してポリシーを生成するために使用することもできます。Policy Generator は OpenShift Container Platform GitOps コンテナーイメージにプリインストールされていないため、いくつかのカスタマイズを行う必要があります。続行するには、OpenShift Container Platform GitOps Operator を Red Hat Advanced Cluster Management ハブクラスターにインストールし、ハブクラスターにログインする必要があります。
Kustomize の実行時に OpenShift Container Platform GitOps が Policy Generator にアクセスできるようにするには、Red Hat Advanced Cluster Management アプリケーションのサブスクリプションコンテナーイメージから OpenShift Container Platform GitOps コンテナーに Policy Generator バイナリーをコピーするための Init コンテナーが必要です。さらに、OpenShift Container Platform GitOps は、KusTOMize の実行時に --enable-alpha-plugins
フラグを提供するように設定する必要があります。次のコマンドを使用して、OpenShift Container Platform GitOps argocd
オブジェクトの編集を開始します。
oc -n openshift-gitops edit argocd openshift-gitops
次に、OpenShift Container Platform GitOps argocd
オブジェクトを変更して、次の追加の YAML コンテンツを含めます。Red Hat Advanced Cluster Management の新しいメジャーバージョンがリリースされ、ポリシージェネレーターを新しいバージョンに更新したい場合は、Init コンテナーで使用される registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel8
イメージをより新しいタグに更新する必要があります。以下の例を見て、<version>
を 2.9 または目的の Red Hat Advanced Cluster Management バージョンに置き換えます。
apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: openshift-gitops namespace: openshift-gitops spec: kustomizeBuildOptions: --enable-alpha-plugins repo: env: - name: KUSTOMIZE_PLUGIN_HOME value: /etc/kustomize/plugin initContainers: - args: - -c - cp /etc/kustomize/plugin/policy.open-cluster-management.io/v1/policygenerator/PolicyGenerator /policy-generator/PolicyGenerator command: - /bin/bash image: registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel8:v<version> name: policy-generator-install volumeMounts: - mountPath: /policy-generator name: policy-generator volumeMounts: - mountPath: /etc/kustomize/plugin/policy.open-cluster-management.io/v1/policygenerator name: policy-generator volumes: - emptyDir: {} name: policy-generator
OpenShift Container Platform GitOps がポリシージェネレーターを使用できるようになったので、Red Hat Advanced Cluster Management ハブクラスターでポリシーを作成するためのアクセス権を OpenShift Container Platform GitOps に付与する必要があります。ポリシーとプレースメントを作成、読み取り、更新、および削除するためのアクセス権を持つ、openshift-gitops-policy-admin
という名前の ClusterRole
リソースを作成します。前の ClusterRole
の例を参照してください。
また、ClusterRoleBinding
オブジェクトを作成して、OpenShift Container Platform GitOps サービスアカウントに openshift-gitops-policy-admin
ClusterRole
へのアクセスを許可します。ClusterRoleBinding
は、次のようなリソースになる場合があります。
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: openshift-gitops-policy-admin subjects: - kind: ServiceAccount name: openshift-gitops-argocd-application-controller namespace: openshift-gitops roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: openshift-gitops-policy-admin
1.5.2. 関連情報
- Argo CD のドキュメントを参照してください。