Configurer vos clusters pour utiliser OpenStack

GDCV pour Bare Metal est compatible avec le fournisseur de cloud OpenStack pour Kubernetes. Cette fonctionnalité permet de provisionner automatiquement des ressources LBaaS (Load Balancing as a Service) OpenStack. Ces ressources peuvent remplacer les ressources MetaLB pour exposer facilement les services exécutés sur vos clusters Anthos sur Bare Metal à d'autres locataires OpenStack ou en dehors du réseau OpenStack.

Avant de commencer

Choisissez les clusters Anthos qui doivent utiliser des ressources LBaaS OpenStack.

Vérifiez que vous avez accès aux machines que vous essayez de configurer.

Obtenez plus d'informations sur l'exécution de cloud-controller-manager dans la documentation de Kubernetes.

Modifier le fichier de configuration de vos clusters

Le fournisseur cloud OpenStack Kubernetes nécessite que kubelet s'exécute sur tous les nœuds avec l'argument suivant :

cloud-provider: "external"

Pour vous assurer que vos clusters Anthos répondent facilement à cette exigence, ajoutez l'annotation baremetal.cluster.gke.io/external-cloud-provider: "true" au fichier de configuration de vos clusters sous la section des métadonnées avant de les initialiser.

L'entrée de votre fichier de configuration doit ressembler à l'exemple suivant :

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations:
    baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
  ..

Certains fournisseurs cloud sur d'autres plates-formes cloud nécessitent un format spécial pour providerID. GKE sur Bare Metal génère une providerID pour chaque machine. Le format est semblable à baremetal://MACHINE_ADDRESS. Si vous souhaitez utiliser une valeur providerID différente, vous pouvez en spécifier une pour chaque nœud ainsi que l'adresse IP. La configuration se présente comme suit :

 apiVersion: baremetal.cluster.gke.io/v1
 kind: Cluster
 metadata:
   name: cluster1
   namespace: cluster-cluster1
 spec:
   clusterNetwork:
     pods:
       cidrBlocks:
       - 192.168.0.0/16
     services:
       cidrBlocks:
       - 10.96.0.0/20
   controlPlane:
     nodePoolSpec:
       nodes:
       - address: 10.200.0.1
+        providerID: some-prefix://unique-string
       - address: 10.200.0.2
+        providerID: some-prefix2://unique-string2
  ...

---
 apiVersion: baremetal.cluster.gke.io/v1
 kind: NodePool
 metadata:
   name: nodepool1
   namespace: cluster-admin1
 spec:
   clusterName: admin1
   nodes:
   - address: 172.18.0.2
+    providerID: some-prefix3://unique-string3

Après avoir modifié le fichier de configuration, utilisez la commande suivante pour initialiser votre cluster :

bmctl create cluster -c cluster1

Tous les nœuds dans cluster1 s'exécutent maintenant avec l'argument requis : cloud-provider: "external"

Tous les nœuds disposent également des champs suivants ajoutés à leurs fichiers de configuration :

taints:
- effect: NoSchedule
  key: node.cloudprovider.kubernetes.io/uninitialized
  value: "true"

Ces champs sont supprimés après l'initialisation de votre fournisseur cloud sur ce cluster.

kubelet sera exécuté avec l'ID providerID fourni si vous en avez spécifié un pour ce nœud.