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
cluster である ControlPlaneMachineSet CR の名前を指定します。この値は変更しないでください。
2
コントロールプレーンマシンの数を指定します。3 つのコントロールプレーンマシンを持つクラスターのみがサポートされているため、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 設定がクラスター要件に対して正しいことを確認する必要があります。Control Plane Machine Set Operator のアクティブ化の詳細は、「コントロールプレーンマシンセットの概要」を参照してください。

5
クラスターの更新戦略を指定します。許可される値は OnDeleteRollingUpdate です。デフォルト値は RollingUpdate です。更新戦略の詳細は、「コントロールプレーン設定の更新」を参照してください。
6
クラウドプロバイダーのプラットフォーム名を指定します。この値は変更しないでください。
7
クラスターの <platform_failure_domains> 設定を指定します。このセクションのフォーマットと値はプロバイダー固有です。詳細については、クラウドプロバイダーの障害ドメイン設定サンプルを参照してください。
注記

VMware vSphere は障害ドメインをサポートしていません。

8
クラスターの <platform_provider_spec> 設定を指定します。このセクションのフォーマットと値はプロバイダー固有です。詳細は、クラウドプロバイダーのサンプルプロバイダー仕様を参照してください。
プロバイダー固有の設定

コントロールプレーンマシンセットリソースの <platform_provider_spec> および <platform_failure_domains> セクションは、プロバイダー固有です。クラスターのサンプル YAML を参照してください。

12.3.2. Amazon Web Services クラスターを設定するサンプル YAML

コントロールプレーンマシンセット CR の一部のセクションは、プロバイダー固有です。このセクションの YAML の例は、Amazon Web Services (AWS) クラスターのプロバイダー仕様と障害ドメイン設定を示しています。

12.3.2.1. サンプル AWS プロバイダー仕様

既存クラスター用のコントロールプレーンマシンセットを作成する場合、プロバイダーの仕様は、インストールプログラムによって作成されるコントロールプレーン machine CR の providerSpec 設定と一致する必要があります。CR の障害ドメインセクションに設定されているフィールドは省略できます。

次の例で、<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
クラスターの Red Hat Enterprise Linux CoreOS (RHCOS) Amazon Machine Image (AMI) ID を指定します。AMI はクラスターと同じリージョンに属する必要があります。AWS Marketplace イメージを使用する場合は、AWS Marketplace から OpenShift Container Platform サブスクリプションを完了して、リージョンの AMI ID を取得する必要があります。
2
暗号化された EBS ボリュームの設定を指定します。
3
クラスターのシークレット名を指定します。この値は変更しないでください。
4
AWS Identity and Access Management (IAM) インスタンスプロファイルを指定します。この値は変更しないでください。
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 であるため、filters スタンザがあります。
3
インフラストラクチャー ID と AWS アベイラビリティゾーンを使用して、最初の障害ドメインのサブネット名を指定します。
4
サブネットタイプを指定します。許可される値は、ARNFilters、および ID です。デフォルト値は Filters です。
5
インフラストラクチャー ID と AWS アベイラビリティゾーンを使用して、追加の障害ドメインのサブネット名を指定します。
6
クラスターのインフラストラクチャー ID と、追加の障害ドメインの AWS アベイラビリティゾーンを指定します。
7
クラウドプロバイダーのプラットフォーム名を指定します。この値は変更しないでください。

12.3.3. Google Cloud Platform クラスターを設定するためのサンプル YAML

コントロールプレーンマシンセット CR の一部のセクションは、プロバイダー固有です。このセクションの YAML の例は、Google Cloud Platform (GCP) クラスターのプロバイダー仕様と障害ドメイン設定を示しています。

12.3.3.1. サンプル GCP プロバイダーの仕様

既存のクラスター用にコントロールプレーンマシンセットを作成する場合、プロバイダーの仕様は、インストールプログラムによって作成されるコントロールプレーンマシンのカスタムリソース (CR) の providerSpec 設定と一致する必要があります。CR の障害ドメインセクションに設定されているフィールドは省略できます。

OpenShift CLI を使用して取得した値

以下の例では、OpenShift CLI を使用してクラスターの値の一部を取得できます。

インフラストラクチャー ID

<cluster_id> 文字列は、クラスターをプロビジョニングしたときに設定したクラスター ID に基づくインフラストラクチャー ID です。OpenShift CLI がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー ID を取得できます。

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
イメージパス

<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 プロバイダー仕様のサンプル

既存クラスター用のコントロールプレーンマシンセットを作成する場合、プロバイダーの仕様は、インストールプログラムによって作成されるコントロールプレーン machine CR の providerSpec 設定と一致する必要があります。CR の障害ドメインセクションに設定されているフィールドは省略できます。

次の例で、<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
コントロールプレーンの内部ロードバランサーを指定します。このフィールドは事前入力されていない可能性がありますが、ControlPlaneMachineSet とコントロールプレーン Machin 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
zone の各インスタンスは、障害ドメインの Azure アベイラビリティーゾーンを指定します。
2
クラウドプロバイダーのプラットフォーム名を指定します。この値は変更しないでください。

12.3.5. VMware vSphere クラスターを設定するためのサンプル YAML

コントロールプレーンマシンセット CR の一部のセクションは、プロバイダー固有です。このセクションの YAML の例は、VMware vSphere クラスターのプロバイダー仕様の設定を示しています。

12.3.5.1. サンプルの vSphere プロバイダー仕様

既存クラスター用のコントロールプレーンマシンセットを作成する場合、プロバイダーの仕様は、インストールプログラムによって作成されるコントロールプレーン machine 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
user-5ddjd-rhcos など、使用する vSphere VM テンプレートを指定します。
9
コントロールプレーンのユーザーデータシークレットを指定します。この値は変更しないでください。
10
コントロールプレーンの vCenter データセンターを指定します。
11
コントロールプレーンの vCenter データストアを指定します。
12
/dc1/vm/user-inst-5ddjd などの vCenter の vSphere 仮想マシンフォルダーへのパスを指定します。
13
仮想マシンの vSphere リソースプールを指定します。
14
vCenter サーバーの IP または完全修飾ドメイン名を指定します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.