1.2. 検出されたホステッドクラスターのインポートの自動化
個々のクラスターを手動でインポートすることなく、DiscoveredCluster
リソースを使用してホステッドクラスターのインポートを自動化し、クラスター管理を迅速化します。
検出されたホステッドクラスターを Red Hat Advanced Cluster Management に自動的にインポートすると、すべての Red Hat Advanced Cluster Management アドオンが有効になり、利用可能な管理ツールを使用してホステッドクラスターの管理を開始できるようになります。
ホステッドクラスターは、マルチクラスターエンジン Operator にも 自動的にインポート されます。マルチクラスターエンジン Operator のコンソールから、ホステッドクラスターのライフサイクルを管理できます。Red Hat Advanced Cluster Management のコンソールからは、ホステッドクラスターのライフサイクルを管理できません。
必要なアクセス権: クラスター管理者
1.2.1. 前提条件
- Red Hat Advanced Cluster Management がインストールされている。Red Hat Advanced Cluster Management インストールおよびアップグレード に関するドキュメントを参照してください。
- ポリシー を理解している。Red Hat Advanced Cluster Management ドキュメントの ガバナンス の概要を参照してください。
1.2.2. 自動インポートの設定
マネージドマルチクラスターエンジン Operator クラスターから検出されたホステッドクラスターは、Red Hat Advanced Cluster Management のマネージドマルチクラスターエンジン Operator クラスターの namespace にある DiscoveredCluster
カスタムリソースで表されます。次の DiscoveredCluster
リソースと namespace の例を参照してください。
apiVersion: discovery.open-cluster-management.io/v1 kind: DiscoveredCluster metadata: creationTimestamp: "2024-05-30T23:05:39Z" generation: 1 labels: hypershift.open-cluster-management.io/hc-name: hosted-cluster-1 hypershift.open-cluster-management.io/hc-namespace: clusters name: hosted-cluster-1 namespace: mce-1 resourceVersion: "1740725" uid: b4c36dca-a0c4-49f9-9673-f561e601d837 spec: apiUrl: https://a43e6fe6dcef244f8b72c30426fb6ae3-ea3fec7b113c88da.elb.us-west-1.amazonaws.com:6443 cloudProvider: aws creationTimestamp: "2024-05-30T23:02:45Z" credential: {} displayName: mce-1-hosted-cluster-1 importAsManagedCluster: false isManagedCluster: false name: hosted-cluster-1 openshiftVersion: 0.0.0 status: Active type: MultiClusterEngineHCP
apiVersion: discovery.open-cluster-management.io/v1
kind: DiscoveredCluster
metadata:
creationTimestamp: "2024-05-30T23:05:39Z"
generation: 1
labels:
hypershift.open-cluster-management.io/hc-name: hosted-cluster-1
hypershift.open-cluster-management.io/hc-namespace: clusters
name: hosted-cluster-1
namespace: mce-1
resourceVersion: "1740725"
uid: b4c36dca-a0c4-49f9-9673-f561e601d837
spec:
apiUrl: https://a43e6fe6dcef244f8b72c30426fb6ae3-ea3fec7b113c88da.elb.us-west-1.amazonaws.com:6443
cloudProvider: aws
creationTimestamp: "2024-05-30T23:02:45Z"
credential: {}
displayName: mce-1-hosted-cluster-1
importAsManagedCluster: false
isManagedCluster: false
name: hosted-cluster-1
openshiftVersion: 0.0.0
status: Active
type: MultiClusterEngineHCP
検出されたホステッドクラスターは、spec.importAsManagedCluster
フィールドが false
から true
に変更されるまで、Red Hat Advanced Cluster Management に自動的にインポートされません。Red Hat Advanced Cluster Management ポリシーを使用して、DiscoveredCluster
リソース内のすべての type.MultiClusterEngineHCP
に対してこのフィールドを自動的に true
に設定し、検出されたホステッドクラスターが Red Hat Advanced Cluster Management に即座に自動的にインポートされるようにする方法を説明します。
検出されたホステッドクラスターをすべてインポートするようにポリシーを設定します。
- CLI からハブクラスターにログインして、次の手順を実行します。
DiscoveredCluster
カスタムリソースの YAML ファイルを作成し、次の例で後述する設定を編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-mce-hcp-autoimport namespace: open-cluster-management-global-set 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: Discovered clusters that are of type MultiClusterEngineHCP can be automatically imported into ACM as managed clusters. This policy configure those discovered clusters so they are automatically imported. Fine tuning MultiClusterEngineHCP clusters to be automatically imported can be done by configure filters at the configMap or add annotation to the discoverd cluster. spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: mce-hcp-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: "" remediationAction: enforce severity: low - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-mce-hcp-autoimport spec: remediationAction: enforce severity: low object-templates-raw: | {{- /* find the MultiClusterEngineHCP 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 MultiClusterEngineHCP and the status is Active */ -}} {{- if and (eq $dc.spec.status "Active") (contains (fromConfigMap "open-cluster-management-global-set" "discovery-config" "mce-hcp-filter") $dc.spec.displayName) (eq $dc.spec.type "MultiClusterEngineHCP") (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 }}
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy-mce-hcp-autoimport namespace: open-cluster-management-global-set 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: Discovered clusters that are of type MultiClusterEngineHCP can be automatically imported into ACM as managed clusters. This policy configure those discovered clusters so they are automatically imported. Fine tuning MultiClusterEngineHCP clusters to be automatically imported can be done by configure filters at the configMap or add annotation to the discoverd cluster. spec: disabled: false policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: mce-hcp-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: "" remediationAction: enforce
1 severity: low - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-mce-hcp-autoimport spec: remediationAction: enforce severity: low object-templates-raw: | {{- /* find the MultiClusterEngineHCP 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 MultiClusterEngineHCP and the status is Active */ -}} {{- if and (eq $dc.spec.status "Active") (contains (fromConfigMap "open-cluster-management-global-set" "discovery-config" "mce-hcp-filter") $dc.spec.displayName) (eq $dc.spec.type "MultiClusterEngineHCP") (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
2 {{- end }} {{- end }}
-
oc apply -f <filename>.yaml -n <namespace>
を実行して、ファイルを適用します。
1.2.3. 配置定義の作成
ポリシーのデプロイ先のマネージドクラスターを指定する配置定義を作成する必要があります。次の手順を実行します。
管理対象のハブクラスターである
local-cluster
のみを選択するPlacement
定義を作成します。以下の YAML 例を使用してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: policy-mce-hcp-autoimport-placement namespace: open-cluster-management-global-set spec: tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists - key: cluster.open-cluster-management.io/unavailable operator: Exists clusterSets: - global predicates: - requiredClusterSelector: labelSelector: matchExpressions: - key: local-cluster operator: In values: - "true"
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: policy-mce-hcp-autoimport-placement namespace: open-cluster-management-global-set spec: tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists - key: cluster.open-cluster-management.io/unavailable operator: Exists clusterSets: - global predicates: - requiredClusterSelector: labelSelector: matchExpressions: - key: local-cluster operator: In values: - "true"
-
oc apply -f placement.yaml -n <namespace>
を実行します。namespace
は、以前に作成したポリシーに使用した namespace と同じものです。
1.2.4. インポートポリシーを配置定義にバインドする
ポリシーと配置を作成したら、2 つのリソースを結び付ける必要があります。以下の手順を実行します。
PlacementBinding
リソースを使用してリソースを結び付けます。次の例を参照してください。placementRef
は作成したPlacement
を参照し、subjects
は作成したPolicy
を参照します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: policy-mce-hcp-autoimport-placement-binding namespace: open-cluster-management-global-set placementRef: name: policy-mce-hcp-autoimport-placement apiGroup: cluster.open-cluster-management.io kind: Placement subjects: - name: policy-mce-hcp-autoimport apiGroup: policy.open-cluster-management.io kind: Policy
apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: policy-mce-hcp-autoimport-placement-binding namespace: open-cluster-management-global-set placementRef: name: policy-mce-hcp-autoimport-placement apiGroup: cluster.open-cluster-management.io kind: Placement subjects: - name: policy-mce-hcp-autoimport apiGroup: policy.open-cluster-management.io kind: Policy
検証するには、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get policies.policy.open-cluster-management.io policy-mce-hcp-autoimport -n <namespace>
oc get policies.policy.open-cluster-management.io policy-mce-hcp-autoimport -n <namespace>
重要: Red Hat Advanced Cluster Management コンソールの Detach オプションを使用するか、コマンドラインから対応する ManagedCluster
カスタムリソースを削除することにより、ホステッドクラスターを Red Hat Advanced Cluster Management から デタッチ できます。
最適な結果を得るには、ホステッドクラスターを 破棄 する前に、管理対象のホステッドクラスターをデタッチしてください。
検出されたクラスターがデタッチされると、検出されたクラスターが再度インポートされるのを防ぐために、次のアノテーションが DiscoveredCluster
リソースに追加されます。
annotations: discovery.open-cluster-management.io/previously-auto-imported: "true"
annotations:
discovery.open-cluster-management.io/previously-auto-imported: "true"
検出されたデタッチ済みクラスターを再インポートする場合は、このアノテーションを削除します。