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 리소스를 생성하려면 다음을 수행합니다.

  1. 콘솔에서 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
  2. 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 정책 프레임워크에서 복제된 각 정책에 자동으로 설정됩니다.

  3. Argo CD에서 오브젝트를 추적하는 데 사용하는 레이블 및 주석이 있습니다. Argo CD에 복제 정책이 표시되지 않도록 하려면 Red Hat Advanced Cluster Management 정책 정의에서 spec.copyPolicyMetadatafalse 로 설정하여 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의 정책 생성기 액세스 권한을 부여합니다. 다음 단계를 완료합니다.

  1. 다음 명령을 사용하여 OpenShift GitOps argocd 오브젝트를 편집합니다.

    oc -n openshift-gitops edit argocd openshift-gitops
  2. Policy Generator를 최신 버전으로 업데이트하려면 Init Container에서 사용하는 registry.redhat.io/rhacm2/multicluster-operators-subscription-rhel9 이미지를 최신 태그에 추가합니다. &lt ;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 }}'
  3. 정책을 생성하기 전에 Kustomize 디렉터리 내에서 Helm 차트 처리를 활성화하려면 spec.repo.env 필드에서 POLICY_GEN_ENABLE_HELM 환경 변수를 "true" 로 설정합니다.

    env:
    - name: POLICY_GEN_ENABLE_HELM
      value: "true"
  4. 정책 및 배치를 생성, 읽기, 업데이트 및 삭제하려면 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 필드에 그룹으로 추가해야 합니다.

중요: 인터넷에서 악의적인 것을 다운로드하지 않았는지 확인하려면 적용하기 전에 모든 정책을 검토하십시오.

리소스 유형에 대한 상태 점검을 정의하려면 다음 단계를 완료합니다.

  1. 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
  2. CertificatePolicy,ConfigurationPolicy,OperatorPolicyPolicy 리소스에 상태 점검을 추가하려면 다음 명령을 실행하여 argocd-policy-healthchecks.yaml 을 다운로드합니다.

    wget https://raw.githubusercontent.com/open-cluster-management-io/policy-collection/main/stable/CM-Configuration-Management/argocd-policy-healthchecks.yaml
  3. argocd-policy-healthchecks.yaml 정책을 적용하려면 다음 명령을 실행합니다.

    oc apply -f ./argocd-policy-healthchecks.yaml
  4. ArgoCD 리소스의 요약 탭을 확인하여 상태 점검이 예상대로 작동하는지 확인합니다. Argo CD 콘솔에서 상태 세부 정보를 확인합니다.

1.5.5. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.