Ce guide explique comment configurer le fournisseur cloud OpenStack pour Kubernetes dans votre cluster GKE sur une solution Bare Metal. Le fournisseur cloud OpenStack doit être configuré pour exposer les services Kubernetes à l'aide de OpenStack LBaaS.
Prérequis
Ce guide suppose que vous disposez d'un cluster GKE sur Bare Metal s'exécutant dans votre environnement OpenStack avec une configuration semblable à celle décrite dans le guide Déployer GDCV pour Bare Metal sur OpenStack. Suivez ce guide avant d'essayer ces étapes.
Configurer le fournisseur
La section suivante suppose que vous démarrez depuis une fenêtre de terminal sur votre poste de travail local.
Générez le fichier de configuration du client OpenStack (
openrc
). Vous pouvez le télécharger depuis l'interface utilisateur Web d'OpenStack.source PATH_TO_OPENRC_FILE/openrc
Créez le fichier de configuration pour le fournisseur cloud OpenStack Kubernetes.
cat > cloud.conf << EOF [Global] auth-url=${OS_AUTH_URL} username=${OS_USERNAME} password=${OS_PASSWORD} region=RegionOne tenant-name=admin domain-id=default # this is for using a self-signed cert if your using a CA then comment this line # and point to the CA certificate using the "ca-file" arg tls-Insecure=true [LoadBalancer] use-octavia=true # this is generally the public network on OpenStack floating-network-id=PUBLIC_NETWORK_ID # this should be private network subnet where vip is allocated for the ABM nodes subnet-id=ABM_NETWORK_SUBNET_ID [BlockStorage] bs-version=v2 EOF
Remplacez les éléments suivants :
OS_AUTH_URL
,OS_USERNAME
,OS_PASSWORD
: ces variables doivent déjà être définies dans l'environnement en générant le fichieropenrc
. Ainsi, elles sont automatiquement récupérées.PUBLIC_NETWORK_ID
: réseau accessible au public dans votre déploiement OpenStack à partir duquel des adresses IP flottantes sont allouées. LesLoadBalancer IPs
pour les services Kubernetes seront assignées à partir de ce réseau. Vous pouvez utiliser une commande semblable à celle-ci pour extraire cette adresse IP de votre environnement OpenStack.ABM_NETWORK_SUBNET_ID
: sous-réseau du réseau privé de votre déploiement OpenStack à partir duquel les adresses IP sont allouées aux VM exécutant GKE sur une solution Bare Metal. Vous pouvez utiliser une commande semblable à celle-ci pour extraire cette adresse IP de votre environnement OpenStack.
Extrayez l'adresse IP flottante publique de la VM
abm-ws
.export OPENSTACK_IPS=$(openstack floating ip list --tags=abm_ws_floatingip -f json) export FLOATING_IP=$(jq -c '.[]."Floating IP Address"' <<< $OPENSTACK_IPS | tr -d '"')
Copiez le fichier
cloud.conf
dans la VMabm-ws
dans OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~
Ouvrez une session sécurisée dans la VM
abm-ws
via SSH et connectez-vous en tant qu'utilisateurroot
. L'utilisateurroot
tel que configuré par les scripts Terraform estabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Copiez les fichiers
cloud.conf
dans le répertoire$HOME
de l'utilisateurroot
.cp /home/ubuntu/cloud.conf $HOME
Créez un
Kubernetes Secret
avec la configuration.# make sure the kubectl client is pointing towards your Anthos on bare metal cluster export KUBECONFIG=~/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig # store the provider configurations as a Kubernetes secret kubectl create secret -n kube-system generic cloud-config --from-file=cloud.conf
Installez le fournisseur cloud OpenStack pour Kubernetes.
# create the necessary roles for the OpenStack provider kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/cloud-controller-manager-roles.yaml # create the required role-bindings for the OpenStack provider kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/cloud-controller-manager-role-bindings.yaml # create the OpenStack controller manager kubectl apply -f https://raw.githubusercontent.com/kubernetes/cloud-provider-openstack/master/manifests/controller-manager/openstack-cloud-controller-manager-ds.yaml
Valider l'intégration à OpenStack
Déployez l'exemple d'application Point-Of-Sales.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yaml
Vérifiez si les pods d'application sont en cours d'exécution.
kubectl get pods
Résultat attendu :
NAME READY STATUS RESTARTS AGE api-server-7db4777f7f-zflk5 1/1 Running 0 74s inventory-58c6fb5568-dqk2x 1/1 Running 0 74s payments-68d5d65d5c-5mjl6 1/1 Running 0 74s
L'application est exposée via un service de type
LoadBalancer
.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yaml
Essayez d'accéder au service à partir d'un navigateur.
# wait for the external IP to be assigned kubectl get service api-server-lb NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE api-server-lb LoadBalancer 10.203.77.215 172.29.249.159 80:32378/TCP 4m12s
L'application Point-Of-Sales est accessible via l'
EXTERNAL-IP
.Vous pouvez constater qu'un nouvel équilibreur de charge OpenStack est en cours de création dans OpenStack en accédant à l'interface utilisateur Web d'OpenStack.