Questa guida spiega come configurare il provider cloud OpenStack per Kubernetes nei cluster Anthos su Bare Metal. Il cloud provider OpenStack deve essere configurato per esporre i servizi Kubernetes tramite LBaaS OpenStack.
Prerequisiti
Questa guida presuppone che tu abbia un cluster Anthos su Bare Metal in esecuzione nel tuo ambiente OpenStack con una configurazione simile a quella spiegata nella guida Deployment di cluster Anthos su Bare Metal su OpenStack. Segui questa guida prima di provare a seguire questi passaggi.
Configura il provider
La sezione seguente presuppone che tu stia iniziando da una finestra del terminale nella workstation locale.
Scegli come origine il file di configurazione del client OpenStack (
openrc
). Puoi scaricarla dalla WebUI OpenStack.source PATH_TO_OPENRC_FILE/openrc
Crea il file di configurazione per il cloud provider Kubernetes OpenStack.
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
Sostituisci quanto segue:
OS_AUTH_URL
,OS_USERNAME
,OS_PASSWORD
: queste variabili dovrebbero essere già impostate nell'ambiente tramite il fileopenrc
di origine. Di conseguenza, verranno ritirati automaticamente.PUBLIC_NETWORK_ID
: questa è la rete accessibile pubblicamente nel deployment di OpenStack da cui vengono allocati gli IP mobili. Da questa rete verrà assegnato ilLoadBalancer IPs
per i servizi Kubernetes. Puoi utilizzare un comando simile a questo per recuperare questo IP dal tuo ambiente OpenStack.ABM_NETWORK_SUBNET_ID
: questa è la subnet sulla rete privata nel tuo deployment OpenStack da cui vengono allocati gli IP per le VM che eseguono i cluster Anthos su Bare Metal. Puoi utilizzare un comando simile a questo 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.conf
nella VMabm-ws
in OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~
Accedi in modo sicuro alla VM
abm-ws
tramite SSH e accedi come utenteroot
. L'utenteroot
come configurato dagli script Terraform èabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Copia i file
cloud.conf
nella directory$HOME
dell'utenteroot
.cp /home/ubuntu/cloud.conf $HOME
Crea un
Kubernetes Secret
con la configurazione.# 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
Installare il cloud provider open source 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
Esegui 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.yaml
Verifica che i pod dell'applicazione siano in esecuzione.
kubectl get pods
Output 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 74s
Ha esposto 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.yaml
Prova 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 4m12s
Applicazione point of sale a cui è stato eseguito l'accesso tramite
EXTERNAL-IP
.Puoi notare che viene creato un nuovo bilanciatore del carico OpenStack in OpenStack visitando la WebUI OpenStack.