1.3. AWS 클러스터에서 검색된 OpenShift Service에 대한 가져오기 자동화
개별 클러스터를 수동으로 가져오지 않고 클러스터 관리를 위해 Red Hat Advanced Cluster Management 정책 시행을 사용하여 AWS 클러스터에서 OpenShift Service 가져오기를 자동화합니다.
필수 액세스: 클러스터 관리자
1.3.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- Red Hat Advanced Cluster Management가 설치되어 있어야 합니다. Red Hat Advanced Cluster Management 설치 및 업그레이드 설명서를 참조하십시오.
- 정책에 대해 배울 필요가 있습니다. Red Hat Advanced Cluster Management 설명서에서 Governance 소개를 참조하십시오.
1.3.2. 자동 가져오기 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 정책 및 절차는 AWS 클러스터에서 검색된 모든 OpenShift 서비스를 자동으로 가져오는 방법의 예입니다.
CLI에서 hub 클러스터에 로그인하여 다음 절차를 완료합니다.
다음 예제를 사용하여 YAML 파일을 생성하고 참조되는 변경 사항을 적용합니다.
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-rosa-autoimport annotations: policy.open-cluster-management.io/standards: NIST SP 800-53 policy.open-cluster-management.io/categories: CM Configuration Management policy.open-cluster-management.io/controls: CM-2 Baseline Configuration policy.open-cluster-management.io/description: OpenShift Service on AWS discovered clusters can be automatically imported into Red Hat Advanced Cluster Management as managed clusters with this policy. You can select and configure those managed clusters so you can import. Configure filters or add an annotation if you do not want all of your OpenShift Service on AWS clusters to be automatically imported. spec: remediationAction: inform1 disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: rosa-autoimport-config spec: object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: ConfigMap metadata: name: discovery-config namespace: open-cluster-management-global-set data: rosa-filter: ""2 remediationAction: enforce severity: low - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-rosa-autoimport spec: remediationAction: enforce severity: low object-templates-raw: | {{- /* find the ROSA DiscoveredClusters */ -}} {{- range $dc := (lookup "discovery.open-cluster-management.io/v1" "DiscoveredCluster" "" "").items }} {{- /* Check for the flag that indicates the import should be skipped */ -}} {{- $skip := "false" -}} {{- range $key, $value := $dc.metadata.annotations }} {{- if and (eq $key "discovery.open-cluster-management.io/previously-auto-imported") (eq $value "true") }} {{- $skip = "true" }} {{- end }} {{- end }} {{- /* if the type is ROSA and the status is Active */ -}} {{- if and (eq $dc.spec.status "Active") (contains (fromConfigMap "open-cluster-management-global-set" "discovery-config" "rosa-filter") $dc.spec.displayName) (eq $dc.spec.type "ROSA") (eq $skip "false") }} - complianceType: musthave objectDefinition: apiVersion: discovery.open-cluster-management.io/v1 kind: DiscoveredCluster metadata: name: {{ $dc.metadata.name }} namespace: {{ $dc.metadata.namespace }} spec: importAsManagedCluster: true {{- end }} {{- end }} - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-rosa-managedcluster-status spec: remediationAction: enforce severity: low object-templates-raw: | {{- /* Use the same DiscoveredCluster list to check ManagedCluster status */ -}} {{- range $dc := (lookup "discovery.open-cluster-management.io/v1" "DiscoveredCluster" "" "").items }} {{- /* Check for the flag that indicates the import should be skipped */ -}} {{- $skip := "false" -}} {{- range $key, $value := $dc.metadata.annotations }} {{- if and (eq $key "discovery.open-cluster-management.io/previously-auto-imported") (eq $value "true") }} {{- $skip = "true" }} {{- end }} {{- end }} {{- /* if the type is ROSA and the status is Active */ -}} {{- if and (eq $dc.spec.status "Active") (contains (fromConfigMap "open-cluster-management-global-set" "discovery-config" "rosa-filter") $dc.spec.displayName) (eq $dc.spec.type "ROSA") (eq $skip "false") }} - complianceType: musthave objectDefinition: apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: {{ $dc.spec.displayName }} namespace: {{ $dc.spec.displayName }} status: conditions: - type: ManagedClusterConditionAvailable status: "True" {{- end }} {{- end }}-
oc apply -f <filename>.yaml -n <namespace>를 실행하여 파일을 적용합니다.
1.3.3. 배치 정의 생성 링크 복사링크가 클립보드에 복사되었습니다!
정책 배포를 위해 관리 클러스터를 지정하는 배치 정의를 생성해야 합니다.
관리되는 허브 클러스터인
local-cluster만 선택하는 배치 정의를 생성합니다. 다음 YAML 샘플을 사용합니다.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement-openshift-plus-hub spec: predicates: - requiredClusterSelector: labelSelector: matchExpressions: - key: name operator: In values: - local-cluster-
oc apply -f placement.yaml -n <namespace>를실행합니다. 여기서 namespace는 이전에 생성한 정책에 사용한 네임스페이스와 일치합니다.
1.3.4. 배치 정의에 가져오기 정책 바인딩 링크 복사링크가 클립보드에 복사되었습니다!
정책과 배치를 생성한 후 두 리소스를 연결해야 합니다.
PlacementBinding을 사용하여 리소스를 연결합니다.placementRef가 사용자가 생성한배치를가리키고주체가 생성한정책을가리키는 다음 예제를 참조하십시오.apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-policy-rosa-autoimport placementRef: apiGroup: cluster.open-cluster-management.io kind: Placement name: placement-policy-rosa-autoimport subjects: - apiGroup: policy.open-cluster-management.io kind: Policy name: policy-rosa-autoimport확인하려면 다음 명령을 실행합니다.
oc get policy policy-rosa-autoimport -n <namespace>