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 のドキュメントを参照してください。