1.11. 클러스터 API


클러스터 API는 Kubernetes 클러스터의 프로비저닝, 업그레이드 및 관리를 단순화하는 선언적 API를 제공합니다. 다중 클러스터 엔진 Operator는 여러 인프라 및 부트스트랩 공급자와 함께 코어 클러스터 API 구성 요소를 설치하여 다양한 사용 사례 및 플랫폼을 지원합니다. 독립 실행형 다중 클러스터 엔진 Operator 또는 Red Hat Advanced Cluster Management를 사용하여 Cluster API를 사용하는 방법을 알아봅니다. 다음 프로세스를 참조하십시오.

1.11.1. 클러스터 API를 사용하여 관리형 클러스터 설치

metal3 인프라 공급자와 OpenShift Container Platform 지원 부트스트랩 및 컨트롤 플레인 공급자를 사용하여 클러스터 API로 OpenShift Container Platform 관리 클러스터를 설치할 수 있습니다.

  • ControlPlane 리소스는 컨트롤 플레인 속성을 정의합니다.
  • ClusterInfrastructure 는 클러스터 수준 인프라 세부 정보를 정의합니다.

사전 요구 사항

  • Red Hat Advanced Cluster Management 설치 또는 다중 클러스터 엔진 Operator 독립 실행형 설치의 MultiClusterEngine 리소스가 필요합니다.
  • 다음 API 기본 도메인은 정적 API VIP를 가리켜야 합니다 . api.<cluster_name>.<base_domain > .
  • 다음 애플리케이션 기본 도메인은 Ingress VIP의 고정 IP 주소를 가리켜야 합니다 . *.apps.<cluster_name>.<base_domain > .
  • 클러스터의 내부 API 끝점( api-int.<baseDomain>)이 필요합니다.

1.11.1.1. 클러스터 API를 사용하여 워크로드 프로비저닝

  1. 워크로드를 프로비저닝하는 데 필요한 서비스를 활성화합니다. 기본적으로 assisted-service 가 활성화됩니다. 기본적으로 cluster-api-provider-metal3cluster-api-provider-openshift-assisted 는 비활성화되어 있습니다. 세 가지 서비스 모두 true 임을 확인합니다. 다음 명령을 실행하여 리소스를 편집합니다.

    oc edit multiclusterengines.multicluster.openshift.io -n multicluster-engine
    Copy to Clipboard Toggle word wrap
  2. supported -service 구성 요소, cluster-api-provider- metal3 구성 요소 및 cluster-api-provider-openshift-assisted 구성 요소의 .spec.overrides 에서 enabled: true 를 설정합니다. 다음 configOverrides 값을 참조하십시오.

        - configOverrides: {}
          enabled: true
          name: assisted-service
        - configOverrides: {}
          enabled: true
          name: cluster-api
    ...
        - configOverrides: {}
          enabled: true
          name: cluster-api-provider-metal3
        - configOverrides: {}
          enabled: true
          name: cluster-api-provider-openshift-assisted
    Copy to Clipboard Toggle word wrap
  3. 중앙 인프라 관리 서비스를 활성화합니다. 절차 를 보려면 중앙 인프라 관리 서비스 활성화를 참조하십시오.
  4. clusterNetwork 사양, controlPlaneRef 사양 및 infrastructureRef 사양을 사용하여 클러스터 리소스를 구성합니다. 다음 Cluster 리소스를 참조하십시오.

    apiVersion: cluster.x-k8s.io/v1beta1
    kind: Cluster
    metadata:
      name: <cluster-name>
      namespace: <cluster-namespace>
    spec:
      clusterNetwork:
        pods:
          cidrBlocks:
            - 172.18.0.0/20
        services:
          cidrBlocks:
            - 10.96.0.0/12
      controlPlaneRef: 
    1
    
        apiVersion: controlplane.cluster.x-k8s.io/v1alpha2
        kind: OpenshiftAssistedControlPlane
        name:  <cluster-name>
        namespace:  <cluster-namespace>
      infrastructureRef: 
    2
    
        apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
        kind: Metal3Cluster
        name: <cluster-name>
        namespace: <cluster-namespace>
    Copy to Clipboard Toggle word wrap
    1
    OpenshiftAssistedControlPlane 는 컨트롤 플레인입니다.
    2
    Metal3Cluster 는 인프라입니다.
  5. 다음 명령을 실행하여 YAML 콘텐츠를 적용합니다.

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  6. distributionVersion,apiVIPs 및 SSH 키를 포함하는 OpenshiftAssistedControlPlane 리소스를 구성합니다. distributionVersion 필드에 OpenShift Container Platform 버전을 지정합니다.

    참고: distributionVersion 의 값은 OpenShift Container Platform 릴리스 의 이미지와 일치합니다. 다음 YAML 리소스를 참조하십시오.

    apiVersion: controlplane.cluster.x-k8s.io/v1alpha2
    kind: OpenshiftAssistedControlPlane
    metadata:
      name: <cluster-name>
      namespace: <cluster-namespace>
      annotations: {}
    spec: 
    1
    
      openshiftAssistedConfigSpec:
        sshAuthorizedKey: "{{ ssh_authorized_key }}"
        nodeRegistration:
          kubeletExtraLabels:
          - 'metal3.io/uuid="${METADATA_UUID}"'
      distributionVersion: <4.x.0>
      config:
        apiVIPs:
        - 192.168.222.40
        ingressVIPs:
        - 192.168.222.41
        baseDomain: lab.home
        pullSecretRef:
          name: "pull-secret"
        sshAuthorizedKey: "{{ ssh_authorized_key }}" 
    2
    
      machineTemplate:
        infrastructureRef:
          apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
          kind: Metal3MachineTemplate
          name: <cluster-name-control-plane>
          namespace: <cluster-namespace>
      replicas: 3
    Copy to Clipboard Toggle word wrap
    1
    .spec.openshiftAssistedConfigSpec.sshAuthorizedKey검색 단계라고도 하는 부팅 단계의 노드에 액세스하는 데 사용됩니다.
    2
    .spec.config.sshAuthorizedKey 는 프로비저닝된 OpenShift Container Platform 노드에 액세스하는 데 사용됩니다.
  7. YAML 파일을 적용합니다. 다음 명령을 실행합니다.

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  8. 풀 시크릿이 없는 경우 클러스터에서 컨테이너 레지스트리에서 이미지를 가져올 수 있도록 풀 시크릿을 생성해야 합니다. 풀 시크릿을 생성하려면 다음 단계를 완료합니다.
  9. YAML 파일을 생성하여 이미지를 가져옵니다. pull-secret.yaml 이라는 파일의 다음 예제를 참조하십시오.

    apiVersion: v1
    kind: Secret
    metadata: 
    1
    
      name: pull-secret
      namespace: <cluster-namespace>
    data: 
    2
    
      .dockerconfigjson: <encoded_docker_configuration>
    type: kubernetes.io/dockerconfigjson
    Copy to Clipboard Toggle word wrap
    1
    < cluster-namespace> 값이 대상 네임스페이스와 일치하는지 확인합니다.
    2
    base64로 인코딩된 구성 파일을 < encoded_docker_configuration> 의 값으로 지정합니다.
  10. 다음 명령을 실행하여 파일을 적용합니다.

    oc apply -f pull-secret.yaml
    Copy to Clipboard Toggle word wrap
  11. baremetal에 클러스터 배포와 관련된 정보가 포함된 Metal3Cluster 인프라 리소스를 구성합니다.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: Metal3Cluster
    metadata:
      name: <cluster-name>
      namespace: <cluster-namespace>
    spec:
      controlPlaneEndpoint:
        host: <cluster-name>.lab.home 
    1
    
        port: 6443
      noCloudProvider: true
    Copy to Clipboard Toggle word wrap
    1
    호스트 는 클러스터 리소스의 clusterName과 함께 < clusterName >.<baseDomain>* 값이고 baseDomainOpenshiftAssistedControlPlane 리소스에 정의됩니다.
  12. 파일을 적용합니다. 다음 명령을 실행합니다.

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  13. OpenshiftAssistedControlPlane 리소스에서 참조하는 컨트롤 플레인 노드에 대해 Metal3MachineTemplate 리소스를 구성합니다. 다음 YAML 샘플을 참조하십시오.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: Metal3MachineTemplate
    metadata:
      name: <cluster-name>
      namespace: <cluster-namespace>
    spec:
      nodeReuse: false
      template:
        spec:
          automatedCleaningMode: disabled
          dataTemplate:
            name: <cluster-name-template>
          image: 
    1
    
            checksum: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.19/4.19.0/sha256sum.txt
            checksumType: sha256
            url: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.19/4.19.0/rhcos-4.19.0-x86_64-nutanix.x86_64.qcow2
            format: qcow2
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: Metal3DataTemplate
    metadata:
       name: <cluster-name-template>
       namespace: <cluster-namespace>
    spec:
       clusterName: <cluster-name> 
    2
    Copy to Clipboard Toggle word wrap
    1
    이미지는 OpenShift Container Platform 릴리스distributionVersion 값과 버전과 일치합니다.
    2
    clusterNameCluster 리소스에 있는 값과 동일한 값으로 설정합니다.
  14. 파일을 적용합니다. 다음 명령을 실행합니다.

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  15. Metal3MachineTemplate 을 참조하는 MachineDeployment 리소스를 사용하여 작업자 노드를 구성합니다. 다음 YAML 예제를 참조하십시오.

    apiVersion: cluster.x-k8s.io/v1beta1
    kind: MachineDeployment
    metadata:
      name: <cluster-name-worker>
      namespace: <cluster-namespace>
      labels:
        cluster.x-k8s.io/cluster-name: <cluster-name>
    spec:
      clusterName: <cluster-name>
      replicas: 2
      selector:
        matchLabels:
          cluster.x-k8s.io/cluster-name: <cluster-name>
      template:
        metadata:
          labels:
            cluster.x-k8s.io/cluster-name: <cluster-name>
        spec:
          clusterName: <cluster-name>
          bootstrap: 
    1
    
            configRef:
              name: <cluster-name-worker>
              apiVersion: bootstrap.cluster.x-k8s.io/v1alpha1
              kind: OpenshiftAssistedConfigTemplate
          infrastructureRef: 
    2
    
            name: <cluster-name-workers-2>
            apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
            kind: Metal3MachineTemplate
    Copy to Clipboard Toggle word wrap
    1
    부트스트랩 구성은 설치를 위해 다음 리소스에서도 참조됩니다.
    2
    인프라 참조는 프로비저닝할 리소스를 가리킵니다.
  16. 파일을 적용합니다. 다음 명령을 실행합니다.

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  17. MachineDeployment 에서 참조되는 OpenshiftAssistedConfigTemplate 리소스를 생성합니다. 다음 YAML은 작업자 노드의 부트스트랩 구성을 정의하고 지원 설치 프로그램에 노드를 등록하는 데 사용됩니다.

    apiVersion: bootstrap.cluster.x-k8s.io/v1alpha1
    kind: OpenshiftAssistedConfigTemplate
    metadata:
      name: <cluster-name-worker>
      namespace: <cluster-namespace>
      labels:
        cluster.x-k8s.io/cluster-name: cluster-name
    spec:
      template:
        spec:
          nodeRegistration:
            kubeletExtraLabels:
              - 'metal3.io/uuid="${METADATA_UUID}"'
    1
    
          sshAuthorizedKey: "{{ ssh_authorized_key }}" 
    2
    Copy to Clipboard Toggle word wrap
    1
    kubeletExtraLabels 는 이 값에서 변경할 수 없습니다.
    2
    sshAuthorizedKey 를 입력합니다.
  18. MachineDeployment 리소스에서 참조되는 Metal3MachineTemplate 을 생성합니다. 다음 예제를 참조하십시오.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: Metal3MachineTemplate
    metadata:
       name: <cluster-name-workers-2>
       namespace: <cluster-namespace>
    spec:
       nodeReuse: false
       template:
          spec:
             automatedCleaningMode: metadata
             dataTemplate:
                name: <cluster-name-workers-template>
          image:
            checksum: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.19/4.19.0/sha256sum.txt
            checksumType: sha256
            url: https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.19/4.19.0/rhcos-4.19.0-x86_64-nutanix.x86_64.qcow2
            format: qcow2
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: Metal3DataTemplate
    metadata:
       name: <cluster-name-workers-template>
       namespace: <cluster-namespace>
    spec:
       clusterName: <cluster-name>
    Copy to Clipboard Toggle word wrap
  19. 다음 명령을 실행하여 YAML 파일을 저장하고 클러스터를 프로비저닝합니다.

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  20. 클러스터 프로비저닝 상태를 확인합니다.

    1. oc get cluster --namespace <cluster-namespace> <cluster-name> -o yaml 을 실행하여 클러스터 리소스 상태를 확인합니다.

      다음 출력 및 상태를 참조하십시오.

      status:
        conditions:
        - lastTransitionTime: "2025-06-25T11:23:38Z"
          status: "True"
          type: Ready
        - lastTransitionTime: "2025-06-25T11:23:38Z"
          status: "True"
          type: ControlPlaneReady
        - lastTransitionTime: "2025-06-25T10:37:03Z"
          status: "True"
          type: InfrastructureReady
      Copy to Clipboard Toggle word wrap
    2. oc get metal3cluster --namespace <cluster-namespace> <cluster-name> -o yaml 명령을 실행하여 클러스터 인프라 상태를 확인합니다.

      다음 출력 및 상태를 참조하십시오.

      status:
        conditions:
        - lastTransitionTime: "2025-06-25T10:37:03Z"
          status: "True"
          type: Ready
        - lastTransitionTime: "2025-06-25T10:37:03Z"
          status: "True"
          type: BaremetalInfrastructureReady
      Copy to Clipboard Toggle word wrap
    3. oc get openshiftassistedcontrolplane --namespace <cluster-namespace> <cluster-name> -o yaml 명령을 실행하여 컨트롤 플레인 상태를 확인합니다.

      다음 출력 및 상태를 참조하십시오.

      status:
        conditions:
        - lastTransitionTime: "2025-06-25T11:23:38Z"
          status: "True"
          type: Ready
        - lastTransitionTime: "2025-06-25T11:23:38Z"
          status: "True"
          type: ControlPlaneReady
        - lastTransitionTime: "2025-06-25T10:45:48Z"
          status: "True"
          type: KubeconfigAvailable
        - lastTransitionTime: "2025-06-25T10:38:25Z"
          status: "True"
          type: MachinesCreated
        - lastTransitionTime: "2025-06-25T11:10:54Z"
          status: "True"
          type: MachinesReady
        - lastTransitionTime: "2025-06-25T11:23:38Z"
          status: "True"
          type: UpgradeCompleted
      Copy to Clipboard Toggle word wrap
    4. oc get machinedeployment --namespace <cluster-namespace> <cluster-name> -o yaml 명령을 실행하여 머신 배포 상태를 확인합니다.

      다음 출력 및 상태를 참조하십시오.

      status:
        conditions:
        - lastTransitionTime: "2025-06-25T11:10:29Z"
          status: "True"
          type: Ready
        - lastTransitionTime: "2025-06-25T11:10:29Z"
          status: "True"
          type: Available
        - lastTransitionTime: "2025-06-25T11:10:29Z"
          status: "True"
          type: MachineSetReady
      Copy to Clipboard Toggle word wrap
    5. kubectl get machine -l cluster.x-k8s.io/cluster-name=cluster-name -n test-capi -o yaml 명령을 실행하여 머신을 확인합니다.

      다음 출력 및 상태를 참조하십시오.

     status:
        conditions:
        - lastTransitionTime: "2025-06-25T11:09:57Z"
      	status: "True"
      	type: Ready
        - lastTransitionTime: "2025-06-25T10:38:20Z"
      	status: "True"
      	type: BootstrapReady
        - lastTransitionTime: "2025-06-25T11:09:57Z"
      	status: "True"
      	type: InfrastructureReady
        - lastTransitionTime: "2025-06-25T11:10:29Z"
      	status: "True"
      	type: NodeHealthy
    Copy to Clipboard Toggle word wrap
  21. 클러스터에 액세스합니다.

    1. 다음 명령을 실행하여 kubeconfig 파일을 가져옵니다.

      oc get secret -n test-capi  cluster-name-admin-kubeconfig -o json | jq -r .data.kubeconfig | base64 --decode > kubeconfig
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 kubeconfig 파일을 사용하여 클러스터에 액세스합니다.
    export KUBECONFIG=$(realpath kubeconfig)
    oc get nodes
    Copy to Clipboard Toggle word wrap

클러스터 API를 사용하여 프로비저닝하는 클러스터를 자동으로 가져와서 시간을 절약할 수 있습니다.

필수 액세스: 클러스터 관리자

사전 요구 사항

  • Red Hat Advanced Cluster Management 설치 또는 다중 클러스터 엔진 Operator 독립 실행형 설치의 MultiClusterEngine 리소스가 필요합니다.

1.11.2.1. 허브 클러스터 준비

클러스터 API를 사용하여 프로비저닝된 클러스터를 자동으로 가져오려면 다음 단계를 완료해야 합니다.

  1. 다음 YAML 파일 샘플을 추가하여 ClusterManager 리소스에서 ClusterImporter 기능 게이트를 활성화합니다.

    apiVersion: operator.open-cluster-management.io/v1
    kind: ClusterManager
    metadata:
      name: cluster-manager
    spec:
      registrationConfiguration:
        featureGates:
        - feature: ClusterImporter
          mode: Enable
    Copy to Clipboard Toggle word wrap
  2. clusterImportConfigtrue 로 설정하여 클러스터 가져오기 구성 시크릿을 생성하도록 가져오기 컨트롤러를 구성합니다. ConfigMap 리소스는 다음 YAML 파일 샘플과 유사할 수 있습니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: import-controller-config
      namespace: multicluster-engine
    data:
      clusterImportConfig: "true"
    Copy to Clipboard Toggle word wrap
    1. ConfigMap 리소스가 없는 경우 다음 명령을 실행하여 변경 사항을 적용합니다. &lt ;filename& gt;을 파일 이름으로 바꿉니다.

      oc apply -f <filename>.yaml
      Copy to Clipboard Toggle word wrap
    2. ConfigMap 리소스가 이미 있는 경우 다음 명령을 실행하여 변경 사항을 적용합니다.
    oc patch configmap import-controller-config -n multicluster-engine --type merge -p '{"data":{"clusterImportConfig":"true"}}'
    Copy to Clipboard Toggle word wrap
  3. 가져오기 컨트롤러 서비스 계정에 클러스터 API 관리자 권한을 바인딩합니다. 다음 YAML 파일 샘플을 추가합니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: cluster-manager-registration-capi
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: capi-manager-role
    subjects:
    - kind: ServiceAccount
      name: registration-controller-sa
      namespace: open-cluster-management-hub
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 변경 사항을 적용합니다. &lt ;filename& gt;을 파일 이름으로 바꿉니다.

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

1.11.2.2. ManagedCluster 리소스 생성

자동 가져오기를 활성화하려면 클러스터 API 클러스터와 동일한 이름 및 네임스페이스를 사용하여 ManagedCluster 리소스를 생성합니다. 다음 단계를 완료합니다.

  1. 다음 YAML 샘플을 추가하여 ManagedCluster 리소스를 생성합니다. Cluster API 클러스터의 이름을 name 매개변수에 추가합니다.

    apiVersion: cluster.open-cluster-management.io/v1
    kind: ManagedCluster
    metadata:
      name: <clusterapi_cluster_name>
    spec:
      hubAcceptsClient: true
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 변경 사항을 적용합니다. &lt ;filename& gt;을 파일 이름으로 바꿉니다.

    oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

클러스터 API를 사용하여 관리 클러스터를 배포할 때 IAM(Identity and Access Management) 역할을 사용하도록 전환할 수 있습니다. AWS(Amazon Web Services) 인증 정보를 사용하여 관리형 클러스터를 생성한 경우 AWS 인증 정보에서 IAM 역할로 전환하여 cluster-api-provider-aws 를 사용하여 관리형 클러스터에 AWS 인증 정보를 저장하지 않고 AWS에서 호스팅 컨트롤 플레인 클러스터와 함께 Red Hat OpenShift Service를 생성할 수 있습니다.

필수 액세스: 클러스터 관리자

사전 요구 사항

  • AWS 인증 정보를 사용하여 생성한 호스팅 컨트롤 플레인 부트스트랩 클러스터가 있는 AWS에 Red Hat OpenShift Container Platform 또는 Red Hat OpenShift Service가 필요합니다. 임시 인증 정보를 사용할 수 있습니다. 자세한 내용은 AWS 문서의 임시 보안 인증 정보 요청을 참조하십시오.
  • 부트스트랩 클러스터에 Red Hat Advanced Cluster Management for Kubernetes가 설치되어 있어야 합니다.
  • 클러스터 API 및 클러스터 API 공급자 AWS를 활성화하기 전에 HyperShift 구성 요소를 비활성화해야 합니다.

프로세스

다음 단계를 완료합니다.

  1. MultiClusterEngine 리소스를 편집합니다. 다음 명령을 실행합니다.

    oc edit multiclusterengine engine
    Copy to Clipboard Toggle word wrap
  2. hypershifthypershift-local-hosting 구성 요소를 비활성화하고 cluster-apicluster-api-provider-aws 구성 요소를 활성화합니다. 다음 예제를 참조하십시오.

    - configOverrides: {}
      enabled: false
      name: hypershift
    - configOverrides: {}
      enabled: false
      name: hypershift-local-hosting
    - configOverrides: {}
      enabled: true
      name: cluster-api
    - configOverrides: {}
      enabled: true
      name: cluster-api-provider-aws
    Copy to Clipboard Toggle word wrap
  3. Cluster API 및 Cluster API 공급자 AWS 배포가 실행 중인지 확인합니다. 다음 명령을 실행합니다.

    oc get deploy -n multicluster-engine
    Copy to Clipboard Toggle word wrap

    출력은 다음 예와 유사할 수 있습니다.

    NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
    capa-controller-manager               1/1     1            1           12d
    capi-controller-manager               1/1     1            1           12d
    Copy to Clipboard Toggle word wrap
  4. Cluster API Provider AWS 컨트롤러 서비스 계정을 업데이트할 수 있도록 MultiClusterEngine 사용자 정의 리소스를 일시 중지합니다. 다음 명령을 실행합니다.

    oc annotate mce multiclusterengine installer.multicluster.openshift.io/pause=true
    Copy to Clipboard Toggle word wrap
  5. OpenID Connect(OIDC) 공급자 세부 정보를 검색합니다. 다음 명령을 실행합니다.

    export OIDC_PROVIDER=$(oc get authentication.config.openshift.io cluster -ojson | jq -r .spec.serviceAccountIssuer | sed 's/https:\/\///')
    Copy to Clipboard Toggle word wrap
  6. AWS 계정 ID를 설정합니다. 다음 명령을 실행합니다. 계정 ID 값을 변경합니다.

    export AWS_ACCOUNT_ID={YOUR_AWS_ACCOUNT_ID}
    Copy to Clipboard Toggle word wrap
  7. capa-controller-manager IAM 역할에 대한 신뢰 정책 파일을 생성합니다. 다음 명령을 실행합니다.

    cat ./trust.json
    Copy to Clipboard Toggle word wrap
  8. 파일에 다음 콘텐츠를 추가하여 연결된 IAM 역할을 가정할 수 있는 사용자를 정의합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "${OIDC_PROVIDER}:sub": "system:serviceaccount:multicluster-engine:capa-controller-manager"
            }
          }
        }
      ]
    }
    Copy to Clipboard Toggle word wrap
  9. IAM 역할을 생성하고 필요한 AWS 정책을 연결합니다. 다음 명령을 실행합니다.

    aws iam create-role --role-name "capa-manager-role" --assume-role-policy-document file://trust.json --description "IAM role for CAPA to assume"
    
    aws iam attach-role-policy --role-name capa-manager-role --policy-arn arn:aws:iam::aws:policy/AWSCloudFormationFullAccess
    
    aws iam attach-role-policy --role-name capa-manager-role --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess
    Copy to Clipboard Toggle word wrap
  10. IAM 역할 Amazon Resource Name(ARN)을 검색합니다. 다음 명령을 실행합니다.

    export APP_IAM_ROLE_ARN=$(aws iam get-role --role-name=capa-manager-role --query Role.Arn --output text)
    
    export IRSA_ROLE_ARN=eks.amazonaws.com/role-arn=$APP_IAM_ROLE_ARN
    Copy to Clipboard Toggle word wrap
  11. IAM 역할 ARN으로 서비스 계정에 주석을 답니다. 다음 명령을 실행합니다.

    oc annotate serviceaccount -n multicluster-engine capa-controller-manager $IRSA_ROLE_ARN
    Copy to Clipboard Toggle word wrap
  12. 클러스터 API 공급자 AWS 배포를 다시 시작합니다. 다음 명령을 실행합니다.

    oc rollout restart deployment capa-controller-manager -n multicluster-engine
    Copy to Clipboard Toggle word wrap

호스팅된 컨트롤 플레인 클러스터가 있는 AWS의 Red Hat OpenShift Service는 클러스터 컨트롤 플레인이 Red Hat Amazon Web Services(AWS) 계정에서 호스팅 및 관리되는 AWS의 Red Hat OpenShift Service의 배포 모델입니다. Cluster API를 사용하여 호스팅된 컨트롤 플레인 클러스터가 있는 AWS에서 Red Hat OpenShift Service를 생성하려면 다음 항목의 단계를 완료합니다.

필수 액세스: 클러스터 관리자

사전 요구 사항

1.11.4.1. 서비스 계정 생성

호스팅된 컨트롤 플레인 클러스터를 사용하여 AWS에서 Red Hat OpenShift Service를 생성하기 전에 서비스 계정이 필요합니다. 서비스 계정이 있는 경우 이 섹션을 완료할 필요가 없습니다.

프로세스

다음 단계를 완료합니다.

  1. 콘솔에서 Identity & Access Management & gt; 서비스 계정으로 이동하여 서비스 계정을 생성합니다.
  2. 서비스 계정 생성 버튼을 클릭합니다.
  3. 생성하는 모든 새 서비스 계정에 대해 ROSA CLI를 사용하여 계정을 활성화합니다.

    1. 새 서비스 계정에 로그인합니다. 다음 명령을 실행합니다. 필요한 경우 값을 바꿉니다.

      rosa login --client-id <your-client-id> --client-secret <your-client-secret>
      Copy to Clipboard Toggle word wrap
    2. 서비스 계정을 활성화합니다. 다음 명령을 실행합니다.
    rosa whoami
    Copy to Clipboard Toggle word wrap

1.11.4.2. AWS 인증 정보 설정

호스팅된 컨트롤 플레인 클러스터를 사용하여 AWS에서 Red Hat OpenShift Service를 생성하기 전에 AWS 인증 정보를 설정해야 합니다. 다음 단계를 완료합니다.

  1. AWS와 함께 다단계 인증을 사용하지 않는 경우 생성한 AWS 액세스 키를 사용하여 AWS 인증 정보를 설정합니다. 다음 명령을 실행합니다. 필요한 경우 값을 바꿉니다.

    echo '[default]
    aws_access_key_id = <your-access-key>
    aws_secret_access_key = <your-secret-access-key>
    region = us-east-1
    ' | base64 -w 0
    Copy to Clipboard Toggle word wrap
  2. AWS에서 다단계 인증을 사용하는 경우 다음 명령을 실행합니다. 필요한 경우 값을 바꿉니다.

    echo '[default]
    aws_access_key_id = <your-access-key>
    aws_secret_access_key = <your-secret-access-key>
    aws_session_token= <your-aws-session-token>
    region = us-east-1
    ' | base64 -w 0
    Copy to Clipboard Toggle word wrap
  3. capa-manager-bootstrap-credentials 시크릿을 업데이트합니다.

    1. 이전 명령의 출력을 복사하고 capa-manager-bootstrap-credentials 시크릿에 출력을 추가합니다. 다음 명령을 실행하여 보안을 편집합니다.

      oc edit secret -n multicluster-engine capa-manager-bootstrap-credentials
      Copy to Clipboard Toggle word wrap
    2. 출력을 credentials 필드에 추가합니다. 다음 예제를 참조하십시오.

      apiVersion: v1
      data:
        credentials: <your-aws-credentials>
      kind: Secret
      metadata:
      	name: capa-manager-bootstrap-credentials
      	namespace: multicluster-engine
      Copy to Clipboard Toggle word wrap

      선택 사항: 서비스 계정과 함께 AWS IAM 역할을 사용하여 capa-controller-manager 를 인증하려면 추가 리소스 섹션을 확인하고 클러스터 API 관리 클러스터(기술 프리뷰)에서 AWS 인증 정보에서 IAM 역할로 전환하는 단계를 완료합니다.

  4. capa-controller-manager 배포를 다시 시작합니다. 다음 명령을 실행합니다.

    oc rollout restart deployment capa-controller-manager -n multicluster-engine
    Copy to Clipboard Toggle word wrap

1.11.4.3. OpenShift Cluster Manager 인증

AWS 컨트롤러용 클러스터 API 공급자에는 호스팅되는 컨트롤 플레인을 사용하여 AWS에서 Red Hat OpenShift Service를 프로비저닝하기 위해 OpenShift Cluster Manager 인증 정보가 필요합니다. 다음 단계를 완료합니다.

  1. 생성한 서비스 계정 인증 정보를 사용하여 대상 네임스페이스에 Kubernetes 시크릿을 생성합니다. ROSAControlPlane 리소스는 프로비저닝 중에 이 시크릿을 참조합니다. 다음 명령을 실행합니다. 필요한 경우 값을 바꿉니다.

    oc create namespace <your-rosa-hcp-namespace>
      oc -n <your-rosa-hcp-namespace> create secret generic rosa-creds-secret \
        --from-literal=ocmClientID='....' \
        --from-literal=ocmClientSecret='eyJhbGciOiJIUzI1NiIsI....' \
        --from-literal=ocmApiUrl='https://api.openshift.com'
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: 보안 rosa-creds-secret 을 호출하고 multicluster-engine 네임스페이스에서 생성하여 ROSAControlPlane 리소스에서 시크릿을 참조하지 않고 사용할 수 있습니다. 다음 명령을 실행합니다.

    oc -n multicluster-engine create secret generic rosa-creds-secret \
      --from-literal=ocmClientID='....' \
      --from-literal=ocmClientSecret='eyJhbGciOiJIUzI1NiIsI....' \
      --from-literal=ocmApiUrl='https://api.openshift.com'
    Copy to Clipboard Toggle word wrap

서비스 계정을 생성하고 AWS 인증 정보를 설정한 후 OpenShift Cluster Manager 인증 정보를 인증하는 다음 단계를 완료하여 호스팅된 컨트롤 플레인 클러스터를 사용하여 AWS에서 Red Hat OpenShift Service를 생성합니다.

  1. AWSClusterControllerIdentity 리소스를 생성합니다. 다음 YAML 파일 샘플을 참조하십시오.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
    kind: AWSClusterControllerIdentity
    metadata:
      name: "default"
    spec:
      allowedNamespaces: {}
    Copy to Clipboard Toggle word wrap
  2. ROSARoleConfig 리소스를 만듭니다. 다음 YAML 파일 샘플을 참조하십시오.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
    kind: ROSARoleConfig
    metadata:
      name: "role-config"
      namespace: "ns-rosa-hcp"
    spec:
      accountRoleConfig:
        prefix: "rosa"
        version: "4.20.0"
      operatorRoleConfig:
        prefix: "rosa"
      credentialsSecretRef:
        name: rosa-creds-secret
      oidcProviderType: Managed
    Copy to Clipboard Toggle word wrap
  3. ROSANetwork 리소스를 만듭니다. 다음 YAML 파일 샘플을 참조하십시오.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
    kind: ROSANetwork
    metadata:
      name: "rosa-vpc"
      namespace: "ns-rosa-hcp"
      spec:
        region: "us-west-2"
        stackName: "rosa-hcp-net"
        availabilityZones:
        - "us-west-2a"
        - "us-west-2b"
        - "us-west-2c"
        cidrBlock: 10.0.0.0/16
        identityRef:
          kind: AWSClusterControllerIdentity
          name: default
    Copy to Clipboard Toggle word wrap
  4. ROSARoleConfig 리소스가 생성되었는지 확인합니다. ROSARoleConfig 상태에 accountRolesRef,oidcID,oidcProviderARN, operatorRolesRef 가 포함되어 있는지 확인합니다. 다음 명령을 실행합니다.

    oc get rosaroleconfig  -n ns-rosa-hcp role-config -o yaml
    Copy to Clipboard Toggle word wrap
  5. ROSANetwork 리소스가 생성되었는지 확인합니다. ROSANetwork 상태에는 생성된 서브넷이 포함되어 있습니다. 다음 명령을 실행합니다.

    oc get rosanetwork -n ns-rosa-hcp rosa-vpc -o yaml
    Copy to Clipboard Toggle word wrap
  6. ROSAControlPlane 리소스에 필요한 사용자 지정 리소스를 생성합니다.

    1. 다음 YAML 파일 콘텐츠를 사용하여 ManagedCluster 리소스를 생성합니다.

      apiVersion: cluster.open-cluster-management.io/v1
      kind: ManagedCluster
      metadata:
        name: rosa-hcp-1
        spec:
          hubAcceptsClient: true
      Copy to Clipboard Toggle word wrap
    2. 다음 YAML 파일 콘텐츠를 사용하여 Cluster 리소스를 생성합니다.

      apiVersion: cluster.x-k8s.io/v1beta1
      kind: Cluster
      metadata:
        name: "rosa-hcp-1"
        namespace: "ns-rosa-hcp"
        spec:
          clusterNetwork:
            pods:
              cidrBlocks: ["192.168.0.0/16"]
          infrastructureRef:
            apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
            kind: ROSACluster
            name: "rosa-hcp-1"
            namespace: "ns-rosa-hcp"
          controlPlaneRef:
            apiVersion: controlplane.cluster.x-k8s.io/v1beta2
            kind: ROSAControlPlane
            name: "rosa-cp-1"
            namespace: "ns-rosa-hcp"
      Copy to Clipboard Toggle word wrap
  7. 다음 YAML 파일 콘텐츠를 사용하여 ROSACluster 리소스를 생성합니다.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
    kind: ROSACluster
    metadata:
      name: "rosa-hcp-1"
      namespace: "ns-rosa-hcp"
      spec: {}
    Copy to Clipboard Toggle word wrap
  8. 다음 YAML 파일 콘텐츠를 사용하여 ROSAControlPlane 리소스를 생성합니다. 리전ROSANetwork 리소스를 생성하는 데 사용한 AWS 리전과 일치하는지 확인합니다.

    apiVersion: controlplane.cluster.x-k8s.io/v1beta2
    kind: ROSAControlPlane
    metadata:
      name: "rosa-cp-1"
      namespace: "ns-rosa-hcp"
      spec:
        credentialsSecretRef:
          name: rosa-creds-secret
        rosaClusterName: rosa-hcp-1
        domainPrefix: rosa-hcp
        rosaRoleConfigRef:
          name: role-config
        version: "4.20.0"
        region: "us-west-2"
        rosaNetworkRef:
          name: "rosa-vpc"
        network:
          machineCIDR: "10.0.0.0/16"
          podCIDR: "10.128.0.0/14"
          serviceCIDR: "172.30.0.0/16"
        defaultMachinePoolSpec:
          instanceType: "m5.xlarge"
          autoscaling:
            maxReplicas: 6
            minReplicas: 3
        additionalTags:
          env: "demo"
          profile: "hcp"
    Copy to Clipboard Toggle word wrap
  9. ROSAControlPlane 상태를 확인합니다. 다음 명령을 실행합니다. READY 열이 true 로 표시되는지 확인합니다.

    oc get ROSAControlPlane rosa-cp-1 -n ns-rosa-hcp
    Copy to Clipboard Toggle word wrap

    참고: 호스팅된 컨트롤 플레인 클러스터가 있는 AWS의 Red Hat OpenShift Service는 완전히 프로비저닝되려면 최대 40분 정도 걸릴 수 있습니다.

  10. ROSAControlPlane 리소스 프로비저닝이 완료된 후 ROSAMachinePool 이 생성되었는지 확인합니다. 다음 명령을 실행합니다.

    oc get ROSAMachinePool -n ns-rosa-hcp
    Copy to Clipboard Toggle word wrap

    다음 출력이 표시될 수 있습니다.

    NAMESPACE     NAME        READY   REPLICAS
    ns-rosa-hcp   workers-0   true    1
    ns-rosa-hcp   workers-1   true    1
    ns-rosa-hcp   workers-2   true    1
    Copy to Clipboard Toggle word wrap

    참고: 사용 가능한 기본 ROSAMachinePools 수는 할당된 가용성 영역을 기반으로 합니다.

1.11.4.5. 추가 리소스

ROSAControlPlane 를 삭제하면 호스팅된 컨트롤 플레인 클러스터를 사용하여 AWS에서 Red Hat OpenShift Service가 프로비저닝 해제됩니다. 이 프로세스를 완료하는 데 30~50분이 걸립니다. 연결된 ROSAMachinePool 리소스가 자동으로 삭제됩니다.

필수 액세스: 클러스터 관리자

전제 조건

  • 클러스터 API가 있는 호스팅 컨트롤 플레인 클러스터가 있는 AWS에 Red Hat OpenShift Service가 있어야 합니다.

프로세스

  1. ROSAControlPlane 사용자 정의 리소스 및 일치하는 클러스터 사용자 정의 리소스를 삭제합니다. 다음 명령을 실행합니다. 필요한 경우 값을 바꿉니다.

    oc delete -n ns-rosa-hcp cluster/rosa-hcp-1 rosacontrolplane/rosa-cp-1
    Copy to Clipboard Toggle word wrap
  2. ROSAControlPlane 삭제가 완료되면 ROSARoleConfigROSANetwork 리소스를 삭제합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat