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ê vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso,
use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
Criar o projeto
- Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 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.
Configurar o 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,
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-central1Clone o repositório do código:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.gitMude 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 initVeja as alterações na infraestrutura:
terraform planQuando solicitado, digite seu domínio, como
my-domain.net.Aplique a configuração do Terraform:
terraform apply --auto-approveQuando 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 Entrada:
Substitua
DOMAIN_NAMEpelo nome do seu domínio, comomy-domain.net.Esse manifesto tem as seguintes propriedades:
networking.gke.io/managed-certificates: o nome do ManagedCertificate. Esse recurso provisiona um certificado SSL gerenciado pelo Google (clássico).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.yamlVerifique se o Ingress foi criado:
kubectl describe ingress frontendO 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-certO 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 ActiveExecute um comando
curl:curl -Lv https://DOMAIN_NAMEO 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.
Excluir o projeto
Excluir um Google Cloud projeto:
gcloud projects delete PROJECT_ID
Excluir recursos individuais
Exclua os recursos do Kubernetes:
kubectl delete -f kubernetes-manifests.yamlExclua os recursos do Terraform:
terraform destroy --auto-approveQuando solicitado, digite seu domínio, como
my-domain.net.
A seguir
- Saiba mais sobre a rede do GKE.