Este tutorial é destinado a arquitetos de nuvem e administradores de operações interessados em implantar um aplicativo da Web em um cluster do Google Kubernetes Engine (GKE) e expô-lo com um balanceador de carga HTTPS.
Objetivos
Neste tutorial, você aprenderá a:
- Criar um cluster do GKE.
- Crie um endereço IP global e uma zona do Cloud DNS com o Terraform.
- Configure o balanceamento de carga HTTPS.
- Implante um aplicativo da Web de amostra.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
Configurar o projeto
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
- Você precisa ser o proprietário de um nome de domínio. O nome do domínio não pode ter mais de 63 caracteres. É preciso usar o Google Domains ou outro registrador.
Configure seu ambiente
Neste tutorial, você usará o Cloud Shell para gerenciar recursos hospedados no
Google Cloud. O Cloud Shell vem pré-instalado com o software necessário para este tutorial, incluindo o Terraform, o kubectl
e a CLI gcloud..
Defina as variáveis de ambiente:
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1
Clone o repositório do código:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
Mude para o diretório de trabalho:
cd kubernetes-engine-samples/autopilot/networking-tutorial
Criar um cluster do GKE
O seguinte arquivo do Terraform cria um cluster do GKE:
O arquivo do Terraform a seguir cria um endereço IP global e uma zona do Cloud DNS:
Inicialize o Terraform:
terraform init
Veja as alterações na infraestrutura:
terraform plan
Quando solicitado, digite seu domínio, como
my-domain.net
.Aplique a configuração do Terraform:
terraform apply --auto-approve
Quando solicitado, digite seu domínio, como
my-domain.net
.O resultado será assim:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"
Criar um balanceador de carga de aplicativo externo
O manifesto a seguir descreve ManagedCertificate, FrontendConfig, Deployment, Service e Ingress:
Substitua
DOMAIN_NAME
pelo nome do seu domínio, comomy-domain.net
.Esse manifesto tem as seguintes propriedades:
networking.gke.io/managed-certificates
: o nome do ManagedCertificate.networking.gke.io/v1beta1.FrontendConfig
: o nome do recurso FrontendConfig.kubernetes.io/ingress.global-static-ip-name
: o nome do endereço IPkubernetes.io/ingress.class
: instrui o controlador de entrada do GKE a criar um balanceador de carga de aplicativo externo.
Aplique o manifesto ao cluster:
kubectl apply -f kubernetes-manifests.yaml
Verifique se o Ingress foi criado:
kubectl describe ingress frontend
O resultado será assim:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...
O provisionamento do Ingress pode levar alguns minutos.
Testar aplicativo
Verifique o status do certificado SSL:
kubectl get managedcertificates.networking.gke.io networking-managed-cert
O certificado SSL pode levar até 30 minutos para ser provisionado. A saída a seguir indica que o certificado SSL está pronto:
NAME AGE STATUS networking-managed-cert 28m Active
Execute um comando
curl
:curl -Lv https://DOMAIN_NAME
O resultado será assim:
* Trying 34.160.115.33:443... * Connected to DOMAIN_NAME (34.160.115.33) port 443 (#0) ... * TLSv1.3 (IN), TLS handshake, Certificate (11): ... * Server certificate: * subject: CN=DOMAIN_NAME ... > Host: DOMAIN_NAME
Limpar
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 o projeto
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Excluir recursos individuais
Exclua os recursos do Kubernetes:
kubectl delete -f kubernetes-manifests.yaml
Exclua os recursos do Terraform:
terraform destroy --auto-approve
Quando solicitado, digite seu domínio, como
my-domain.net
.
A seguir
- Saiba mais sobre a rede do GKE.