12.3. 컨트롤 플레인 머신 세트 구성


이 예제 YAML 파일 및 스니펫에서는 컨트롤 플레인 머신 세트 CR(사용자 정의 리소스) 및 공급자 사양 및 실패 도메인 구성에 대한 플랫폼별 샘플의 기본 구조를 보여줍니다.

12.3.1. 컨트롤 플레인 머신 세트 사용자 정의 리소스의 샘플 YAML

ControlPlaneMachineSet CR의 기반은 모든 플랫폼에 대해 동일한 방식으로 구성됩니다.

ControlPlaneMachineSet CR YAML 파일 샘플

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster 1
  namespace: openshift-machine-api
spec:
  replicas: 3 2
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: <cluster_id> 3
      machine.openshift.io/cluster-api-machine-role: master
      machine.openshift.io/cluster-api-machine-type: master
  state: Active 4
  strategy:
    type: RollingUpdate 5
  template:
    machineType: machines_v1beta1_machine_openshift_io
    machines_v1beta1_machine_openshift_io:
      failureDomains:
        platform: <platform> 6
        <platform_failure_domains> 7
      metadata:
        labels:
          machine.openshift.io/cluster-api-cluster: <cluster_id>
          machine.openshift.io/cluster-api-machine-role: master
          machine.openshift.io/cluster-api-machine-type: master
      spec:
        providerSpec:
          value:
            <platform_provider_spec> 8

1
클러스터ControlPlaneMachineSet CR의 이름을 지정합니다. 이 값은 변경하지 마십시오.
2
컨트롤 플레인 머신 수를 지정합니다. 컨트롤 플레인 시스템이 세 개인 클러스터만 지원되므로 replicas 값은 3 입니다. 수평 스케일링은 지원되지 않습니다. 이 값은 변경하지 마십시오.
3
클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다. ControlPlaneMachineSet CR을 생성할 때 이 값을 지정해야 합니다. OpenShift CLI (oc) 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
4
Operator의 상태를 지정합니다. 상태가 Inactive 이면 Operator가 작동하지 않습니다. 값을 Active 로 설정하여 Operator를 활성화할 수 있습니다.
중요

Operator를 활성화하기 전에 클러스터 요구 사항에 맞게 ControlPlaneMachineSet CR 구성이 올바른지 확인해야 합니다. 컨트롤 플레인 머신 세트 Operator 활성화에 대한 자세한 내용은 "컨트롤 플레인 머신 세트 시작"을 참조하십시오.

5
클러스터의 업데이트 전략을 지정합니다. 허용되는 값은 OnDeleteRollingUpdate 입니다. 기본값은 RollingUpdate 입니다. 업데이트 전략에 대한 자세한 내용은 "컨트롤 플레인 구성 업데이트"를 참조하십시오.
6
클라우드 공급자 플랫폼 이름을 지정합니다. 이 값은 변경하지 마십시오.
7
클러스터에 대한 & lt;platform_failure_domains& gt; 구성을 지정합니다. 이 섹션의 형식과 값은 공급자에 따라 다릅니다. 자세한 내용은 클라우드 공급자의 샘플 실패 도메인 구성을 참조하십시오.
참고

VMware vSphere는 장애 도메인을 지원하지 않습니다.

8
클러스터의 &lt ;platform_provider_spec& gt; 구성을 지정합니다. 이 섹션의 형식과 값은 공급자에 따라 다릅니다. 자세한 내용은 클라우드 공급자의 샘플 공급자 사양을 참조하십시오.
공급자별 구성

컨트롤 플레인 머신 세트 리소스의 < platform_provider_spec > 및 <platform_failure_domains > 섹션은 공급자마다 다릅니다. 클러스터의 예제 YAML을 참조하십시오.

12.3.2. Amazon Web Services 클러스터 구성을 위한 샘플 YAML

컨트롤 플레인 머신 세트 CR의 일부 섹션은 공급자별로 다릅니다. 이 섹션의 예제 YAML에는 AWS(Amazon Web Services) 클러스터의 공급자 사양 및 실패 도메인 구성이 표시되어 있습니다.

12.3.2.1. 샘플 AWS 공급자 사양

기존 클러스터에 대한 컨트롤 플레인 머신 세트를 생성할 때 공급자 사양이 설치 프로그램에 의해 생성된 컨트롤 플레인 머신 CR의 providerSpec 구성과 일치해야 합니다. CR의 failure domain 섹션에 설정된 모든 필드를 생략할 수 있습니다.

다음 예에서 < cluster_id >는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID입니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster

샘플 AWS providerSpec

providerSpec:
  value:
    ami:
      id: ami-<ami_id_string> 1
    apiVersion: machine.openshift.io/v1beta1
    blockDevices:
    - ebs: 2
        encrypted: true
        iops: 0
        kmsKey:
          arn: ""
        volumeSize: 120
        volumeType: gp3
    credentialsSecret:
      name: aws-cloud-credentials 3
    deviceIndex: 0
    iamInstanceProfile:
      id: <cluster_id>-master-profile 4
    instanceType: m6i.xlarge 5
    kind: AWSMachineProviderConfig 6
    loadBalancers: 7
    - name: <cluster_id>-int
      type: network
    - name: <cluster_id>-ext
      type: network
    metadata:
      creationTimestamp: null
    metadataServiceOptions: {}
    placement: 8
      region: <region> 9
    securityGroups:
    - filters:
      - name: tag:Name
        values:
        - <cluster_id>-master-sg 10
    subnet: {} 11
    userDataSecret:
      name: master-user-data 12

1
클러스터의 RHCOS(Red Hat Enterprise Linux CoreOS) Amazon 머신 이미지(AMI) ID를 지정합니다. AMI는 클러스터와 동일한 리전에 속해 있어야 합니다. AWS Marketplace 이미지를 사용하려면 리전의 AMI ID를 얻으려면 AWS Marketplace 에서 OpenShift Container Platform 서브스크립션을 완료해야 합니다.
2
암호화된 EBS 볼륨의 구성을 지정합니다.
3
클러스터의 시크릿 이름을 지정합니다. 이 값은 변경하지 마십시오.
4
AWS IAM(Identity and Access Management) 인스턴스 프로필을 지정합니다. 이 값은 변경하지 마십시오.
5
컨트롤 플레인의 AWS 인스턴스 유형을 지정합니다.
6
클라우드 공급자 플랫폼 유형을 지정합니다. 이 값은 변경하지 마십시오.
7
클러스터의 내부(int) 및 외부(ext) 로드 밸런서를 지정합니다.
참고

프라이빗 OpenShift Container Platform 클러스터에서 외부(ext) 로드 밸런서 매개변수를 생략할 수 있습니다.

8
이 매개변수는 실패 도메인에 구성되며 여기에 빈 값으로 표시됩니다. 이 매개변수에 지정된 값이 실패 도메인의 값과 다른 경우 Operator는 실패 도메인의 값으로 덮어씁니다.
9
클러스터의 AWS 리전을 지정합니다.
10
컨트롤 플레인 시스템 보안 그룹을 지정합니다.
11
이 매개변수는 실패 도메인에 구성되며 여기에 빈 값으로 표시됩니다. 이 매개변수에 지정된 값이 실패 도메인의 값과 다른 경우 Operator는 실패 도메인의 값으로 덮어씁니다.
12
컨트롤 플레인 사용자 데이터 시크릿을 지정합니다. 이 값은 변경하지 마십시오.

12.3.2.2. AWS 실패 도메인 구성 샘플

장애 도메인의 컨트롤 플레인 머신 세트 개념은 기존 AWS의 가용성 영역(AZ) 개념과 유사합니다. ControlPlaneMachineSet CR은 가능한 경우 컨트롤 플레인 머신을 여러 장애 도메인에 분배합니다.

컨트롤 플레인 머신 세트에서 AWS 실패 도메인을 구성할 때 사용할 가용성 영역 이름과 서브넷을 지정해야 합니다.

AWS 실패 도메인 값 샘플

failureDomains:
  aws:
  - placement:
      availabilityZone: <aws_zone_a> 1
    subnet: 2
      filters:
      - name: tag:Name
        values:
        - <cluster_id>-private-<aws_zone_a> 3
      type: Filters 4
  - placement:
      availabilityZone: <aws_zone_b> 5
    subnet:
      filters:
      - name: tag:Name
        values:
        - <cluster_id>-private-<aws_zone_b> 6
      type: Filters
  platform: AWS 7

1
첫 번째 실패 도메인의 AWS 가용성 영역을 지정합니다.
2
서브넷 구성을 지정합니다. 이 예제에서 서브넷 유형은 Filters 이므로 필터 스탠자가 있습니다.
3
인프라 ID 및 AWS 가용성 영역을 사용하여 첫 번째 실패 도메인의 서브넷 이름을 지정합니다.
4
서브넷 유형을 지정합니다. 허용되는 값은 ARN,필터ID 입니다. 기본값은 Filters 입니다.
5
인프라 ID 및 AWS 가용성 영역을 사용하여 추가 실패 도메인의 서브넷 이름을 지정합니다.
6
추가 실패 도메인에 대한 클러스터의 인프라 ID 및 AWS 가용 영역을 지정합니다.
7
클라우드 공급자 플랫폼 이름을 지정합니다. 이 값은 변경하지 마십시오.

12.3.3. Google Cloud Platform 클러스터 구성을 위한 샘플 YAML

컨트롤 플레인 머신 세트 CR의 일부 섹션은 공급자별로 다릅니다. 이 섹션의 예제 YAML에는 GCP(Google Cloud Platform) 클러스터의 공급자 사양 및 실패 도메인 구성이 표시되어 있습니다.

12.3.3.1. 샘플 GCP 공급자 사양

기존 클러스터에 대한 컨트롤 플레인 머신 세트를 생성할 때 공급자 사양은 설치 프로그램에서 생성한 컨트롤 플레인 머신 CR(사용자 정의 리소스)의 providerSpec 구성과 일치해야 합니다. CR의 failure domain 섹션에 설정된 모든 필드를 생략할 수 있습니다.

OpenShift CLI를 사용하여 얻은 값

다음 예제에서는 OpenShift CLI를 사용하여 클러스터의 일부 값을 가져올 수 있습니다.

인프라 ID

& lt;cluster_id > 문자열은 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID입니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
이미지 경로

& lt;path_to_image > 문자열은 디스크를 만드는 데 사용된 이미지의 경로입니다. OpenShift CLI가 설치되어 있으면 다음 명령을 실행하여 이미지에 대한 경로를 얻을 수 있습니다.

$ oc -n openshift-machine-api \
  -o jsonpath='{.spec.template.machines_v1beta1_machine_openshift_io.spec.providerSpec.value.disks[0].image}{"\n"}' \
  get ControlPlaneMachineSet/cluster

샘플 GCP providerSpec

apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
  name: cluster
  namespace: openshift-machine-api
spec:
# ...
  template:
# ...
      spec:
        providerSpec:
          value:
            apiVersion: machine.openshift.io/v1beta1
            canIPForward: false
            credentialsSecret:
              name: gcp-cloud-credentials 1
            deletionProtection: false
            disks:
            - autoDelete: true
              boot: true
              image: <path_to_image> 2
              labels: null
              sizeGb: 200
              type: pd-ssd
            kind: GCPMachineProviderSpec 3
            machineType: e2-standard-4
            metadata:
              creationTimestamp: null
            metadataServiceOptions: {}
            networkInterfaces:
            - network: <cluster_id>-network
              subnetwork: <cluster_id>-master-subnet
            projectID: <project_name> 4
            region: <region> 5
            serviceAccounts: 6
            - email: <cluster_id>-m@<project_name>.iam.gserviceaccount.com
              scopes:
              - https://www.googleapis.com/auth/cloud-platform
            shieldedInstanceConfig: {}
            tags:
            - <cluster_id>-master
            targetPools:
            - <cluster_id>-api
            userDataSecret:
              name: master-user-data 7
            zone: "" 8

1
클러스터의 시크릿 이름을 지정합니다. 이 값은 변경하지 마십시오.
2
디스크를 만드는 데 사용된 이미지의 경로를 지정합니다.

GCP Marketplace 이미지를 사용하려면 사용할 오퍼를 지정합니다.

  • OpenShift Container Platform: https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-ocp-413-x86-64-202305021736
  • OpenShift Platform Plus: https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-opp-413-x86-64-202305021736
  • OpenShift Kubernetes Engine: https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-oke-413-x86-64-202305021736
3
클라우드 공급자 플랫폼 유형을 지정합니다. 이 값은 변경하지 마십시오.
4
클러스터에 사용하는 GCP 프로젝트의 이름을 지정합니다.
5
클러스터의 GCP 리전을 지정합니다.
6
단일 서비스 계정을 지정합니다. 여러 서비스 계정이 지원되지 않습니다.
7
컨트롤 플레인 사용자 데이터 시크릿을 지정합니다. 이 값은 변경하지 마십시오.
8
이 매개변수는 실패 도메인에 구성되며 여기에 빈 값으로 표시됩니다. 이 매개변수에 지정된 값이 실패 도메인의 값과 다른 경우 Operator는 실패 도메인의 값으로 덮어씁니다.

12.3.3.2. 샘플 GCP 실패 도메인 구성

장애 도메인의 컨트롤 플레인 머신 세트 개념은 영역 의 기존 GCP 개념과 유사합니다. ControlPlaneMachineSet CR은 가능한 경우 컨트롤 플레인 머신을 여러 장애 도메인에 분배합니다.

컨트롤 플레인 머신 세트에서 GCP 실패 도메인을 구성할 때 사용할 영역 이름을 지정해야 합니다.

샘플 GCP 실패 도메인 값

failureDomains:
  gcp:
  - zone: <gcp_zone_a> 1
  - zone: <gcp_zone_b> 2
  - zone: <gcp_zone_c>
  - zone: <gcp_zone_d>
  platform: GCP 3

1
첫 번째 실패 도메인의 GCP 영역을 지정합니다.
2
추가 실패 도메인을 지정합니다. 추가 실패 도메인은 동일한 방식으로 추가됩니다.
3
클라우드 공급자 플랫폼 이름을 지정합니다. 이 값은 변경하지 마십시오.

12.3.4. Microsoft Azure 클러스터 구성을 위한 샘플 YAML

컨트롤 플레인 머신 세트 CR의 일부 섹션은 공급자별로 다릅니다. 이 섹션의 예제 YAML에는 Azure 클러스터의 공급자 사양 및 실패 도메인 구성이 표시되어 있습니다.

12.3.4.1. Azure 공급자 사양 샘플

기존 클러스터에 대한 컨트롤 플레인 머신 세트를 생성할 때 공급자 사양이 설치 프로그램에 의해 생성된 컨트롤 플레인 머신 CR의 providerSpec 구성과 일치해야 합니다. CR의 failure domain 섹션에 설정된 모든 필드를 생략할 수 있습니다.

다음 예에서 < cluster_id >는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID입니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster

샘플 Azure providerSpec

providerSpec:
  value:
    acceleratedNetworking: true
    apiVersion: machine.openshift.io/v1beta1
    credentialsSecret:
      name: azure-cloud-credentials 1
      namespace: openshift-machine-api
    diagnostics: {}
    image: 2
      offer: ""
      publisher: ""
      resourceID: /resourceGroups/<cluster_id>-rg/providers/Microsoft.Compute/galleries/gallery_<cluster_id>/images/<cluster_id>-gen2/versions/412.86.20220930 3
      sku: ""
      version: ""
    internalLoadBalancer: <cluster_id>-internal 4
    kind: AzureMachineProviderSpec 5
    location: <region> 6
    managedIdentity: <cluster_id>-identity
    metadata:
      creationTimestamp: null
      name: <cluster_id>
    networkResourceGroup: <cluster_id>-rg
    osDisk: 7
      diskSettings: {}
      diskSizeGB: 1024
      managedDisk:
        storageAccountType: Premium_LRS
      osType: Linux
    publicIP: false
    publicLoadBalancer: <cluster_id> 8
    resourceGroup: <cluster_id>-rg
    subnet: <cluster_id>-master-subnet 9
    userDataSecret:
      name: master-user-data 10
    vmSize: Standard_D8s_v3
    vnet: <cluster_id>-vnet
    zone: "" 11

1
클러스터의 시크릿 이름을 지정합니다. 이 값은 변경하지 마십시오.
2
컨트롤 플레인 머신 세트의 이미지 세부 정보를 지정합니다.
3
인스턴스 유형과 호환되는 이미지를 지정합니다. 설치 프로그램에 의해 생성된 Hyper-V 생성 V2 이미지에는 -gen2 접미사가 있으며 V1 이미지는 접미사 없이 이름이 동일합니다.
4
컨트롤 플레인의 내부 로드 밸런서를 지정합니다. 이 필드는 사전 구성되지 않을 수 있지만 ControlPlane Machine Set 및 컨트롤 플레인 머신 CR 모두에 필요합니다.
5
클라우드 공급자 플랫폼 유형을 지정합니다. 이 값은 변경하지 마십시오.
6
컨트롤 플레인 시스템을 배치할 리전을 지정합니다.
7
컨트롤 플레인의 디스크 구성을 지정합니다.
8
컨트롤 플레인의 공용 로드 밸런서를 지정합니다.
참고

사용자 정의 아웃 바운드 라우팅이 있는 프라이빗 OpenShift Container Platform 클러스터에서 publicLoadBalancer 매개변수를 생략할 수 있습니다.

9
컨트롤 플레인의 서브넷을 지정합니다.
10
컨트롤 플레인 사용자 데이터 시크릿을 지정합니다. 이 값은 변경하지 마십시오.
11
이 매개변수는 실패 도메인에 구성되며 여기에 빈 값으로 표시됩니다. 이 매개변수에 지정된 값이 실패 도메인의 값과 다른 경우 Operator는 실패 도메인의 값으로 덮어씁니다.

12.3.4.2. Azure 실패 도메인 구성 샘플

장애 도메인의 컨트롤 플레인 머신 세트는 Azure 가용성 영역의 기존 Azure 개념과 유사합니다. ControlPlaneMachineSet CR은 가능한 경우 컨트롤 플레인 머신을 여러 장애 도메인에 분배합니다.

컨트롤 플레인 머신 세트에서 Azure 실패 도메인을 구성할 때 가용성 영역 이름을 지정해야 합니다.

Azure 실패 도메인 값 샘플

failureDomains:
  azure: 1
  - zone: "1"
  - zone: "2"
  - zone: "3"
  platform: Azure 2

1
영역 의 각 인스턴스는 실패 도메인에 대한 Azure 가용성 영역을 지정합니다.
2
클라우드 공급자 플랫폼 이름을 지정합니다. 이 값은 변경하지 마십시오.

12.3.5. VMware vSphere 클러스터 구성을 위한 샘플 YAML

컨트롤 플레인 머신 세트 CR의 일부 섹션은 공급자별로 다릅니다. 이 섹션의 예제 YAML은 VMware vSphere 클러스터에 대한 공급자 사양 구성을 보여줍니다.

12.3.5.1. 샘플 vSphere 공급자 사양

기존 클러스터에 대한 컨트롤 플레인 머신 세트를 생성할 때 공급자 사양이 설치 프로그램에 의해 생성된 컨트롤 플레인 머신 CR의 providerSpec 구성과 일치해야 합니다.

vSphere providerSpec 값 샘플

providerSpec:
  value:
    apiVersion: machine.openshift.io/v1beta1
    credentialsSecret:
      name: vsphere-cloud-credentials 1
    diskGiB: 120 2
    kind: VSphereMachineProviderSpec 3
    memoryMiB: 16384 4
    metadata:
      creationTimestamp: null
    network: 5
      devices:
      - networkName: <vm_network_name>
    numCPUs: 4 6
    numCoresPerSocket: 4 7
    snapshot: ""
    template: <vm_template_name> 8
    userDataSecret:
      name: master-user-data 9
    workspace:
      datacenter: <vcenter_datacenter_name> 10
      datastore: <vcenter_datastore_name> 11
      folder: <path_to_vcenter_vm_folder> 12
      resourcePool: <vsphere_resource_pool> 13
      server: <vcenter_server_ip> 14

1
클러스터의 시크릿 이름을 지정합니다. 이 값은 변경하지 마십시오.
2
컨트롤 플레인 시스템의 VM 디스크 크기를 지정합니다.
3
클라우드 공급자 플랫폼 유형을 지정합니다. 이 값은 변경하지 마십시오.
4
컨트롤 플레인 머신에 할당된 메모리를 지정합니다.
5
컨트롤 플레인이 배포된 네트워크를 지정합니다.
6
컨트롤 플레인 시스템에 할당된 CPU 수를 지정합니다.
7
각 컨트롤 플레인 CPU의 코어 수를 지정합니다.
8
사용할 vSphere VM 템플릿(예: user-5ddjd-rhcos )을 지정합니다.
9
컨트롤 플레인 사용자 데이터 시크릿을 지정합니다. 이 값은 변경하지 마십시오.
10
컨트롤 플레인의 vCenter Datacenter를 지정합니다.
11
컨트롤 플레인의 vCenter Datastore를 지정합니다.
12
vCenter의 vSphere VM 폴더의 경로(예: /dc1/vm/user-inst-5ddjd )를 지정합니다.
13
VM의 vSphere 리소스 풀을 지정합니다.
14
vCenter 서버 IP 또는 정규화된 도메인 이름을 지정합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.