Implemente uma app num cluster do GKE
Neste início rápido, implementa uma amostra de um servidor Web de uma aplicação em contentores num cluster do Google Kubernetes Engine (GKE). Aprende a criar um cluster e a implementar a aplicação no cluster para que os utilizadores possam aceder à mesma.
Esta página destina-se a operadores e programadores que preparam e configuram recursos na nuvem, e implementam apps e serviços. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no Google Cloud conteúdo, consulteFunções e tarefas comuns do utilizador do GKE.
Antes de ler esta página, certifique-se de que conhece o Kubernetes.
Antes de começar
Siga estes passos para ativar a API Kubernetes Engine:- 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, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Google Kubernetes Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Google Kubernetes Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
Funções necessárias
Grant roles to your user account. Run the following command once for each of the following
IAM roles:
roles/container.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
Inicie o Cloud Shell
Neste tutorial, vai usar o Cloud Shell, que é um ambiente de shell para gerir recursos alojados no Google Cloud.
O Cloud Shell vem pré-instalado com a
CLI Google Cloud
e a ferramenta de linha de comandos kubectl. A CLI gcloud fornece a interface de linhas de comando principal para o Google Cloude o kubectl
fornece a interface de linhas de comando principal para executar comandos em clusters do Kubernetes.
Inicie o Cloud Shell:
Aceda à Google Cloud consola.
No canto superior direito da consola, clique no botão Ativar Cloud Shell:
É aberta uma sessão do Cloud Shell num frame na parte inferior da consola.
Use esta shell para executar os comandos gcloud
e kubectl
.
Antes de executar comandos, defina o projeto predefinido na CLI do Google Cloud
com o seguinte comando:
gcloud config set project PROJECT_ID
Substitua PROJECT_ID
pelo seu ID do projeto.
Crie um cluster do GKE
Um cluster consiste em, pelo menos, uma máquina do painel de controlo do cluster e várias máquinas de trabalho denominadas nós. Os nós são instâncias de máquinas virtuais (VMs) do Compute Engine que executam os processos do Kubernetes necessários para os tornar parte do cluster. Implementa aplicações em clusters e as aplicações são executadas nos nós.
Esta secção mostra-lhe como criar um cluster no modo Autopilot, que é o modo de cluster recomendado para a maioria dos exemplos de utilização de produção. Em alternativa, pode usar um cluster do modo padrão do GKE para realizar estes passos.
Crie um cluster do Autopilot com o nome hello-cluster
:
gcloud container clusters create-auto hello-cluster \
--location=us-central1
A criação do cluster pode demorar alguns minutos.
Obtenha credenciais de autenticação para o cluster
Depois de criar o cluster, tem de obter credenciais de autenticação para interagir com o cluster:
gcloud container clusters get-credentials hello-cluster \
--location us-central1
Este comando configura o kubectl
para usar o cluster que criou.
Implemente uma aplicação no cluster
Agora que criou um cluster, pode implementar uma
aplicação contentorizada no mesmo. Para este início rápido, pode implementar a nossa aplicação Web de exemplo, hello-app
.
O GKE usa objetos Kubernetes para criar e gerir os recursos do seu cluster. O Kubernetes fornece o objeto Deployment para implementar aplicações sem estado, como servidores Web. Os objetos Service definem regras e o equilíbrio de carga para aceder à sua aplicação a partir da Internet.
Crie a implementação
Para executar o hello-app
no seu cluster, tem de implementar a aplicação executando o seguinte comando:
kubectl create deployment hello-server \
--image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Este comando do Kubernetes,
kubectl create deployment
,
cria uma implementação denominada hello-server
. O pod da implementação executa a imagem do contentor hello-app
.
Neste comando:
--image
especifica uma imagem de contentor a implementar. Neste caso, o comando extrai a imagem de exemplo de um repositório do Artifact Registry,us-docker.pkg.dev/google-samples/containers/gke/hello-app
.:1.0
indica a versão específica da imagem a obter. Se não especificar uma versão, é usada a imagem com a etiquetalatest
predefinida.
Exponha a implementação
Depois de implementar a aplicação, tem de a expor à Internet para que os utilizadores possam aceder à mesma. Pode expor a sua aplicação criando um serviço, um recurso do Kubernetes que expõe a sua aplicação ao tráfego externo.
Para expor a sua aplicação, execute o seguinte comando
kubectl expose
:
kubectl expose deployment hello-server \
--type LoadBalancer \
--port 80 \
--target-port 8080
A transmissão da flag --type LoadBalancer
cria um balanceador de carga do Compute Engine para o seu contentor. A flag --port
inicializa a porta 80 pública para a Internet e a flag --target-port
encaminha o tráfego para a porta 8080 da aplicação.
Os balanceadores de carga são faturados de acordo com os preços dos balanceadores de carga do Compute Engine.
Inspecione e veja a aplicação
Inspecione os pods em execução com o comando
kubectl get pods
:kubectl get pods
Deve ver um
hello-server
pod em execução no cluster.Inspeccione o
hello-server
serviço através dekubectl get service
:kubectl get service hello-server
A partir do resultado deste comando, copie o endereço IP externo do serviço da coluna
EXTERNAL-IP
.Veja a aplicação a partir do navegador de Internet através do endereço IP externo com a porta exposta:
http://EXTERNAL_IP
Acabou de implementar uma aplicação Web contentorizada no GKE.
Para monitorizar e organizar os seus recursos do GKE de uma forma centrada na aplicação, pode adicionar os seus recursos como serviços e cargas de trabalho às aplicações do App Hub.
Para mais informações sobre os recursos suportados pelo App Hub, consulte o artigo Recursos suportados.
Para saber como configurar o App Hub no seu projeto, consulte o artigo Configure o App Hub.
Limpar
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.
Elimine o serviço da aplicação executando o comando
kubectl delete
:kubectl delete service hello-server
Este comando elimina o balanceador de carga do Compute Engine que criou quando expôs a implementação.
Elimine o cluster executando o comando
gcloud container clusters delete
:gcloud container clusters delete hello-cluster \ --location us-central1
Opcional: hello-app
revisão do código
hello-app
é uma aplicação de servidor Web que consiste em dois ficheiros:
main.go
e um Dockerfile
.
hello-app
está incluído como uma imagem de contentor do Docker. As imagens de contentores são armazenadas em qualquer registo de imagens do Docker, como o Artifact Registry. Alojamos hello-app
num repositório do Artifact Registry em
us-docker.pkg.dev/google-samples/containers/gke/hello-app
.
main.go
main.go
é uma implementação de servidor Web escrita na
linguagem de programação Go.
O servidor responde a qualquer pedido HTTP com uma mensagem "Hello, world!".
Ficheiro Docker
Dockerfile
descreve a imagem que quer que o Docker crie, incluindo todos os respetivos recursos e dependências, e especifica a porta de rede que a app deve expor. Para mais informações sobre como este ficheiro funciona, consulte a
referência do Dockerfile
na documentação do Docker.
O que se segue?
- Saiba mais sobre como criar clusters.
- Saiba mais acerca do Kubernetes.
- Saiba como criar pacotes, alojar e implementar uma aplicação de servidor Web simples.
- Implemente uma aplicação Kubernetes com o Cloud Code para VS Code ou o Cloud Code para IntelliJ.
- Saiba como reestruturar aplicações Linux para contentores.
Experimente
Se está a usar o Google Cloud pela primeira vez, crie uma conta para avaliar o desempenho do GKE em cenários reais. Os novos clientes também recebem 300 USD em créditos gratuitos para executar, testar e implementar cargas de trabalho.
Experimente o GKE gratuitamente