このページでは、トポロジ ドメインの設定で使用される vSphere インフラストラクチャ構成ファイルのフィールドについて説明します。このファイルは、管理クラスタ構成ファイルの infraConfigFilePath
が設定されている場合に必要です。
以降のセクションでは、Secret
カスタム リソースと VSphereInfraConfig
カスタム リソースのオブジェクトとフィールドについて説明します。フィールドの例については、後述の構成ファイルの例をご覧ください。
「省略可」と記載されていない限り、構成ファイルのすべてのフィールドは必須です。
Secret
各 vCenter Server の認証情報を格納する vSphere 認証情報 Secret を記述します。管理クラスタとユーザー クラスタに使用する vCenter Server インスタンスの数に応じて、必要に応じて Secret を追加または削除します。各オブジェクトは ---
で区切る必要があります。管理クラスタの作成が正常に完了したら、この構成ファイルからすべての Secret を削除できます。
Secret.name
変更不可
文字列
Secret の名前。この名前は、VSphereInfraConfig
カスタム リソースの credentials.vCenters[i].secretName
フィールドの名前のいずれかと一致する必要があります。
Secret.namespace
変更不可
文字列
事前入力: kube-system
Secret が存在する Namespace。この Namespace は、VSphereInfraConfig
カスタム リソースの対応する credentials.vCenters[i].secretNamespace
フィールドと一致する必要があります。
stringData.admin-username
と stringData.admin-password
vCenter Server 管理者のロールまたは同等の権限を持つ vCenter ユーザー アカウントの認証情報。詳細については、vCenter ユーザー アカウント権限をご覧ください。
stringData.ca-crt
変更可
複数行の文字列
vCenter Server の Base64 でエンコードされた CA 証明書。
Base64 でエンコードされた証明書を表示するコマンドを実行するまで、vCenter CA ルート証明書の取得の手順に沿って操作します。証明書全体をコピーしてこのフィールドに貼り付けます。
VSphereInfraConfig
vSphere インフラストラクチャの構成。この構成は管理クラスタに保存され、管理クラスタとその管理対象のすべてのユーザー クラスタで共有されます。各管理クラスタには、vSphere インフラストラクチャ構成を 1 つだけ設定する必要があります。
VSphereInfraConfig.name
変更不可
文字列
事前入力: デフォルト
vSphere インフラストラクチャ構成の名前。
credentials
vSphere インフラストラクチャ構成で使用される認証情報。
credentials.vCenters
オブジェクトの配列。それぞれに各 vCenter Server の Secret 参照が含まれています。必要に応じてエントリを追加または削除します。管理クラスタの作成後、必要に応じて新しい credentials.vCenters
オブジェクトを構成ファイルに追加し、gkectl update admin
を実行してクラスタ内の構成を更新できます。
credentials.vCenters[i].address
変更不可
文字列
vCenter Server の IP アドレスまたはホスト名。
詳細については、vCenter Server アドレスの確認をご覧ください。
credentials.vCenters[i].secretName
変更不可
文字列
Secret 名。名前は、Secret
カスタム リソースの name
と一致している必要があります。
credentials.vCenters[i].secretNamespace
変更不可
文字列
事前入力された kube-system
Secret が存在する Namespace。Namespace は、Secret
カスタム リソースの対応する namespace
と一致する必要があります。
topologyDomains
オブジェクトの配列。それぞれがトポロジ ドメイン構成を表します。必要に応じてエントリを追加または削除します。管理クラスタの作成後、必要に応じて新しい topologyDomains
オブジェクトを構成ファイルに追加し、gkectl update admin
を実行してクラスタ内の構成を更新できます。
topologyDomains[i].name
変更不可
文字列
トポロジ ドメインの名前。
topologyDomains[i].topologyLabels
このトポロジ ドメイン内のノードに適用され、Kubernetes スケジューラによって使用されるラベルのリスト。各ラベルは "key":"value"
ペアです。トポロジ ドメインごとに 1 つのラベルのみを指定することをおすすめします。
例:
topologyDomains: - name: "td-01" topologyLabel: "topology.examplepetstore.com/zone": "zone-1"
キーには、組み込みのデフォルト制約で説明されている Kubernetes クラスタレベルのデフォルト制約 "topology.kubernetes.io/zone"
を使用できます。
クラスタが作成されると、指定したトポロジラベルがトポロジ ドメイン内のノードのラベルに入力されます。キーとして "topology.kubernetes.io/zone"
を使用しない場合は、Deployment、StatefulSet、または ReplicaSet の PodTemplate
でトポロジ キーを構成する必要があります。
たとえば、トポロジラベルでキーを "topology.examplepetstore.com/zone"
と定義したとします。PodTemplate
で、topologySpreadConstraints.topologyKey
フィールドの値としてキーを指定します。これにより、Kubernetes スケジューラはトポロジ ドメインに Pod を分散して、高可用性を確保し、障害が発生した場合に単一の領域に過度に集中するのを防ぐことができます。
topologySpreadConstraints
の構成の詳細については、Kubernetes ドキュメントの Pod トポロジの分散制約をご覧ください。
topologyDomains[i].compute
このトポロジ ドメインに割り振られたコンピューティング リソース。
topologyDomains[i].compute.vcenter
変更不可
文字列
vCenter Server の IP アドレスまたはホスト名。
詳細については、vCenter Server アドレスの確認をご覧ください。
topologyDomains[i].compute.datacenter
変更不可
文字列
vSphere データセンターの相対パス。
指定する値は、/
という名前のルートフォルダを基準とします。
データセンターがルートフォルダにある場合、値はデータセンターの名前です。
topologyDomains[i].compute.cluster
変更不可
文字列
このトポロジ ドメイン内のクラスタ VM が実行される ESXi ホストを表す vSphere クラスタの相対パス。この vSphere クラスタは、vCenter データセンターの物理 ESXi ホストのサブセットを表します。
指定する値は、/.../DATA_CENTER/vm/
を基準とします。
vSphere クラスタが /.../DATA_CENTER/vm/
フォルダにある場合、値は vSphere クラスタの名前です。
それ以外の場合、値は 1 つ以上のフォルダと vSphere クラスタの名前を含む相対パスになります。
topologyDomains[i].compute.resourcePool
変更不可
文字列
このトポロジ ドメイン内の VM の vCenter リソースプール。
デフォルトのリソースプールを使用する場合は、これを VSPHERE_CLUSTER/Resources
に設定します。
例:
topologyDomains: - name: "td-01" compute: resourcePool: "my-vsphere-cluster/Resources"
すでに作成したリソースプールを使用する場合は、これにリソースプールの相対パスを設定します。
指定する値は /.../DATA_CENTER/host/.../VSPHERE_CLUSTER/Resources/
を基準とします。
リソースプールが /.../DATA_CENTER/host/.../VSPHERE_CLUSTER/Resources/
の直接の子である場合、値はリソースプールの名前となります。
例:
topologyDomains: - name: "td-01" compute: resourcePool: "my-resource-pool"
それ以外の場合、値は 2 つ以上のリソースプールを含む相対パスになります。
例:
topologyDomains: - name: "td-01" compute: resourcePool: "resource-pool-1/resource-pool-2"
topologyDomains[i].compute.folder
省略可
変更不可
文字列
事前に作成していた vSphere フォルダの相対パス。このフォルダには、このトポロジ ドメイン内のすべての VM が保持されます。
値を指定しない場合、このトポロジ ドメイン内のすべての VM は /.../DATA_CENTER/vm/
に配置されます。
値を指定すると、/.../DATA_CENTER/vm/
を基準とします。
値にはフォルダの名前を指定できます。
例:
topologyDomains: - name: "td-01" compute: folder: "my-folder"
複数のフォルダを含む相対パスを値に指定することもできます。
例:
topologyDomains: - name: "td-01" compute: folder: "folders/folder-1"
topologyDomains[i].storage
このトポロジ ドメインのストレージ構成。これは、仮想マシンのデータディスクとブートディスクでのみ使用されます。CNS ボリューム(PVC と PV によってプロビジョニングされる)は含まれません。
storage.policyName
または storage.datastore
のいずれかの値を指定してください。両方を指定することはできません。
topologyDomains[i].storage.policyName
storage.datastore
が指定されていない場合は必須
変更不可
文字列
クラスタノードの VM ストレージ ポリシーの名前。
詳細については、ストレージ ポリシーを構成するをご覧ください。
storage.datastore
または storage.policyName
のいずれかの値を指定する必要があります。両方を指定することはできません。このフィールドの値を指定する場合は、storage.datastore
の値を指定しないでください。
topologyDomains[i].storage.datastore
storage.policyName
が指定されていない場合は必須
変更不可
文字列
管理クラスタの vSphere データストアの名前。
指定する値は、パスではなく、名前にする必要があります。値にはフォルダを含めないでください。
例:
topologyDomains: - name: "td-01" storage: datastore: "my-datastore"
storage.datastore
または storage.PolicyName
のいずれかの値を指定する必要があります。両方を指定することはできません。このフィールドの値を指定する場合は、storage.PolicyName
の値を指定しないでください。
topologyDomains[i].network
このトポロジ ドメインのネットワーク構成。
topologyDomains[i].network.vsphereNetwork
変更不可
文字列
クラスタノードの vSphere ネットワークの名前。
例:
topologyDomains: - name: "td-01" network: vsphereNetwork: "my-network"
名前に特殊文字が含まれる場合は、エスケープ シーケンスを使用する必要があります。
特殊文字 | エスケープ シーケンス |
---|---|
スラッシュ(/ ) |
%2f |
バックスラッシュ(\ ) |
%5c |
パーセント記号(% ) |
%25 |
データセンターでネットワーク名が一意でない場合は、フルパスを指定できます。
例:
topologyDomains: - name: "td-01" network: vsphereNetwork: "/data-centers/data-center-1/network/my-network"
topologyDomains[i].network.gateway
このトポロジ ドメイン内のクラスタノードのサブネットのゲートウェイ アドレス。IP アドレスは、IP ブロック ファイルのゲートウェイ アドレスと同じにする必要があります。例については、トポロジ ドメインの IP ブロック ファイルの例をご覧ください。
topologyDomains[i].network.dnsServers
不変
文字列の配列。
配列内の要素の最大数は 3 つです。
VM の DNS サーバーの IP アドレス。
topologyDomains[i].network.ntpServers
変更不可
文字列の配列
VM が使用する時刻サーバーの IP アドレス。
topologyDomains[i].network.searchDomains
省略可
不変
文字列の配列
VM が使用する DNS 検索ドメイン。これらのドメインは、ドメイン検索リストの一部として使用されます。
例:
topologyDomains: - name: "td-01" network: hostConfig: searchDomainsForDNS: - "my.local.com"
topologyDomains[i].defaultTopologyDomain
変更不可
省略可
文字列
デフォルトのトポロジ ドメインの名前。この名前は、topologyDomains[i].name
の名前のいずれかと一致する必要があります。クラスタの作成時にデフォルト名を指定しなかった場合は、必要に応じて構成ファイルの名前を更新し、gkectl update admin
を実行してクラスタ内の構成を更新できます。
コントロール プレーン ノードまたはノードプール内のノードにトポロジ ドメインを設定しない限り、ノードはデフォルトのトポロジ ドメインに割り振られます。
例: 構成ファイル
次の例は、値が入力された構成ファイルを示しています。
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-0"
stringData:
admin-username: "example-admi1n@vsphere.local"
admin-password: "GltFl4@5f"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAPFVaTIKdyCbMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMDMuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjIwODA3MDIzNTQ4WhcNMzIwODA0MDIzNTQ4WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzAzLmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz5MOjTQ4FHcIYjzo
bcIFJmnVDjSnLGYDdVayhmUo1+CC5RqJRuAnJmDYt9PY/lJhVDVUSFHWJdvRjeAP
0+xjRs33VJctzjDqwy2xRMVxoA+c8DfvALHIK+rHwIidGNt5eb2HOrB1MSCB5KFi
gkXhJf/2kiEPiTMqbu2nWySdBfZRVSYs1jSiAuz/cgyglfVUcRFn4oRhR35QZ8gj
t54IGY9atzKCYuvFAgeTCGBxI30cZRQDCtkWyWHPdK3GniNW/qh4C7gC+VI+Pnh+
fUGtAx3Px/O5h5RpHDmvuSqMNoWEsChKGgbrbkZGB9OWL8OsVAUnz8TXC6s4/AG1
0GGDGQIDAQABo2YwZDAdBgNVHQ4EFgQUM8RXjNIlar+S6uZBSH+3oVkUdGwwHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBABIO4RO3Jk6PaDyt
+PGP1ng5fpcKbwCi90KfEkfAd/HV3YM6suEhCar6azKXJutL9gGzidi9NvKv43Pg
hOOuTQWbdwuhqgF3YPKZ1HJWSV0NR5J9WFjp9rk1EdM6NApUwmy7EIbo8TY7M6SL
jaR8VgaelG2PSf2S4ybxKdJ2gx2pPTcoYpd/+d9qaDFLNWa4irzB6sqBUVlkAMX+
JW4FmMs8ym4aLzlFBzG5gjK1PCsBugbVRSAbF+Y8LwnMoe2WMiF1nNXoKSiaQm0A
Z0psC1b37G9dKzr9soLS5OENFrAEClfVD5luETvUHo51VhanetWbZmL5dK8iGAuj
otykS2w=
-----END CERTIFICATE-----
---
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-1"
stringData:
admin-username: "example-admin2@vsphere.local"
admin-password: "xuBAcK5lT@uq2Ix"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAMJPzGX27yKBMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMTMuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjMxMjAzMjM0NDM5WhcNMzMxMTMwMjM0NDM5WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzEzLmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6d2PidzORMEOuIKa
XOXB4nB7ukYGOeju1nKJ90KnvKfZBNjN1JKuNPQcZelFyEcUEHnI18cA2VGbpXbF
O9jMlxu5VlhPepjEPAgtcAuCZNlxzRDip9u9ar3ma2SxMCogz91qDZKSE/PQpqNI
Ozpus6YsHmK3jzAUq/Zs1+wl9HFot0e5kPf79oqQC8gPxJqmFQyGm50SdOMwj5sD
pYm/3TZZ1gw4WftBhDecO9hKwcReCVjeVgp5omMcFHwIhqUBqZM3qX5gJaxE7ELO
xu66VibA1g70Xzso2hGVQ13ruGjgUAjDsICOTpHHcT33KoMRzn2BWlKtmsnThIrE
nbR9QQIDAQABo2YwZDAdBgNVHQ4EFgQUI84+93Iniliyzs3HSDatbYGsiJ4wHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBAIIihWWIcl+sKRmS
QB4wkjR9UA7QV96lbm+HFE5qvP5xVXss+PmSjLjeNZFfX65tGlKXWDmYstcw/jon
hnJVe/jxjIZ3GddrVfHdwOEQ+FORQyfxkLAQuHKvm/2PobGNsU0rOw14Ur4Eea6P
pIl70eJhRX22dkOhb+y6jz+k+L52HbzMz/X6yUnTFAJzobJD0C1vGAx3FgPdbUqF
fXYO/Q8NNrk+4561eT3x9T4RIj/0ZkBal0yQEdYnd+lOIkEmk7vmO1/eyb6+66rs
3wz4DIxtfhJIUlj0mBL0KkyDDDoc0oFTf5V/xrYls1dJ35DNFoG/KBJGgGbaW41t
vTz+0JA=
-----END CERTIFICATE-----
---
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: "vsphere-auth-2"
stringData:
admin-username: "example-admin3@vsphere.local"
admin-password: "nWKCITwqKTaY5@M5"
ca-crt: |
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIJAN4alqihWQukMA0GCSqGSIb3DQEBCwUAMIGbMQswCQYD
VQQDDAJDQTEXMBUGCgmSJomT8ixkARkWB3ZzcGhlcmUxFTATBgoJkiaJk/IsZAEZ
FgVsb2NhbDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExHTAbBgNV
BAoMFGF0bC1xdWFsLXZjMDcuYW50aG9zMRswGQYDVQQLDBJWTXdhcmUgRW5naW5l
ZXJpbmcwHhcNMjMwMzI2MTc0NjE1WhcNMzMwMzIzMTc0NjE1WjCBmzELMAkGA1UE
AwwCQ0ExFzAVBgoJkiaJk/IsZAEZFgd2c3BoZXJlMRUwEwYKCZImiZPyLGQBGRYF
bG9jYWwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMR0wGwYDVQQK
DBRhdGwtcXVhbC12YzA3LmFudGhvczEbMBkGA1UECwwSVk13YXJlIEVuZ2luZWVy
aW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuvM3aSemSrBxWVei
6pYlRvLWaCva2Q0MQvmUdVISa9uul/PHE2lwAcTAAr3Sayat2D5IRjd7NWbzaLVQ
Sxel0TINpMfITDT0x6lZ8FfKgrRpY30CPZQlgVo16rGKE0V+wHTkGYIzRITETzuu
z6nkpzvryh6JadSf4wrGj1TmrYpqYEmdzf7bLmz4Rql5PgVco7z+pqo0BA+UU/Uc
/OtEcVKAyaifHzZwPlscOpKpskQrP4Ke6i3iuyrEmaDH+4sQ1TDrcYpUBfqkl+xT
0G6ZKHs6KP18x0Xg4ifeC8x7sgajJ20TpbkDY4KtBdraj3HB4gZCxg7qY/0G75yF
C2bZ4wIDAQABo2YwZDAdBgNVHQ4EFgQUeE+R+gRo1oU578dyiyq4tPYefpIwHwYD
VR0RBBgwFoEOZW1haWxAYWNtZS5jb22HBH8AAAEwDgYDVR0PAQH/BAQDAgEGMBIG
A1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBADzBUXsxICPGxt1o
wPrbmWhkrPy2pNr9unP/d+Py20groZ/KQ/d6dzDN7pxc6BtQbMfho7pij+mf3aHq
oBo+J80Ha/vZExMMwYrp/OTlxy2Jdb5pzxZQtWqNVS5SkzNtDs7DhXDTY19TBZhZ
4d+/g2eSq2/dRT7zF8q3LH6mmq0EbSRSDOm8r6AUdWt+Ov7YKTYk9c+5UTL9M9u4
1+VBkF34hB/xc1fsFSPHTQQDOlAy5HTZgM3ygtuhmAY+UUQVLZf+8sJh+5zqc6gw
Ecnz7HRcRPUitKACsxUm4f5VHiKUMrIBP5U1dovl4kUN8Ue0e+KnIjIGKjp4wrHi
UtQboUw=
-----END CERTIFICATE-----
---
apiVersion: vmware.cluster.gke.io/v1alpha1
kind: VSphereInfraConfig
metadata:
name: default
credentials:
vCenters:
- address: "vc03.example"
secretName: "vsphere-auth-0"
secretNamespace: "kube-system"
- address: "vc13.example"
secretName: "vsphere-auth-1"
secretNamespace: "kube-system"
- address: "vc07.example"
secretName: "vsphere-auth-2"
secretNamespace: "kube-system"
topologyDomains:
- name: "topology-domain-0"
topologyLabels:
"topology.kubernetes.io/zone": "zone-0"
compute:
vcenter: "vc03.example"
datacenter: "vc03"
cluster: "workloads3"
resourcePool: "vc03-default-pool"
storage:
datastore: "vsanDatastore"
network:
vsphereNetwork: "qual-343"
gateway: "203.0.113.1"
dnsServers:
- "192.0.2.1"
- "192.0.2.2"
ntpServers:
- "203.0.113.50"
- name: "topology-domain-1"
topologyLabels:
"topology.kubernetes.io/zone": "zone-1"
compute:
vcenter: "vc13.example"
datacenter: "vc13-dc1"
cluster: "workloads13-1"
resourcePool: "vc13-dc1-default-pool"
storage:
datastore: "vsanDatastore-1c"
network:
vsphereNetwork: "scale-332"
gateway: "203.0.113.2"
dnsServers:
- "192.0.2.10"
- "192.0.2.11"
ntpServers:
- "203.0.113.51"
- name: "topology-domain-2"
topologyLabels:
"topology.kubernetes.io/zone": "zone-2"
compute:
vcenter: "vc07.example"
datacenter: "vc07"
cluster: "workloads7"
resourcePool: "vc07-default-pool"
storage:
datastore: "vsanDatastore"
network:
vsphereNetwork: "qual-323"
gateway: "203.0.113.3"
dnsServers:
- "192.0.2.21"
- "192.0.2.22"
ntpServers:
- "203.0.113.52"