12.3. コントロールプレーンマシンセットの設定
これらのサンプル YAML ファイルとスニペットは、コントロールプレーンマシンセットのカスタムリソース (CR) の基本構造と、障害ドメインおよびプロバイダー仕様設定のプラットフォーム固有のサンプルを示しています。
12.3.1. コントロールプレーンマシンセットのカスタムリソースのサンプル YAML リンクのコピーリンクがクリップボードにコピーされました!
ControlPlaneMachineSet CR のベースは、すべてのプラットフォームで同じように構築されています。
サンプル ControlPlaneMachineSet CR YAML ファイル
apiVersion: machine.openshift.io/v1
kind: ControlPlaneMachineSet
metadata:
name: cluster
namespace: openshift-machine-api
spec:
replicas: 3
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <cluster_id>
machine.openshift.io/cluster-api-machine-role: master
machine.openshift.io/cluster-api-machine-type: master
state: Active
strategy:
type: RollingUpdate
template:
machineType: machines_v1beta1_machine_openshift_io
machines_v1beta1_machine_openshift_io:
failureDomains:
platform: <platform>
<platform_failure_domains>
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>
- 1
clusterであるControlPlaneMachineSetCR の名前を指定します。この値は変更しないでください。- 2
- コントロールプレーンマシンの数を指定します。3 つのコントロールプレーンマシンを持つクラスターのみがサポートされているため、
replicasの値は3です。水平スケーリングはサポートされていません。この値は変更しないでください。 - 3
- クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。
ControlPlaneMachineSetCR を作成するときに、この値を指定する必要があります。OpenShift CLI (oc) がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー ID を取得できます。$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster - 4
- Operator の状態を指定します。状態が
Inactiveの場合、Operator は操作できません。値をActiveに設定することで、Operator をアクティブ化できます。重要Operator をアクティブ化する前に、
ControlPlaneMachineSetCR 設定がクラスター要件に対して正しいことを確認する必要があります。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>
subnet:
filters:
- name: tag:Name
values:
- <cluster_id>-private-<aws_zone_a>
type: Filters
- placement:
availabilityZone: <aws_zone_b>
subnet:
filters:
- name: tag:Name
values:
- <cluster_id>-private-<aws_zone_b>
type: Filters
platform: AWS
- 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 プロバイダーの仕様例 リンクのコピーリンクがクリップボードにコピーされました!
既存のクラスター用のコントロールプレーンマシンセットを作成する場合、プロバイダーの仕様が、インストールプログラムによって作成されるコントロールプレーンマシンのカスタムリソース (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>
apiVersion: machine.openshift.io/v1beta1
blockDevices:
- ebs:
encrypted: true
iops: 0
kmsKey:
arn: ""
volumeSize: 120
volumeType: gp3
credentialsSecret:
name: aws-cloud-credentials
deviceIndex: 0
iamInstanceProfile:
id: <cluster_id>-master-profile
instanceType: m6i.xlarge
kind: AWSMachineProviderConfig
loadBalancers:
- name: <cluster_id>-int
type: network
- name: <cluster_id>-ext
type: network
metadata:
creationTimestamp: null
metadataServiceOptions: {}
placement:
region: <region>
securityGroups:
- filters:
- name: tag:Name
values:
- <cluster_id>-master-sg
subnet: {}
userDataSecret:
name: master-user-data
- 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:
- zone: "1"
- zone: "2"
- zone: "3"
platform: Azure
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
namespace: openshift-machine-api
diagnostics: {}
image:
offer: ""
publisher: ""
resourceID: /resourceGroups/<cluster_id>-rg/providers/Microsoft.Compute/galleries/gallery_<cluster_id>/images/<cluster_id>-gen2/versions/412.86.20220930
sku: ""
version: ""
internalLoadBalancer: <cluster_id>-internal
kind: AzureMachineProviderSpec
location: <region>
managedIdentity: <cluster_id>-identity
metadata:
creationTimestamp: null
name: <cluster_id>
networkResourceGroup: <cluster_id>-rg
osDisk:
diskSettings: {}
diskSizeGB: 1024
managedDisk:
storageAccountType: Premium_LRS
osType: Linux
publicIP: false
publicLoadBalancer: <cluster_id>
resourceGroup: <cluster_id>-rg
subnet: <cluster_id>-master-subnet
userDataSecret:
name: master-user-data
vmSize: Standard_D8s_v3
vnet: <cluster_id>-vnet
zone: ""
- 1
- クラスターのシークレット名を指定します。この値は変更しないでください。
- 2
- コントロールプレーンマシンセットのイメージの詳細を指定します。
- 3
- インスタンスタイプと互換性のあるイメージを指定します。インストールプログラムによって作成された Hyper-V 世代の V2 イメージには接尾辞
-gen2が付いていますが、V1 イメージには接尾辞のない同じ名前が付いています。 - 4
- コントロールプレーンの内部ロードバランサーを指定します。このフィールドは事前入力されていない可能性がありますが、
ControlPlaneMachineSetとコントロールプレーンMachineCR の両方で必要です。 - 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 プロバイダー仕様 リンクのコピーリンクがクリップボードにコピーされました!
既存のクラスター用のコントロールプレーンマシンセットを作成する場合、プロバイダーの仕様が、インストールプログラムによって作成されるコントロールプレーンマシンのカスタムリソース (CR) の providerSpec 設定と一致する必要があります。
vSphere providerSpec の値の例
providerSpec:
value:
apiVersion: machine.openshift.io/v1beta1
credentialsSecret:
name: vsphere-cloud-credentials
diskGiB: 120
kind: VSphereMachineProviderSpec
memoryMiB: 16384
metadata:
creationTimestamp: null
network:
devices:
- networkName: <vm_network_name>
numCPUs: 4
numCoresPerSocket: 4
snapshot: ""
template: <vm_template_name>
userDataSecret:
name: master-user-data
workspace:
datacenter: <vcenter_datacenter_name>
datastore: <vcenter_datastore_name>
folder: <path_to_vcenter_vm_folder>
resourcePool: <vsphere_resource_pool>
server: <vcenter_server_ip>
- 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 または完全修飾ドメイン名を指定します。