Implemente uma app no GKE através do Cloud Deploy
Esta página mostra como usar o Cloud Deploy para fornecer uma imagem de aplicação de exemplo
denominada nginx a uma sequência de dois clusters do Google Kubernetes Engine.
Neste início rápido, vai fazer o seguinte:
Crie os dois clusters.
Crie uma configuração do Skaffold e um manifesto do Kubernetes para especificar a imagem de contentor (pré-criada) a implementar.
Defina o pipeline de entrega e os alvos de implementação do Cloud Deploy, que apontam para os dois clusters.
Instancie a sua pipeline de entrega criando um lançamento, que é implementado automaticamente no primeiro destino.
Promova o lançamento para o segundo destino.
Veja ambas as implementações na Google Cloud consola.
Antes de começar
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Install the Google Cloud CLI.
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud initIn 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Install the Google Cloud CLI.
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud initFunções necessárias
Para obter as autorizações de que
precisa para criar um pipeline de entrega e uma versão do Cloud Deploy,
peça ao seu administrador para lhe conceder a função de IAM de
executor de tarefas do Cloud Deploy (roles/clouddeploy.jobrunner)
no seu projeto.
Para garantir que a conta de serviço do Cloud Deploy tem as autorizações necessárias para executar operações do Cloud Deploy e implementar no Cloud Run, peça ao seu administrador para conceder à conta de serviço do Cloud Deploy as seguintes funções de IAM no seu projeto:
-
Google Kubernetes Engine Developer (
roles/container.developer) -
Utilizador da conta de serviço de IAM (
roles/iam.serviceAccountUser)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
O administrador também pode conceder à conta de serviço do Cloud Deploy as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie os seus clusters do Google Kubernetes Engine
Crie dois clusters: qsdev e qsprod, com as predefinições. Os pontos finais da API Kubernetes dos clusters têm de ser acessíveis através da rede a partir da Internet pública.
Os clusters do GKE são acessíveis externamente por predefinição.
gcloud container clusters create-auto quickstart-cluster-qsdev --project=PROJECT_ID --region=us-central1 && gcloud container clusters create-auto quickstart-cluster-qsprod --project=PROJECT_ID --region=us-central1
Prepare a configuração do Skaffold e o manifesto do Kubernetes
O Cloud Deploy usa o Skaffold para fornecer os detalhes sobre o que implementar e como o implementar corretamente para os seus alvos separados.
Neste início rápido, cria um ficheiro skaffold.yaml, que identifica o manifesto do Kubernetes a usar para implementar a app de exemplo.
Abra uma janela de terminal.
Crie um novo diretório com o nome
deploy-gke-quickstarte navegue até ele.mkdir deploy-gke-quickstart cd deploy-gke-quickstartCrie um ficheiro denominado
skaffold.yamlcom o seguinte conteúdo:apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - k8s-* deploy: kubectl: {}Este ficheiro é uma configuração mínima do Skaffold que identifica o seu manifesto. Para este início rápido, cria o ficheiro. No entanto, também pode pedir ao Cloud Deploy que crie um para si, para aplicações simples que não sejam de produção.
Consulte a referência
skaffold.yamlpara mais informações acerca deste ficheiro.Crie um ficheiro denominado
k8s-pod.yamlcom o seguinte conteúdo:apiVersion: v1 kind: Pod metadata: name: getting-started spec: containers: - name: nginx image: my-app-imageEste ficheiro é um manifesto básico do Kubernetes, que é aplicado ao cluster para implementar a aplicação. A imagem do contentor a implementar é definida aqui como um marcador de posição,
my-app-image, que é substituído pela imagem específica quando cria a versão.
Crie o pipeline de entrega e as segmentações
Pode definir o seu pipeline e alvos num ficheiro ou em ficheiros separados. Neste início rápido, vai criar um único ficheiro.
No diretório
deploy-gke-quickstart, crie um novo ficheiro:clouddeploy.yaml, com o seguinte conteúdo:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: my-gke-demo-app-1 description: main application pipeline serialPipeline: stages: - targetId: qsdev profiles: [] - targetId: qsprod profiles: [] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: qsdev description: development cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsdev --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: qsprod description: production cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsprodRegiste o pipeline e os destinos no serviço Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDAgora, tem um pipeline com alvos pronto para implementar a sua aplicação no primeiro alvo.
Confirme o seu pipeline e alvos:
Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de entrega para ver uma lista dos pipelines de entrega disponíveis.
Abra a página Pipelines de fornecimento
É apresentada a pipeline de fornecimento que acabou de criar e os dois alvos são apresentados na coluna Alvos.

Crie um lançamento
Um lançamento é o recurso central do Cloud Deploy que representa as alterações que estão a ser implementadas. O pipeline de fornecimento define o ciclo de vida dessa versão. Consulte o artigo Arquitetura do serviço Cloud Deploy para ver detalhes sobre esse ciclo de vida.
Execute o seguinte comando a partir do diretório deploy-gke-quickstart para criar um recurso release que represente a imagem do contentor a implementar:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-gke-demo-app-1 \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa
Repare na flag --images=, que usa para substituir o marcador de posição (my-app-image) no manifesto pela imagem específica qualificada com SHA. A Google recomenda que crie modelos dos seus manifestos desta forma e que use nomes de imagens qualificados com SHA no momento da criação do lançamento.
Tal como acontece com todos os lançamentos (a menos que incluam --disable-initial-rollout),
o Cloud Deploy também cria automaticamente um recurso de implementação. A aplicação é implementada automaticamente no primeiro alvo na progressão.
Promova o lançamento
Na página Caminhos de fornecimento, clique no caminho
my-gke-demo-app-1.Abra a página Pipelines de fornecimento
A página de detalhes do pipeline de fornecimento mostra uma representação gráfica do progresso do pipeline de fornecimento. Neste caso, mostra que o lançamento foi implementado no destino
qsdev.
No primeiro alvo na visualização do pipeline de fornecimento, clique em Promover.
É apresentada a caixa de diálogo Promover lançamento. Mostra os detalhes do público-alvo que está a promover.
Clique em Promover.
A versão está agora em fila para implementação no
qsprod. Quando a implementação estiver concluída, a visualização do pipeline de entrega mostra-a como implementada:
Veja os resultados na Google Cloud consola
Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de fornecimento para ver o pipeline de fornecimento my-gke-demo-app-1.
Clique no nome do pipeline de fornecimento "my-gke-demo-app-1".
A visualização do pipeline mostra o progresso da app no pipeline.

O lançamento é apresentado no separador Lançamentos em Detalhes do pipeline de envio.
Clique no nome do lançamento,
test-release-001.As implementações são apresentadas em Implementações. Pode clicar numa implementação para ver os respetivos detalhes, incluindo o registo de implementação.

Limpar
Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.
Elimine o cluster
qsdev:gcloud container clusters delete quickstart-cluster-qsdev --region=us-central1 --project=PROJECT_IDElimine o cluster
qsprod:gcloud container clusters delete quickstart-cluster-qsprod --region=us-central1 --project=PROJECT_IDElimine o pipeline de implementação, os destinos, o lançamento e as implementações:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_IDElimine os contentores do Cloud Storage que o Cloud Deploy criou.
Uma termina com
_clouddeploye a outra é[region].deploy-artifacts.[project].appspot.com.
É tudo. Concluiu este início rápido!