Este tutorial demonstra como usar o Google Kubernetes Engine (GKE) para expor a sua aplicação Web à Internet num endereço IP externo estático e configurar um nome de domínio para apontar para a sua aplicação.
Este tutorial pressupõe que tem um nome de domínio registado, como example.com
.
Implemente a sua aplicação Web
O manifesto seguinte descreve uma implementação que executa uma imagem de contentor de aplicação Web de exemplo:
Crie a implementação:
kubectl apply -f helloweb-deployment.yaml
Exponha a sua aplicação
Pode expor a sua aplicação no GKE através de qualquer um dos seguintes métodos:
Use um serviço, que cria um balanceador de carga de rede de encaminhamento externo que funciona com endereços IP regionais.
Use um Ingress, que cria um balanceador de carga de aplicações e suporta endereços IP globais.
Para saber mais acerca das vantagens e desvantagens de cada método, consulte Configurar um Application Load Balancer externo com o Ingress.
Utilize um serviço
Para garantir que a sua aplicação tem um endereço IP externo estático, tem de reservar um endereço IP estático.
Se optar por expor a sua aplicação através de um serviço, tem de criar um endereço IP regional. Os endereços IP globais só funcionam com o tipo de recurso de entrada, conforme explicado na secção seguinte.
Para usar um serviço, crie um endereço IP estático denominado helloweb-ip
na região us-central1
:
gcloud
gcloud compute addresses create helloweb-ip --region us-central1
Encontre o endereço IP estático que criou:
gcloud compute addresses describe helloweb-ip --region us-central1
O resultado é semelhante ao seguinte:
...
address: 203.0.113.32
...
Config Connector
Nota: este passo requer o Config Connector. Siga as instruções de instalação para instalar o Config Connector no seu cluster.
Guarde o manifesto como compute-address-regional.yaml
.
Aplique o manifesto ao cluster:
kubectl apply -f compute-address-regional.yaml
Encontre o endereço IP estático que criou:
kubectl get computeaddress helloweb-ip -o jsonpath='{.spec.address}'
O manifesto seguinte descreve um serviço do tipo LoadBalancer, que cria um Network Load Balancer de encaminhamento externo para expor pods com um endereço IP externo.
Substitua YOUR.IP.ADDRESS.HERE
pelo endereço IP estático:
Crie o serviço:
kubectl apply -f helloweb-service-static-ip.yaml
Veja o endereço IP reservado associado ao equilibrador de carga:
kubectl get service
O resultado é semelhante ao seguinte:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s
Use um Ingress
Se optar por expor a sua aplicação através de um
Ingress,
tem de
reservar um endereço IP estático global.
Use a anotação kubernetes.io/ingress.global-static-ip-name
para especificar um endereço IP global.
Para expor a sua aplicação a clientes e serviços numa região, use um endereço IP interno estático regional ao implementar um recurso de entrada interno para o GKE, juntamente com as anotações necessárias.
Para saber como usar o Ingress para expor as suas aplicações à Internet, consulte o artigo Configurar um equilibrador de carga de aplicações externo com o Ingress.
Para criar um endereço IP estático global com o nome helloweb-ip
:
gcloud
gcloud compute addresses create helloweb-ip --global
Encontre o endereço IP estático que criou:
gcloud compute addresses describe helloweb-ip --global
O resultado é semelhante ao seguinte:
...
address: 203.0.113.32
...
Config Connector
Nota: este passo requer o Config Connector. Siga as instruções de instalação para instalar o Config Connector no seu cluster.
Guarde o manifesto como compute-address-global.yaml
.
Aplique o manifesto ao cluster:
kubectl apply -f compute-address-global.yaml
O manifesto seguinte descreve um Ingress que expõe uma aplicação Web num IP estático com dois recursos:
Service
comtype:NodePort
- Um
Ingress
configurado com o nome do serviço e a anotação de IP estático
A anotação kubernetes.io/ingress.global-static-ip-name
especifica o nome do recurso de endereço IP global a associar ao balanceador de carga.
Aplique o manifesto ao cluster:
kubectl apply -f helloweb-ingress-static-ip.yaml
Veja o endereço IP associado ao equilibrador de carga:
kubectl get ingress
O resultado é semelhante ao seguinte
NAME HOSTS ADDRESS PORTS AGE
helloweb * 203.0.113.32 80 4m
Veja o seu endereço IP estático reservado
Para verificar se o balanceador de carga está configurado corretamente, pode usar um navegador de Internet para visitar o endereço IP ou usar curl
:
curl http://203.0.113.32/
O resultado é semelhante ao seguinte:
Hello, world!
Hostname: helloweb-3766687455-8lvqv
Configure os registos do nome de domínio
Para que os navegadores que consultam o seu nome de domínio, como example.com
, ou o nome do subdomínio, como blog.example.com
, apontem para o endereço IP estático que reservou, tem de atualizar os registos DNS (servidor de nomes de domínio) do seu nome de domínio.
Tem de criar um registo DNS do tipo A (Endereço) para o nome do seu domínio ou subdomínio e ter o respetivo valor configurado com o endereço IP reservado
Os registos DNS do seu domínio são geridos pelo seu servidor de nomes. O seu servidor de nomes pode ser a "entidade de registo" onde registou o seu domínio, um serviço DNS, como o Cloud DNS, ou outro fornecedor de terceiros.
Se o seu servidor de nomes for o Cloud DNS: siga o guia de início rápido do Cloud DNS para configurar o registo A de DNS para o seu nome de domínio com o endereço IP reservado da sua aplicação.
Se o seu servidor de nomes for outro fornecedor: consulte a documentação do seu fornecedor de DNS sobre a definição de registos A de DNS para configurar o seu nome de domínio. Se optar por usar o Cloud DNS, consulte o artigo Migrar para o Cloud DNS.
Visite o nome do seu domínio
Para verificar se os registos A de DNS do nome do seu domínio são resolvidos para o endereço IP que reservou, visite o nome do seu domínio.
Para fazer uma consulta de DNS para o registo A do nome do domínio, execute o comando host
:
host example.com
O resultado é semelhante ao seguinte:
example.com has address 203.0.113.32
Agora, pode direcionar o navegador de Internet para o nome do domínio e visitar o seu Website.