En esta guía, se explica cómo configurar el proveedor de servicios en la nube de OpenStack para Kubernetes en tu clúster de equipos físicos. El proveedor de servicios en la nube de OpenStack debe configurarse para exponer los Services de Kubernetes mediante OpenStack LBaaS.
Requisitos previos
En esta guía, se supone que tienes un clúster creado con Google Distributed Cloud que se ejecuta en tu entorno de OpenStack con una configuración similar a la que se explica en la guía Implementa un clúster de equipos físicos en OpenStack. Sigue esa guía antes de probar estos pasos.

Configura el proveedor
En la siguiente sección, se asume que estás comenzando desde una ventana de la terminal en tu estación de trabajo local.
Obtén el archivo de configuración del cliente de OpenStack (
openrc). Puedes descargarlo desde la IU web de OpenStack.source PATH_TO_OPENRC_FILE/openrcCrea el archivo de configuración para el proveedor de servicios en la nube de Kubernetes de 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 EOFReemplaza lo siguiente:
OS_AUTH_URL,OS_USERNAME,OS_PASSWORD: Estas variables ya deben haberse configurado en el entorno mediante el aprovisionamiento del archivoopenrc. Por lo tanto, se tomarán de forma automática.PUBLIC_NETWORK_ID: Esta es la red de acceso público en tu implementación de OpenStack desde la que se asignan las direcciones IP flotantes. Desde esta red, se asignará elLoadBalancer IPspara los servicios de Kubernetes. Puedes usar un comando de una sola línea para recuperar esta IP desde tu entorno de OpenStack.ABM_NETWORK_SUBNET_ID: Esta es la subred en la red privada de tu implementación de OpenStack desde la que se asignan las IPs para las VMs que ejecutan Google Distributed Cloud (solo software). Puedes usar un comando similar a Obtén el ID de la red pública en OpenStack para recuperar esta IP desde tu entorno de OpenStack.
Recupera la dirección IP flotante pública 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 '"')Copia el archivo
cloud.confen la VMabm-wsen OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~Usa SSH para conectarte de forma segura a la VM
abm-wsy acceder como usuarioroot.El usuario
rootconfigurado por las secuencias de comandos de Terraform esabm.ssh ubuntu@$FLOATING_IP sudo -u abm -iCopia los archivos
cloud.confen el directorio$HOMEdel usuarioroot.cp /home/ubuntu/cloud.conf $HOMECrea un
Kubernetes Secretcon la configuración.# 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.confInstala el proveedor de servicios en la nube de OpenStack para 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
Valida la integración de OpenStack
Implementa la aplicación de punto de venta de muestra.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yamlVerifica si los pods de la aplicación se están ejecutando.
kubectl get podsResultado esperado:
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 74sSe expuso la aplicación a través de un servicio de tipo
LoadBalancer.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yamlIntenta acceder al servicio desde un navegador.
# 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 4m12sAplicación de punto de venta a la que se accede mediante
EXTERNAL-IP.
Puedes notar que se crea un nuevo balanceador de cargas de OpenStack en OpenStack si visitas la IU web de OpenStack.
