Il provider cloud OpenStack per Kubernetes ti consente di utilizzare il bilanciamento del carico OpenStack per un cluster eseguito su VM OpenStack.
Dopo aver installato e configurato il provider, ogni servizio di tipo LoadBalancer riceve un bilanciatore del carico OpenStack Octavia e un indirizzo IP esterno dalla rete IP mobile. In questo documento, verifichi l'integrazione esponendo un'applicazione di esempio.
Prerequisiti
Questa guida presuppone che tu abbia un cluster creato con Google Distributed Cloud in esecuzione nel tuo ambiente OpenStack con una configurazione simile a quella spiegata nella guida Esegui il deployment di un cluster bare metal su OpenStack. Segui questa guida prima di provare questi passaggi.

Configura il provider
La sezione seguente presuppone che tu stia partendo da una finestra del terminale nella tua workstation locale.
Esegui il sourcing del file di configurazione del client OpenStack (
openrc). Puoi scaricarlo dalla WebUI di OpenStack.source PATH_TO_OPENRC_FILE/openrcCrea il file di configurazione per il cloud provider 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 EOFSostituisci quanto segue:
OS_AUTH_URL,OS_USERNAME,OS_PASSWORD: queste variabili dovrebbero essere già impostate nell'ambiente tramite l'origine del fileopenrc. Pertanto, verranno rilevati automaticamente.PUBLIC_NETWORK_ID: questa è la rete accessibile pubblicamente nel tuo deployment OpenStack da cui vengono allocati gli indirizzi IP mobili. È da questa rete che verrà assegnato l'indirizzoLoadBalancer IPsper i servizi Kubernetes. Puoi utilizzare un comando di una riga per recuperare questo IP dal tuo ambiente OpenStack.ABM_NETWORK_SUBNET_ID: questa è la subnet della rete privata nel tuo deployment OpenStack da cui vengono allocati gli IP per le VM che eseguono Google Distributed Cloud solo software. Puoi utilizzare un comando simile a Recupera l'ID della rete pubblica in OpenStack per recuperare questo IP dal tuo ambiente OpenStack.
Recupera l'indirizzo IP mobile pubblico della 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 '"')Copia il file
cloud.confnella VMabm-wsin OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~Utilizza SSH per connetterti in modo sicuro alla VM
abm-wse accedi come utenteroot.L'utente
rootconfigurato dagli script Terraform èabm.ssh ubuntu@$FLOATING_IP sudo -u abm -iCopia i file
cloud.confnella directory$HOMEdell'utenteroot.cp /home/ubuntu/cloud.conf $HOMECrea un
Kubernetes Secretcon la configurazione.# make sure the kubectl client is pointing towards your 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.confInstalla il provider cloud OpenStack per 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
Convalida l'integrazione di OpenStack
Eseguire il deployment dell'applicazione Point of Sale di esempio.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yamlVerifica se i pod dell'applicazione sono in esecuzione.
kubectl get podsOutput previsto:
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 74sEsposto l'applicazione tramite un servizio di tipo
LoadBalancer.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yamlProva ad accedere al servizio da un browser.
# 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 4m12sApplicazione Point of Sale a cui si accede utilizzando
EXTERNAL-IP.
Puoi notare che un nuovo bilanciatore del carico OpenStack viene creato in OpenStack visitando l'interfaccia utente web di OpenStack.
