1.5. Red Hat OpenShift GitOps를 사용하여 정책 정의 관리
ArgoCD
리소스를 사용하면 Red Hat OpenShift GitOps를 사용하여 Red Hat Advanced Cluster Management Hub 클러스터에서 정책을 생성하기 위해 OpenShift GitOps 액세스 권한을 부여하여 정책 정의를 관리할 수 있습니다.
1.5.1. 사전 요구 사항
hub 클러스터에 로그인해야 합니다.
필수 액세스: 클러스터 관리자
더 이상 사용되지 않음: PlacementRule
1.5.2. OpenShift GitOps의 ClusterRole 리소스 생성
정책 및 배치를 생성, 읽기, 업데이트 및 삭제할 수 있는 액세스 권한으로 OpenShift GitOps에 대한 ClusterRole
리소스를 생성하려면 다음을 수행합니다.
콘솔에서
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 - configurationpolicies - certificatepolicies - operatorpolicies - 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
OpenShift GitOps 서비스 계정 액세스 권한을
openshift-gitops-policy-admin
ClusterRole
오브젝트에 부여할ClusterRoleBinding
오브젝트를 생성합니다.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 GitOps와 함께 배포되면 허브 템플릿 차이를 해결하기 위해 각 관리 클러스터 네임스페이스에 정책 사본이 생성됩니다. 이러한 복사본을 복제 정책이라고 합니다. - OpenShift GitOps가 복제된 정책을 반복적으로 삭제하거나 Argo CD 애플리케이션이 동기화되지 않도록 하려면
argocd.argoproj.io/compare-options: IgnoreExtraneous
주석은 Red Hat Advanced Cluster Management 정책 프레임워크에서 복제된 각 정책에 자동으로 설정됩니다.-
Argo CD에서 오브젝트를 추적하는 데 사용하는 레이블 및 주석이 있습니다. Argo CD에 복제 정책이 표시되지 않도록 하려면 Red Hat Advanced Cluster Management 정책 정의에서
spec.copyPolicyMetadata
를false
로 설정하여 Argo CD 추적 레이블 및 주석을 비활성화합니다.
1.5.3. OpenShift GitOps와 정책 생성기 통합
OpenShift GitOps를 사용하여 GitOps를 통해 정책 생성기를 사용하여 정책을 생성할 수 있습니다. Policy Generator는 OpenShift GitOps 컨테이너 이미지에 사전 설치되지 않으므로 사용자 정의를 완료해야 합니다.
1.5.3.1. 사전 요구 사항
- Red Hat Advanced Cluster Management Hub 클러스터에 OpenShift GitOps를 설치해야 합니다.
- hub 클러스터에 로그인해야 합니다.
1.5.3.2. OpenShift GitOps에서 정책 생성기 액세스
OpenShift GitOps에서 정책 생성기에 액세스하려면 Red Hat Advanced Cluster Management Application Subscription 컨테이너 이미지에서 Policy Generator 바이너리를 복사하도록 Init Container를 구성해야 합니다. Kustomize를 실행할 때 --enable-alpha-plugins
플래그를 제공하여 OpenShift GitOps도 구성해야 합니다.
정책 생성기를 사용하여 정책 및 배치를 생성, 읽기, 업데이트 및 삭제하려면 OpenShift GitOps의 정책 생성기 액세스 권한을 부여합니다. 다음 단계를 완료합니다.
다음 명령을 사용하여 OpenShift GitOps
argocd
오브젝트를 편집합니다.oc -n openshift-gitops edit argocd openshift-gitops
Policy Generator를 최신 버전으로 업데이트하려면 Init Container에서 사용하는
registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9
이미지를 최신 태그에 추가합니다. <version&
gt; 매개변수를ArgoCD
리소스의 최신 Red Hat Advanced Cluster Management 버전으로 바꿉니다.ArgoCD
리소스는 다음 YAML 파일과 유사할 수 있습니다.apiVersion: argoproj.io/v1beta1 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 /policy-generator/PolicyGenerator-not-fips-compliant /policy-generator-tmp/PolicyGenerator command: - /bin/bash image: registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9:v<version> name: policy-generator-install volumeMounts: - mountPath: /policy-generator-tmp name: policy-generator volumeMounts: - mountPath: /etc/kustomize/plugin/policy.open-cluster-management.io/v1/policygenerator name: policy-generator volumes: - emptyDir: {} name: policy-generator
참고: 또는
MulticlusterHub
에 설정된 버전과 일치하도록ArgoCD
매니페스트 및 템플릿이 포함된ConfigurationPolicy
리소스를 생성할 수 있습니다.image: '{{ (index (lookup "apps/v1" "Deployment" "open-cluster-management" "multicluster-operators-hub-subscription").spec.template.spec.containers 0).image }}'
정책을 생성하기 전에 Kustomize 디렉터리 내에서 Helm 차트 처리를 활성화하려면
spec.repo.env
필드에서POLICY_GEN_ENABLE_HELM
환경 변수를"true"
로 설정합니다.env: - name: POLICY_GEN_ENABLE_HELM value: "true"
정책 및 배치를 생성, 읽기, 업데이트 및 삭제하려면
ClusterRoleBinding
오브젝트를 생성하여 OpenShift GitOps 서비스 계정에 Red Hat Advanced Cluster Management Hub 클러스터에 대한 액세스 권한을 부여합니다.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.4. OpenShift GitOps의 정책 상태 점검 구성
ArgoCD
연결을 사용하면 OpenShift GitOps를 사용하여 리소스 상태에 따라 특정 리소스의 현재 상태를 결정하는 사용자 정의 논리를 정의합니다. 정책을 준수하는 경우에만 정책을 정상으로 보고하도록 사용자 정의 상태 점검을 정의합니다. 리소스에 대한 상태 점검을 추가할 때 resourceHealthChecks
필드에 그룹으로
추가해야 합니다.
중요: 인터넷에서 악의적인 것을 다운로드하지 않았는지 확인하려면 적용하기 전에 모든 정책을 검토하십시오.
리소스 유형에 대한 상태 점검을 정의하려면 다음 단계를 완료합니다.
CertificatePolicy
리소스에 대한 상태 점검을 구성하려면 다음 명령을 사용하여ArgoCD
리소스를 편집합니다.oc -n openshift-gitops edit argocd openshift-gitops
ArgoCD
리소스는 다음 YAML 파일과 유사할 수 있습니다.apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: openshift-gitops namespace: openshift-gitops spec: resourceHealthChecks: - group: policy.open-cluster-management.io kind: CertificatePolicy check: | hs = {} if obj.status == nil or obj.status.compliant == nil then hs.status = "Progressing" hs.message = "Waiting for the status to be reported" return hs end if obj.status.compliant == "Compliant" then hs.status = "Healthy" hs.message = "All certificates found comply with the policy" return hs else hs.status = "Degraded" hs.message = "At least one certificate does not comply with the policy" return hs end
CertificatePolicy
,ConfigurationPolicy
,OperatorPolicy
및Policy
리소스에 상태 점검을 추가하려면 다음 명령을 실행하여argocd-policy-healthchecks.yaml
을 다운로드합니다.wget https://raw.githubusercontent.com/open-cluster-management-io/policy-collection/main/stable/CM-Configuration-Management/argocd-policy-healthchecks.yaml
argocd-policy-healthchecks.yaml
정책을 적용하려면 다음 명령을 실행합니다.oc apply -f ./argocd-policy-healthchecks.yaml
-
ArgoCD
리소스의 요약 탭을 확인하여 상태 점검이 예상대로 작동하는지 확인합니다. Argo CD 콘솔에서 상태 세부 정보를 확인합니다.
1.5.5. 추가 리소스
- OpenShift GitOps 이해 설명서를 참조하십시오.