Este tutorial demonstra como usar o Google Kubernetes Engine (GKE) para expor seu aplicativo da Web à Internet em um endereço IP externo estático e configurar um nome de domínio para apontar para seu aplicativo Este tutorial pressupõe que você possui um nome de domínio registrado, como exemplo.com Você pode registrar um nome de domínio através do Google Domínios ou outro registrador de domínio de sua escolha se você não tiver um ## Objetivos Este tutorial demonstra as seguintes etapas: ## Custos Este tutorial usa os seguintes componentes faturáveis ​​do Google Cloud: Para gerar uma estimativa de custo com base no uso projetado, use a calculadora de preços Ao concluir este tutorial, você poderá evitar a cobrança contínua excluindo os recursos que criou. Para obter mais informações, consulte Limpar ## Antes de começar Siga as etapas a seguir para ativar a API do Kubernetes Engine: - Visite a página do Kubernetes Engine no console do Google Cloud - Crie ou selecione um projeto - Aguarde a habilitação da API e dos serviços relacionados. Isso pode levar vários minutos - Verifique se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto Instale as seguintes ferramentas de linha de comando usadas neste tutorial: - gcloudis usado para criar e excluir clusters do Kubernetes Engine gcloudis incluído no gcloudCLI - kubectlis usado para gerenciar o Kubernetes, o sistema de orquestração de cluster usado pelo Kubernetes Engine. você pode instalar kubectlusing gcloud: componentes gcloud instalar kubectl Clone o código de amostra do GitHub: git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Definir padrões para o Para economizar tempo digitando o ID do seu projeto e opções de zona do Compute Engine no ferramenta de linha de comando gcloud ferramenta gcloudcommand-line, você pode definir os padrões: projeto de conjunto de configuração gcloud conjunto de configuração do projeto idgcloud computação/zona zona de computação Criar um cluster Crie um cluster de contêiner chamado domain-test para implantar seu aplicativo da web: gcloud container clusters criam teste de domínio ## Implantando seu aplicativo da web O manifesto a seguir descreve uma implantação que executa uma amostra de imagem de contêiner de aplicativo da Web: # Copyright 2021 Google LLC # # Licenciado sob a Licença Apache, Versão 2.0 (a "Licença # você não pode usar este arquivo exceto em conformidade com a Licença. # Você pode obter uma cópia da Licença em # # httpwww.apache.org /licenses/LICENSE-2.0 # # A menos que exigido pela lei aplicável ou acordado por escrito, o software # distribuído sob a Licença é distribuído "COMO ESTÁ", # SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. # Consulte a Licença para obter as permissões e # limitações específicas do idioma sob a Licença. apiVersion: apps/v1 type: Deployment metadata: name: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: labels: app: hello tier: web spec: containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 ports: - containerPort: 8080 resources: requests : CPU: 200m Execute o seguinte comando para criar a implantação: kubectl apply -f helloweb-deployment.yaml ## Expondo 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 funciona com endereços IP regionais. Use um Ingress, que cria um balanceador de carga HTTP(S) e oferece suporte a endereços IP globais Para saber mais sobre os prós e contras de cada método, consulte Configurando balanceamento de carga HTTP(S) com Ingress Usar um serviço Para garantir que seu aplicativo tenha um endereço IP público estático, você deve reservar um endereço IP estático Se você optar por expor seu aplicativo usando um serviço, deverá criar um endereço IP regional. Os endereços IP globais funcionam apenas com o tipo de recurso Ingress, conforme explicado na próxima seção Para usar um serviço, crie um endereço IP estático chamado helloweb-ip no região us-central1: gcloud gcloud compute address create helloweb-ip --region us-central1 Para encontrar o endereço IP estático que você criou, execute o seguinte comando: endereços de computação gcloud descrevem helloweb-ip --region us-central1Output: endereço: 203.0.113.32 .. Conector de configuração **Observação Esta etapa requer Conector de configuração. Segue o instruções de instalação para instalar o Config Connector em seu cluster apiVersion: compute.cnrm.cloud.google.com/v1beta1 tipo: ComputeAddress metadados: nome: helloweb-ip spec: localização: us-central1 kubectl apply -f compute-address-regional.yamlPara localizar o endereço IP estático, execute o seguinte comando: kubectl get computeaddress helloweb-ip -o jsonpathspec.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 Substituir `YOUR.IP.ADDRESS.HERE` com o endereço IP estático: # Copyright 2021 Google LLC # # Licenciado sob a Licença Apache, Versão 2.0 (a "Licença # você não pode usar este arquivo exceto em conformidade com a Licença. # Você pode obter uma cópia da Licença em # # httpwww.apache.org /licenses/LICENSE-2.0 # # A menos que exigido pela lei aplicável ou acordado por escrito, o software # distribuído sob a Licença é distribuído "COMO ESTÁ", # SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. # Consulte a Licença para obter as permissões e # limitações específicas do idioma sob a Licença. apiVersion: v1 type: Service metadata: name: helloweb labels: app: hello spec: selector: app: hello tier: web ports: - port: 80 targetPort: 8080 tipo: LoadBalancer loadBalancerIP: "SEU.IP.ADDRESS.AQUI"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 serviceOutput: NOME CLUSTER-IP EXTERNAL-IP PORTA(S) IDADE helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Usar uma entrada Se você optar por expor seu aplicativo usando um Ingress, que cria um balanceador de carga HTTP(S), deverá reservar um endereço IP estático global. Os endereços IP regionais não funcionam com o Ingress Para saber mais sobre como usar o Ingress para expor seus aplicativos à Internet, consulte o tutorial Configurando o balanceamento de carga HTTP(S) com o Ingress Para criar um endereço IP estático global chamado helloweb-ip: gcloud endereços de computação gcloud criam helloweb-ip --global Para encontrar o endereço IP estático que você criou: endereços de computação gcloud descrevem helloweb-ip --globalOutput: endereço: 203.0.113.32 .. Conector de configuração **Observação Esta etapa requer Conector de configuração. Segue o instruções de instalação para instalar o Config Connector em seu cluster apiVersion: compute.cnrm.cloud.google.com/v1beta1 tipo: ComputeAddress metadados: nome: helloweb-ip spec: localização: global kubectl apply -f compute-address-global.yaml O manifesto a seguir descreve um Ingress que é um aplicativo da web em um IP estático com dois recursos: - UMA Serviço com tipo:NodePort - Um Ingressconfigurado com o nome do serviço e anotação de IP estático # Copyright 2021 Google LLC # # Licenciado sob a Licença Apache, Versão 2.0 (a "Licença # você não pode usar este arquivo exceto em conformidade com a Licença. # Você pode obter uma cópia da Licença em # # httpwww.apache.org /licenses/LICENSE-2.0 # # A menos que exigido pela lei aplicável ou acordado por escrito, o software # distribuído sob a Licença é distribuído "COMO ESTÁ", # SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. # Consulte a Licença para obter as permissões e # limitações específicas do idioma sob a Licença. apiVersion: networking.k8s.io/v1 tipo: Metadados do Ingress: nome: helloweb anotações: kubernetes.io/ingress.global-static-ip-name: helloweb -ip labels: app: hello spec: defaultBackend: service: name: helloweb-backend port: number: 8080apiVersion: v1 type: Service metadata: name: helloweb-backend labels: app: hello spec: type: NodePort selector: app: hello camada: portas web: - porta: 8080 targetPort: 8080 o A anotação kubernetes.io/ingress.global-static-ip-name especifica o nome do recurso de endereço IP global a ser associado ao carregamento HTTP(S) Balanceador Aplique o recurso ao cluster: kubectl apply -f helloweb-ingress-static-ip.yamlOutput: ingresso "helloweb"criado serviço "helloweb-backend"criado Para ver o endereço IP de reserva associado ao balanceador de carga: kubectl get ingressOutput: NOME HOSTS ENDEREÇO ​​PORTAS IDADE helloweb * 203.0.113.32 80 4m ## Visitando seu endereço IP estático reservado Para verificar se o balanceador de carga está configurado corretamente, você pode usar um navegador da web para visitar o endereço IP ou usar ondulação: curl http203.0.113.32/Saída: Olá Mundo! Nome do host: helloweb-3766687455-8lvqv ## Configurando seus registros de nome de domínio Para que os navegadores consultem seu nome de domínio, como exemplo.com ou subdomínio nome, como blog.example.com, aponte para o endereço IP estático que você reservou, você deve atualizar os registros DNS (Domain Name Server) do seu nome de domínio Você deve criar um Registro DNS do tipo **A** (endereço) para seu domínio ou subdomínio nome e ter seu valor configurado com o endereço IP reservado Os registros DNS do seu domínio são gerenciados pelo seu servidor de nomes. Seu servidor de nomes pode ser o "registrador"onde você registrou seu domínio, um serviço DNS como o Cloud DNS ou outro provedor terceirizado Se o seu servidor de nomes for o Cloud DNS: siga o guia de início rápido do Cloud DNS para configurar o registro DNS A para o seu nome de domínio com o endereço IP reservado do seu aplicativo. Se o seu servidor de nomes for outro provedor: Consulte a documentação do seu serviço DNS sobre como configurar os registros DNS A para configurar seu nome de domínio. Se você optar por usar o Cloud DNS, consulte Migrando para o Cloud DNS ## Visitando seu nome de domínio Para verificar se os registros DNS A do seu nome de domínio resolvem para o endereço IP que você reservou, visite seu nome de domínio Para fazer uma consulta de DNS para o registro A do seu nome de domínio, execute o hospedar comando: host exemplo.comSaída: exemplo.com tem endereço 203.0.113.32 Neste ponto, você pode apontar seu navegador para o seu nome de domínio e visitar seu site! ## Limpar Para evitar cobranças em sua conta do Google Cloud pelos recursos usados ​​neste tutorial, exclua o projeto que contém os recursos ou mantenha o projeto e exclua os recursos individuais Exclua os recursos de balanceamento de carga: kubectl delete ingress,service -l app=olá Libere o IP estático reservado. Após a exclusão do balanceador de carga, o endereço IP não utilizado, mas reservado, não é mais gratuito e é cobrado de acordo com o preço do endereço IP não utilizado. Execute os seguintes comandos para liberar o recurso de IP estático: Se você usou um serviço: endereços de computação gcloud excluir helloweb-ip --region us-central1 Se você usou um Ingress: endereços de computação gcloud excluir helloweb-ip --global - Exclua o aplicativo de amostra: kubectl delete -f helloweb-deployment.yaml Aguarde até que o balanceador de carga seja excluído observando a saída do comando a seguir. A saída não deve mostrar uma regra de encaminhamento que contenha "helloweb"em seu nome: lista de regras de encaminhamento de computação gcloud Exclua o cluster de contêiner: gcloud container clusters delete domain-test ## Qual é o próximo Registre seu próprio nome de domínio através do Google Domains Explore outros tutoriais do Kubernetes Engine Explore arquiteturas de referência, diagramas, tutoriais e práticas recomendadas sobre o Google Cloud. Dê uma olhada em nosso Cloud Architecture Center.