Neste tutorial, demonstramos como usar o Google Kubernetes Engine (GKE) para publicar seu aplicativo da Web na Internet em um endereço IP externo estático e configurar um nome de domínio para apontar para o aplicativo.
Este tutorial pressupõe que você tem um nome de domínio registrado (como example.com
).
É possível registrar um nome de domínio no Google
Domains ou em outro registro de domínios de sua preferência, caso não tenha um.
Objetivos
O tutorial demonstra as seguintes etapas:
Antes de começar
Siga estas etapas para ativar a API do Kubernetes Engine:- Acesse a página do Kubernetes Engine no Console do Google Cloud.
- Crie ou selecione um projeto.
- Aguarde a ativação da API e dos serviços relacionados. Isso pode levar alguns minutos.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.
Instale as ferramentas de linha de comando a seguir usadas neste tutorial:
-
gcloud
é usado para criar e excluir clusters do Kubernetes Engine.gcloud
está incluído no SDK do Google Cloud. -
O
kubectl
é usado para gerenciar o Kubernetes, o sistema de orquestração de cluster usado pelo Kubernetes Engine. É possível instalarkubectl
usandogcloud
:gcloud components install kubectl
Clone o código de amostra do GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests
Definir padrões para a ferramenta de linha de comando gcloud
Para poupar tempo, em vez de digitar o ID do projeto e as opções de zona do Compute Engine na ferramenta de linha de comando gcloud
, defina os padrões:gcloud config set project project-id gcloud config set compute/zone compute-zone
Crie um cluster
Crie um cluster de contêiner chamado domain-test
para implantar seu aplicativo da Web:
gcloud container clusters create domain-test
Como implantar o aplicativo da Web
No manifesto a seguir, veja uma implantação que executa uma imagem de amostra do contêiner de aplicativo da Web:
Execute o seguinte comando para criar a implantação:
kubectl apply -f helloweb-deployment.yaml
Como expor seu aplicativo
Você pode expor seu aplicativo no GKE usando um dos seguintes métodos:
Use um Serviço, que cria um balanceador de carga de rede TCP que trabalha com endereços IP regionais.
Use um Ingress, que cria um balanceador de carga HTTP(S) e aceita endereços IP globais.
Para saber mais sobre os prós e contras de cada método, consulte Como configurar o balanceamento de carga HTTP(S) com Ingress.
Usar um serviço
Para garantir que o aplicativo tenha um endereço IP público estático, é preciso reservar um endereço IP estático.
Se você optar por publicar o aplicativo usando um serviço, precisará criar um endereço IP regional. Endereços IP globais só funcionam com o tipo de recurso de entrada, conforme explicado na próxima seção.
Para usar um serviço, crie um endereço IP estático chamado helloweb-ip
na região us-central1
:
gcloud
gcloud compute addresses create helloweb-ip --region us-central1
Para encontrar o endereço IP estático que você criou, execute o seguinte comando:
gcloud compute addresses describe helloweb-ip --region us-central1Saída:
address: 203.0.113.32 ...
Config Connector
Observação: esta etapa requer o Config Connector. Siga estas instruções para instalar o Config Connector no cluster.
Para implantar esse manifesto, faça o download dele para sua máquina como compute-address-regional.yaml e execute:kubectl apply -f compute-address-regional.yamlPara encontrar o endereço IP estático, execute o seguinte comando:
kubectl get computeaddress helloweb-ip -o jsonpath='{.spec.address}'
O manifesto a seguir descreve um Serviço do tipo LoadBalancer, que cria um balanceador de carga de rede para expor pods com um IP público.
Substitua YOUR.IP.ADDRESS.HERE pelo endereço IP estático:
Em seguida, crie o serviço:
kubectl apply -f helloweb-service-static-ip.yaml
Para ver o endereço IP reservado associado ao balanceador de carga:
kubectl get serviceSaída:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s
Usar uma entrada
Se você escolher publicar o aplicativo usando um Ingress, que cria um balanceador de carga HTTP(S), precisará reservar um endereço IP estático global. Endereços IP regionais não funcionam com Ingress.
Para saber mais sobre como usar o Ingress para publicar seus aplicativos na Internet, consulte o tutorial Como configurar o balanceamento de carga HTTP(S) com Ingress.
Para criar um endereço IP estático global chamado helloweb-ip
:
gcloud
gcloud compute addresses create helloweb-ip --global
Para encontrar o endereço IP estático que você criou:
gcloud compute addresses describe helloweb-ip --globalSaída:
address: 203.0.113.32 ...
Config Connector
Observação: esta etapa requer o Config Connector. Siga estas instruções para instalar o Config Connector no cluster.
Para implantar esse manifesto, faça o download dele para sua máquina como compute-address-global.yaml e execute:kubectl apply -f compute-address-global.yaml
No manifesto a seguir, é descrita uma entrada que expõe um aplicativo da Web em um IP estático com dois recursos:
- Um
Service
comtype:NodePort
- Um
Ingress
configurado com o nome do serviço e a anotação de IP estática
A anotação kubernetes.io/ingress.global-static-ip-name
especifica o nome do recurso de endereço IP global a ser associado ao balanceador de carga HTTP(S).
Aplique o recurso ao cluster:
kubectl apply -f helloweb-ingress-static-ip.yamlSaída:
ingress "helloweb" created service "helloweb-backend" created
Para ver o endereço IP da reserva associado ao balanceador de carga:
kubectl get ingressSaída:
NAME HOSTS ADDRESS PORTS AGE helloweb * 203.0.113.32 80 4m
Como visitar seu endereço IP estático reservado
Para verificar se o balanceador de carga está configurado corretamente, é possível usar um navegador da Web para acessar o endereço IP ou usar curl
:
curl http://203.0.113.32/Saída:
Hello, world! Hostname: helloweb-3766687455-8lvqv
Como configurar registros de nome de domínio
Para que os navegadores que consultam seu nome de domínio (como example.com
) ou subdomínio
(como blog.example.com
) apontem para o endereço IP estático reservado,
atualize os registros DNS de seu nome de domínio.
Crie um registro DNS do tipo A (Endereço) para o nome de domínio ou subdomínio e configure o valor dele com o endereço IP reservado.
Os registros DNS do domínio são gerenciados pelo servidor de nomes. O servidor de nomes pode ser o "registrador" em que você registrou o domínio, um serviço DNS como o Cloud DNS ou outro provedor de terceiros.
Se o servidor de nomes for o Cloud DNS: siga o guia de início rápido do Cloud DNS para configurar o registro A de DNS do nome de domínio com o endereço IP reservado do aplicativo.
Se o servidor de nomes for outro provedor: consulte a documentação do serviço DNS sobre como definir registros A de DNS para configurar o nome de domínio. Se você optar por usar o Cloud DNS em vez disso, consulte Como migrar para o Cloud DNS.
Como acessar seu nome de domínio
Para verificar se os registros A do DNS do domínio são resolvidos para o endereço IP reservado, visite o nome de domínio.
Para fazer uma consulta DNS para o registro A do seu nome de domínio, execute o comando
host
:
host example.comSaída:
example.com has address 203.0.113.32
Neste ponto, você pode apontar o navegador da Web para o nome de domínio e visitar o site.
Limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Exclua os recursos de balanceamento de carga:
kubectl delete ingress,service -l app=hello
Libere o IP estático reservado. Depois que o balanceador de carga for excluído, o endereço IP não utilizado, mas reservado, não será mais gratuito e será cobrado pelo preço de endereço IP não utilizado. Execute os comandos a seguir para liberar o recurso de IP estático:
Se você usou um serviço:
gcloud compute addresses delete helloweb-ip --region us-central1
Se você usou uma entrada:
gcloud compute addresses delete helloweb-ip --global
Exclua o aplicativo de amostra:
kubectl delete -f helloweb-deployment.yaml
Aguarde até que o balanceador de carga seja excluído por meio da observação da saída do comando a seguir (a saída não precisa mostrar uma regra de encaminhamento que contenha "helloweb" no nome):
gcloud compute forwarding-rules list
Exclua o cluster do contêiner:
gcloud container clusters delete domain-test
A seguir
Registre seu próprio nome de domínio por meio do Google Domains.
Explore outros tutoriais do Kubernetes Engine.
Teste outros recursos do Google Cloud. Veja nossos tutoriais.