Questa guida spiega come configurare il provider cloud OpenStack per Kubernetes nel tuo cluster GKE su Bare Metal. Il provider cloud OpenStack deve essere configurato per esporre i servizi Kubernetes utilizzando OpenStack LBaaS.
Prerequisiti
Questa guida presuppone che tu abbia un cluster GKE su Bare Metal in esecuzione nel tuo ambiente OpenStack con una configurazione simile a quella spiegata nella guida Esegui il deployment di GDCV per Bare Metal su OpenStack. Segui questa guida prima di provare questi passaggi.
![GKE su Bare Metal installato su OpenStack.](https://cloud.google.com/anthos/clusters/docs/bare-metal/1.16/images/openstack-setup.png?hl=it)
Configura il provider
La sezione seguente presuppone che tu stia avviando da una finestra del terminale nella workstation locale.
Origine del file di configurazione client OpenStack (
openrc
). Puoi scaricarla da OpenStack WebUI.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 eseguendo l'origine del fileopenrc
. Verranno automaticamente selezionati.PUBLIC_NETWORK_ID
: questa è la rete accessibile pubblicamente nel deployment OpenStack da cui vengono allocati gli IP mobili. È da questa rete che 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 deployment OpenStack da cui vengono allocati gli IP per le VM che eseguono GKE 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 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 OpenStack
Esegui il deployment dell'applicazione Point-of-Sales di esempio.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yaml
Verifica se i pod dell'applicazione sono 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
Applicazione esposta 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-Sales a cui è stato eseguito l'accesso mediante
EXTERNAL-IP
.Puoi notare la creazione di un nuovo bilanciatore del carico OpenStack in OpenStack. Visita la UI web di OpenStack.