Fichier de configuration de l'infrastructure vSphere

Cette page décrit les champs d'un fichier de configuration d'infrastructure vSphere, qui est utilisé lors de la configuration des domaines de topologie. Ce fichier est obligatoire si infraConfigFilePath est défini dans le fichier de configuration du cluster d'administrateur.

Les sections suivantes décrivent les objets et les champs des ressources personnalisées Secret et VSphereInfraConfig. Consultez la section Exemple de fichier de configuration qui suit pour voir des exemples de valeurs pour les champs.

Sauf indication contraire, tous les champs du fichier de configuration sont obligatoires.

Secret

Décrit le secret des identifiants vSphere qui stocke les identifiants de chaque serveur vCenter. Ajoutez ou supprimez des secrets selon le nombre d'instances de vCenter Server que vous prévoyez d'utiliser pour le cluster d'administration et les clusters d'utilisateurs. Chaque objet doit être séparé par ---. Vous pouvez supprimer tous les secrets de ce fichier de configuration une fois le cluster d'administrateur créé.

Secret.name

Immuable
Chaîne

Nom du secret. Ce nom doit correspondre à l'un des noms du champ credentials.vCenters[i].secretName de la ressource personnalisée VSphereInfraConfig.

Secret.namespace

Immuable
Chaîne
Prérempli: kube-system

Espace de noms dans lequel se trouve le secret. Cet espace de noms doit correspondre au champ credentials.vCenters[i].secretNamespace correspondant dans la ressource personnalisée VSphereInfraConfig.

stringData.admin-username et stringData.admin-password

Identifiants du compte utilisateur vCenter disposant du rôle Administrateur vCenter Server ou de droits équivalents. Pour en savoir plus, consultez la page Droits des utilisateurs sur les comptes vCenter.

stringData.ca-crt

Modifiable
Chaîne multiligne

Certificat CA encodé en base64 du serveur vCenter.

Suivez la procédure décrite dans la section Obtenir votre certificat racine vCenter CA jusqu'à ce que vous exécutiez la commande qui affiche le certificat encodé en base64. Copiez et collez l'intégralité du certificat dans ce champ.

VSphereInfraConfig

Configuration de l'infrastructure vSphere. Cette configuration sera stockée dans le cluster d'administration et partagée par le cluster d'administration et tous ses clusters d'utilisateurs de gestion. Chaque cluster d'administrateur ne doit avoir qu'une seule configuration d'infrastructure vSphere.

VSphereInfraConfig.name

Immuable
Chaîne
Prérempli: par défaut

Nom de la configuration de l'infrastructure vSphere.

credentials

Identifiants utilisés par la configuration de l'infrastructure vSphere.

credentials.vCenters

Tableau d'objets, chacun contenant les références secrètes pour chaque serveur vCenter. Ajoutez ou supprimez des entrées selon vos besoins. Une fois le cluster d'administrateur créé, vous pouvez ajouter un objet credentials.vCenters au fichier de configuration si nécessaire, puis exécuter gkectl update admin pour mettre à jour la configuration dans le cluster.

credentials.vCenters[i].address

Immuable
Chaîne

Adresse IP ou nom d'hôte de votre serveur vCenter.

Pour en savoir plus, consultez la section Rechercher l'adresse de votre serveur vCenter.

credentials.vCenters[i].secretName

Immuable
Chaîne

Nom du secret. Le nom doit correspondre à un name dans la ressource personnalisée Secret.

credentials.vCenters[i].secretNamespace

Immuable
Chaîne
Kube-system prérempli

Espace de noms dans lequel se trouve le secret. L'espace de noms doit correspondre à l'namespace correspondant dans la ressource personnalisée Secret.

topologyDomains

Tableau d'objets, chacun décrivant une configuration de domaine de topologie. Ajoutez ou supprimez des entrées selon vos besoins. Une fois le cluster d'administrateur créé, vous pouvez ajouter un objet topologyDomains au fichier de configuration si nécessaire, puis exécuter gkectl update admin pour mettre à jour la configuration dans le cluster.

topologyDomains[i].name

Immuable
Chaîne

Nom du domaine de topologie.

topologyDomains[i].topologyLabels

Liste des libellés appliqués aux nœuds de ce domaine de topologie utilisés par le planificateur Kubernetes. Chaque étiquette est une paire "key":"value". Nous vous recommandons de ne spécifier qu'un seul libellé par domaine de topologie.

Exemple :

topologyDomains:
- name: "td-01"
  topologyLabel: "topology.examplepetstore.com/zone": "zone-1"

Pour la clé, vous pouvez utiliser la contrainte par défaut au niveau du cluster Kubernetes, "topology.kubernetes.io/zone", comme décrit dans la section Contraintes par défaut intégrées.

Une fois le cluster créé, le libellé de topologie que vous avez spécifié est renseigné dans les libellés des nœuds du domaine de topologie. Si vous n'utilisez pas "topology.kubernetes.io/zone" comme clé, vous devrez configurer la clé de topologie dans PodTemplate dans votre déploiement, StatefulSet ou ReplicaSet, le cas échéant.

Par exemple, supposons que vous ayez défini la clé dans le libellé de la topologie comme "topology.examplepetstore.com/zone". Dans PodTemplate, vous spécifiez la clé comme valeur du champ topologySpreadConstraints.topologyKey. Cela permet au planificateur Kubernetes de distribuer les pods sur le domaine de topologie afin de garantir une haute disponibilité et d'éviter une surconcentration dans une zone donnée en cas de défaillance.

Pour en savoir plus sur la configuration de topologySpreadConstraints, consultez la section Contraintes de répartition de la topologie des pods dans la documentation Kubernetes.

topologyDomains[i].compute

Ressources de calcul allouées à ce domaine de topologie.

topologyDomains[i].compute.vcenter

Immuable
Chaîne

Adresse IP ou nom d'hôte de votre serveur vCenter.

Pour en savoir plus, consultez la section Rechercher l'adresse de votre serveur vCenter.

topologyDomains[i].compute.datacenter

Immuable
Chaîne

Chemin relatif d'un centre de données vSphere.

La valeur que vous spécifiez est relative au dossier racine nommé /.

Si votre centre de données se trouve dans le dossier racine, la valeur correspond au nom du centre de données.

topologyDomains[i].compute.cluster

Immuable
Chaîne

Chemin relatif d'un cluster vSphere qui représente les hôtes ESXi sur lesquels vos VM de cluster dans ce domaine de topologie seront exécutées. Ce cluster vSphere représente un sous-ensemble des hôtes ESXi physiques de votre centre de données vCenter.

La valeur que vous spécifiez est associée à /.../DATA_CENTER/vm/.

Si votre cluster vSphere se trouve dans le dossier /.../DATA_CENTER/vm/, la valeur correspond au nom du cluster vSphere.

Sinon, la valeur est un chemin relatif qui inclut un ou plusieurs dossiers, ainsi que le nom du cluster vSphere.

topologyDomains[i].compute.resourcePool

Immuable
Chaîne

Un pool de ressources vCenter pour vos VM dans ce domaine de topologie.

Si vous souhaitez utiliser le pool de ressources par défaut, définissez cette valeur sur VSPHERE_CLUSTER/Resources.

Exemple :

topologyDomains:
- name: "td-01"
  compute:
    resourcePool: "my-vsphere-cluster/Resources"

Si vous souhaitez utiliser un pool de ressources que vous avez déjà créé, définissez ce paramètre sur le chemin relatif de votre pool de ressources.

La valeur que vous spécifiez est associée à /.../DATA_CENTER/host/.../VSPHERE_CLUSTER/Resources/.

Si votre pool de ressources est un enfant direct de /.../DATA_CENTER/host/.../VSPHERE_CLUSTER/Resources/, la valeur est le nom du pool de ressources.

Exemple :

topologyDomains:
- name: "td-01"
  compute:
    resourcePool: "my-resource-pool"

Sinon, la valeur est un chemin relatif comportant au moins deux pools de ressources.

Exemple :

topologyDomains:
- name: "td-01"
  compute:
    resourcePool: "resource-pool-1/resource-pool-2"

topologyDomains[i].compute.folder

Facultatif
Immuable
Chaîne

Chemin relatif d'un dossier vSphere que vous avez déjà créé. Ce dossier contiendra toutes les VM de ce domaine de topologie.

Si vous ne spécifiez pas de valeur, toutes les VM de ce domaine de topologie seront placées dans /.../DATA_CENTER/vm/.

Si vous spécifiez une valeur, elle est associée à /.../DATA_CENTER/vm/.

La valeur peut être le nom d'un dossier.

Exemple :

topologyDomains:
- name: "td-01"
  compute:
    folder: "my-folder"

La valeur peut également être un chemin relatif incluant plusieurs dossiers.

Exemple :

topologyDomains:
- name: "td-01"
  compute:
    folder: "folders/folder-1"

topologyDomains[i].storage

Configurations de stockage de ce domaine de topologie. Il est utilisé uniquement par les disques de données et les disques de démarrage des machines virtuelles. Les volumes CNS (provisionnés par des PVC et des PV) ne sont pas inclus.

Indiquez une valeur pour storage.policyName ou storage.datastore, mais pas les deux.

topologyDomains[i].storage.policyName

Obligatoire si storage.datastore n'est pas spécifié
Immuable
Chaîne

Nom d'une règle de stockage de VM pour les nœuds du cluster.

Pour en savoir plus, consultez la page Configurer une règle de stockage.

Vous devez spécifier une valeur pour storage.datastore ou storage.policyName, mais pas les deux. Si vous spécifiez une valeur pour ce champ, ne spécifiez pas de valeur pour storage.datastore.

topologyDomains[i].storage.datastore

Obligatoire si storage.policyName n'est pas spécifié
Immuable
Chaîne

Nom d'un datastore vSphere pour votre cluster d'utilisateur.

La valeur que vous spécifiez doit être un nom, et non un chemin d'accès. N'incluez aucun dossier dans la valeur.

Exemple :

topologyDomains:
- name: "td-01"
  storage:
    datastore: "my-datastore"

Vous devez spécifier une valeur pour storage.datastore ou storage.PolicyName, mais pas les deux. Si vous spécifiez une valeur pour ce champ, ne spécifiez pas de valeur pour storage.PolicyName.

topologyDomains[i].network

Configurations réseau de ce domaine de topologie.

topologyDomains[i].network.vsphereNetwork

Immuable
Chaîne

Nom du réseau vSphere pour vos nœuds de cluster.

Exemple :

topologyDomains:
- name: "td-01"
  network:
    vsphereNetwork: "my-network"

Si le nom contient un caractère spécial, vous devez utiliser une séquence d'échappement pour celui-ci.

Caractères spéciaux Séquence d'échappement
Barre oblique (/) %2f
Barre oblique inverse (\) %5c
Signe de pourcentage (%) %25

Si le nom du réseau n'est pas unique dans votre centre de données, vous pouvez spécifier un chemin d'accès complet.

Exemple :

topologyDomains:
- name: "td-01"
  network:
    vsphereNetwork: "/data-centers/data-center-1/network/my-network"

topologyDomains[i].network.gateway

Adresse de la passerelle du sous-réseau pour les nœuds de cluster de ce domaine de topologie. L'adresse IP doit être identique à celle de la passerelle dans le fichier de blocage des adresses IP. Pour en savoir plus, consultez l'exemple de fichier de bloc d'adresses IP pour les domaines de topologie.

topologyDomains[i].network.dnsServers

Immuable
Tableau de chaînes.
Le nombre maximal d'éléments dans le tableau est de trois.

Adresses IP des serveurs DNS pour les VM.

topologyDomains[i].network.ntpServers

Immuable
Tableau de chaînes

Adresses IP des serveurs de temps que les VM utilisent.

topologyDomains[i].network.searchDomains

Facultatif
Immuable
Tableau de chaînes

Domaines de recherche DNS que les VM utilisent. Ces domaines sont utilisés dans une liste de recherche de domaines.

Exemple :

topologyDomains:
- name: "td-01"
  network:
    hostConfig:
      searchDomainsForDNS:
      - "my.local.com"

topologyDomains[i].defaultTopologyDomain

Immuable
Facultatif
Chaîne

Nom du domaine de topologie par défaut. Ce nom doit correspondre à l'un des noms de topologyDomains[i].name. Si vous ne spécifiez pas de nom par défaut au moment de la création du cluster, vous pouvez mettre à jour le fichier de configuration avec un nom si nécessaire, puis exécuter gkectl update admin pour mettre à jour la configuration dans le cluster.

Les nœuds sont alloués au domaine de topologie par défaut, sauf si vous définissez un domaine de topologie pour les nœuds du plan de contrôle ou les nœuds d'un pool de nœuds.

Exemple de fichier de configuration

L'exemple suivant montre un fichier de configuration avec des valeurs renseignées.

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"