Ce guide explique comment configurer le fournisseur cloud OpenStack pour Kubernetes dans votre cluster Anthos clusters on bare metal. Le fournisseur cloud OpenStack doit être configuré pour exposer les services Kubernetes à l'aide de OpenStack LBaaS.
Prerequisites
Ce guide suppose que vous disposez d'un cluster Anthos on Bare Metal dans votre environnement OpenStack avec une configuration semblable à celle expliquée dans le guide Déployer des clusters Anthos on Bare Metal sur OpenStack. Veuillez d'abord suivre ce guide avant d'effectuer ces étapes.
![Clusters Anthos sur Bare Metal installés sur OpenStack.](https://cloud.google.com/anthos/clusters/docs/bare-metal/1.13/images/openstack-setup.png?hl=fr)
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é dans votre déploiement OpenStack à partir duquel les adresses IP sont allouées aux VM exécutant des clusters Anthos sur 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.