Neste guia, explicamos como configurar o Provedor de nuvem do OpenStack para Kubernetes no seu cluster bare metal. O OpenStack Cloud Provider precisa ser configurado para expor os serviços do Kubernetes usando o OpenStack LBaaS (em inglês).
Pré-requisitos
Neste guia, presumimos que você tenha um cluster criado com o Google Distributed Cloud em execução no seu ambiente do OpenStack com uma configuração semelhante à explicada no guia Implantar um cluster bare metal no OpenStack. Siga esse guia antes de seguir estas etapas.

Configure o provedor
Na seção a seguir, pressupomos que você esteja começando de uma janela de terminal na estação de trabalho local.
Crie o arquivo de configuração do cliente do OpenStack (
openrc). É possível fazer o download na IU da Web do OpenStack.source PATH_TO_OPENRC_FILE/openrcCrie o arquivo de configuração do provedor de nuvem do Kubernetes do 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 EOFSubstitua:
OS_AUTH_URL,OS_USERNAME,OS_PASSWORD: essas variáveis já devem estar definidas no ambiente por meio da origem do arquivoopenrc. Assim, eles serão retirados automaticamente.PUBLIC_NETWORK_ID: é a versão de acesso público rede na implantação do OpenStack da qual os endereços IP flutuantes são alocada. É dessa rede que osLoadBalancer IPsdos serviços do Kubernetes serão atribuídos. É possível usar um comando de uma linha para buscar esse IP no ambiente do OpenStack.ABM_NETWORK_SUBNET_ID: é a sub-rede na rede privada na implantação do OpenStack a partir da qual os IPs são alocados para as VMs que executam o Google Distributed Cloud somente software. É possível usar um comando semelhante a Consiga o ID da rede pública no OpenStack para buscar esse IP no ambiente do OpenStack.
Busque o endereço IP flutuante público da 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 '"')Copie o arquivo
cloud.confna VMabm-wsno OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~Use SSH para se conectar com segurança à VM
abm-wse faça login como usuárioroot.O usuário
root, conforme configurado pelos scripts do Terraform, éabm.ssh ubuntu@$FLOATING_IP sudo -u abm -iCopie os arquivos
cloud.confpara o diretório$HOMEdo usuárioroot.cp /home/ubuntu/cloud.conf $HOMECrie um
Kubernetes Secretcom a configuração.# 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.confInstale o OpenStack Cloud Provider 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
Validar a integração do OpenStack
Implante a amostra de aplicativo Point-of-Sales.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales.yamlVerifique se os pods do aplicativo estão em execução.
kubectl get podsSaída esperada:
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 74sExposição do aplicativo por meio de um serviço do tipo
LoadBalancer.kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-samples/master/anthos-bm-openstack-terraform/resources/point-of-sales-service.yamlTente acessar o serviço em um 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 4m12sAplicativo de ponto de venda acessado com o
EXTERNAL-IP.
Há um novo balanceador de carga do OpenStack sendo criado no OpenStack ao acessar a IU da Web do OpenStack.
