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
- クラスターの更新戦略を指定します。許可される値は
OnDelete
とRollingUpdate
です。デフォルト値は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 障害ドメインの設定
障害ドメインのコントロールプレーンマシンセットの概念は、既存の 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
- サブネットタイプを指定します。許可される値は、
ARN
、Filters
、およびID
です。デフォルト値はFilters
です。 - 5
- インフラストラクチャー ID と AWS アベイラビリティゾーンを使用して、追加の障害ドメインのサブネット名を指定します。
- 6
- クラスターのインフラストラクチャー ID と、追加の障害ドメインの AWS アベイラビリティゾーンを指定します。
- 7
- クラウドプロバイダーのプラットフォーム名を指定します。この値は変更しないでください。
12.3.2.2. サンプル 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.3. Microsoft Azure クラスターを設定するためのサンプル YAML
コントロールプレーンマシンセット CR の一部のセクションは、プロバイダー固有です。このセクションのサンプル YAML は、Azure クラスターの障害ドメインとプロバイダー仕様の設定を示しています。
12.3.3.1. Azure 障害ドメイン設定のサンプル
障害ドメインのコントロールプレーンマシンセットの概念は、Azure 可用性ゾーン の既存の Azure 概念に似ています。ControlPlaneMachineSet
CR は、可能な場合、コントロールプレーンマシンを複数の障害ドメインに分散します。
コントロールプレーンマシンセットで Azure 障害ドメインを設定するときは、可用性ゾーン名を指定する必要があります。
Azure 障害ドメインの値のサンプル
failureDomains: azure: 1 - zone: "1" - zone: "2" - zone: "3" platform: Azure 2
12.3.3.2. 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. VMware vSphere クラスターを設定するためのサンプル YAML
コントロールプレーンマシンセット CR の一部のセクションは、プロバイダー固有です。このセクションの YAML の例は、VMware vSphere クラスターのプロバイダー仕様の設定を示しています。
12.3.4.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 または完全修飾ドメイン名を指定します。