Configurer vos clusters pour utiliser OpenStack

GKE sur Bare Metal permet d'utiliser OpenStack en tant que plate-forme cloud privée. Ce guide explique comment configurer un cluster GKE sur Bare Metal pour collaborer avec un fournisseur cloud externe. L'exécution de GKE sur des clusters Bare Metal sur OpenStack vous permet d'utiliser les services OpenStack suivants:

  • Infrastructure as a Service (IaaS)

  • Load balancing as a Service (LBaaS)

  • Stockage

La configuration d'un cluster pour qu'il fonctionne avec OpenStack comprend les étapes suivantes:

  • Lorsque vous créez le cluster, vous ajoutez une annotation baremetal.cluster.gke.io/external-cloud-provider.

  • Cette annotation oblige GKE sur Bare Metal à ajouter un indicateur kubelet cloud-provider=external.

  • Le kubelet ajoute ensuite des rejets node.cloudprovider.kubernetes.io/uninitialized:NoSchedule aux nœuds du cluster.

Avec cette configuration, vous et OpenStack êtes propriétaire des processus d'initialisation des nœuds. Par exemple, vous pouvez déployer GKE sur Bare Metal sur OpenStack pour provisionner automatiquement des ressources OpenStack Load Balancing en tant que service (LBaaS) ou pour utiliser d'autres fonctionnalités OpenStack. Les ressources LBaaS peuvent remplacer les ressources MetalLB pour exposer les services exécutés sur vos clusters GKE sur Bare Metal à d'autres locataires OpenStack ou en dehors du réseau OpenStack. Pour en savoir plus sur les fonctionnalités et les avantages d'OpenStack, consultez la documentation OpenStack.

Ce document explique uniquement comment configurer votre cluster pour l'utiliser avec OpenStack. Les guides suivants présentent un exemple de déploiement:

  • L'article Déployer un cluster GKE sur Bare Metal sur OpenStack vous guide à travers un exemple de déploiement d'un cluster hybride GKE sur Bare Metal sur des machines virtuelles (VM) OpenStack. Le déploiement utilise un script pour simplifier l'installation. Il présente également un moyen d'activer l'équilibrage de charge en tant que service (LBaaS).

  • L'article Configurer le fournisseur cloud OpenStack pour Kubernetes indique comment installer le fournisseur cloud OpenStack sur un cluster GKE sur bare metal déployé sur OpenStack. Le fournisseur cloud OpenStack n'est pas obligatoire pour utiliser GKE sur une solution Bare Metal avec OpenStack.

Avant de commencer

  • Déterminez les clusters GKE qui doivent utiliser les ressources OpenStack LBaaS.

    Une fois que vous avez créé un cluster configuré pour utiliser les ressources OpenStack LBaaS, vous ne pouvez plus modifier la configuration pour passer aux ressources MetalLB. Veillez à initialiser vos clusters avec la configuration appropriée du fournisseur de services cloud.

  • Assurez-vous d'avoir accès aux machines que vous essayez de configurer.

Apprenez-en plus sur l'exécution de cloud-controller-manager dans la documentation de Kubernetes.

Modifier le fichier de configuration de votre cluster

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 votre cluster GKE répond à cette exigence, ajoutez l'annotation baremetal.cluster.gke.io/external-cloud-provider: "true" au fichier de configuration de votre cluster dans la section des métadonnées avant de créer le cluster.

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 de services cloud sur d'autres plates-formes cloud exigent un format spécial pour providerID. GKE sur Bare Metal génère un providerID avec un format tel que baremetal://MACHINE_ADDRESS pour chaque machine de nœud. Si vous souhaitez utiliser un providerID différent, vous pouvez en spécifier un pour chaque nœud ainsi que l'adresse IP.

L'exemple de fichier de configuration de cluster suivant montre comment spécifier l'option providerID pour les nœuds de votre cluster:

 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-cluster1
 spec:
   clusterName: cluster1
   nodes:
   - address: 172.18.0.2
+    providerID: some-prefix3://unique-string3

Créer votre cluster

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

bmctl create cluster -c cluster1

Pour en savoir plus sur la création de clusters, consultez la section Présentation de la création de clusters.

Configuration des nœuds

Lorsque vous créez un cluster configuré pour OpenStack, les nœuds du cluster apportent les modifications suivantes:

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

  • Le rejet suivant a également été ajouté à leurs fichiers de configuration pour tous les nœuds:

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

    Ces rejets sont supprimés une fois que vous avez initialisé votre fournisseur de services cloud sur ce cluster.

  • kubelet s'exécute avec le providerID que vous avez spécifié dans le fichier de configuration du cluster.

Étapes suivantes