Neste guia, explicamos como configurar o Provedor de nuvem do OpenStack para Kubernetes (em inglês) nos clusters do Anthos em 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
Para este guia, presumimos que você tenha clusters do Anthos em cluster bare metal em execução no ambiente do OpenStack com uma configuração semelhante ao explicada no guia Implantar clusters do Anthos em Bare Metal no OpenStack de dados. Primeiro, 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/openrc
Crie 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 EOF
Substitua:
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 rede acessível publicamente na implantação do OpenStack a partir da qual os IPs flutuantes são alocados. É dessa rede que osLoadBalancer IPs
dos serviços do Kubernetes serão atribuídos. Você pode usar um comando semelhante a este 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 clusters do Anthos em bare metal. Você pode usar um comando semelhante a este 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.conf
na VMabm-ws
no OpenStack.scp ./cloud.conf ubuntu@$FLOATING_IP:~
Faça login com segurança na VM
abm-ws
usando o SSH e faça login como usuárioroot
. O usuárioroot
, conforme configurado pelos scripts do Terraform, éabm
.ssh ubuntu@$FLOATING_IP sudo -u abm -i
Copie os arquivos
cloud.conf
para o diretório$HOME
do usuárioroot
.cp /home/ubuntu/cloud.conf $HOME
Crie um
Kubernetes Secret
com a configuração.# 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
Instale 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.yaml
Verifique se os pods do aplicativo estão em execução.
kubectl get pods
Saí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 74s
Exposiçã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.yaml
Tente 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 4m12s
Aplicativo 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.