Valide a sua aplicação após a implementação
Este início rápido mostra como usar o Cloud Deploy para validar a sua aplicação implementada como parte do pipeline de entrega.
Neste início rápido, vai fazer o seguinte:
Crie um cluster do GKE ou um serviço do Cloud Run.
Também pode usar a validação da implementação num cluster do GKE Enterprise, mas este início rápido usa apenas o GKE e o Cloud Run.
Crie uma configuração do Skaffold e um manifesto do Kubernetes ou uma definição de serviço do Cloud Run.
O ficheiro de configuração do Skaffold é onde configura o contentor de validação da implementação para ser executado após a implementação.
Defina o pipeline de entrega e o destino de implementação do Cloud Deploy.
Na configuração do pipeline de fornecimento, vai fazer referência à validação de implementação definida em
skaffold.yaml
para executar essa validação.Este pipeline inclui apenas uma fase e usa apenas um alvo.
Crie uma versão que é implementada automaticamente no destino.
Após a implementação da aplicação, a validação é executada como uma fase da implementação.
Veja os resultados da validação nos registos do Cloud Build, através da página Detalhes da implementação do Cloud Deploy na Google Cloud consola.
Antes de começar
- 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Certifique-se de que a conta de serviço predefinida do Compute Engine tem autorizações suficientes.
A conta de serviço pode já ter as autorizações necessárias. Estes passos são incluídos para projetos que desativam as concessões de funções automáticas para contas de serviço predefinidas.
- Primeiro, adicione a função
clouddeploy.jobRunner
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner"
- Adicione a função de programador para o seu tempo de execução específico.
- Para o GKE:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/container.developer"
- Para o Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/run.developer"
-
Adicione a função
iam.serviceAccountUser
, que inclui a autorizaçãoactAs
para implementar no tempo de execução:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
Abra uma janela de terminal.
Crie um novo diretório e navegue para o mesmo.
GKE
mkdir deploy-verification-gke-quickstart cd deploy-verification-gke-quickstart
Cloud Run
mkdir deploy-verification-run-quickstart cd deploy-verification-run-quickstart
Crie um ficheiro denominado
skaffold.yaml
com o seguinte conteúdo:GKE
apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - k8s-pod.yaml deploy: kubectl: {} verify: - name: verification-test container: name: verification-echo image: ubuntu command: ["/bin/sh"] args: ["-c", 'echo "Your test or tests would go here."' ]
Cloud Run
apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - service.yaml deploy: cloudrun: {} verify: - name: verification-test container: name: verification-echo image: ubuntu command: ["/bin/sh"] args: ["-c", 'echo "Your test or tests would go here."' ]
Este ficheiro inclui a secção
verify:
, que define o contentor e o comando a executar após a implementação da aplicação. Neste caso, estamos a implementar um contentor do Ubuntu e a executar um comandoecho
simples. Pode ver os resultados deste comando nos registos. Num cenário mais realista, executaria testes na sua aplicação implementada.Consulte a referência
skaffold.yaml
para mais informações acerca deste ficheiro de configuração.Crie a definição para a sua aplicação: uma definição de serviço para o Cloud Run ou um manifesto do Kubernetes para o GKE.
GKE
Crie um ficheiro denominado
k8s-pod.yaml
com o seguinte conteúdo:apiVersion: v1 kind: Pod metadata: name: my-verification-pod spec: containers: - name: nginx image: my-app-image
Este 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.Cloud Run
Crie um ficheiro denominado
service.yaml
com o seguinte conteúdo:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-verification-run-service spec: template: spec: containers: - image: my-app-image
Este ficheiro é uma definição básica do serviço do Cloud Run, que é usada 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 fornecimento e a definição do alvo:
GKE
No diretório
deploy-verification-gke-quickstart
, crie um novo ficheiro:clouddeploy.yaml
, com o seguinte conteúdo:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-verification-demo-app-gke-1 description: main application pipeline serialPipeline: stages: - targetId: verify-staging profiles: [] strategy: standard: verify: true --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: verify-staging description: verification staging cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/deploy-verification-cluster
Cloud Run
No diretório
deploy-verification-run-quickstart
, crie um novo ficheiro:clouddeploy.yaml
, com o seguinte conteúdo:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-verification-demo-app-run-1 description: main application pipeline serialPipeline: stages: - targetId: verify-staging profiles: [] strategy: standard: verify: true --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: verify-staging description: staging Run service run: location: projects/PROJECT_ID/locations/us-central1
Registe o pipeline e os destinos no serviço Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
Agora, tem um pipeline de entrega, com um destino, pronto para implementar a sua aplicação e validar essa implementação.
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, com um alvo apresentado na coluna Alvos.
Na Google Cloud consola, navegue para a página Cloud Deploy Pipelines de fornecimento para ver o seu pipeline de fornecimento ("deploy-verification-demo-app-gke-1" ou "deploy-verification-demo-app-run-1").
Clique no nome do pipeline de implementação ("deploy-verification-demo-app-gke-1" ou "deploy-verification-demo-app-run-1").
A visualização do pipeline mostra o estado de implementação da app. Uma vez que existe apenas uma fase no pipeline, a visualização mostra apenas um nó.
O lançamento é apresentado no separador Lançamentos em Detalhes do pipeline de envio.
Clique no separador Implementações, em Detalhes do pipeline de fornecimento.
Clique no nome da implementação para ver os respetivos detalhes.
Validar está listado como um trabalho.
Clique em Validar
É apresentado o registo de execução da tarefa.
Desloque a página para baixo na lista de entradas do registo para encontrar
verification-test
e clique no mesmo.Repare no
textPayload
. Essa string é o que foi configurado na secçãoVerify
na sua configuração do Skaffold.Elimine o cluster do GKE ou o serviço do Cloud Run:
GKE
gcloud container clusters delete deploy-verification-cluster --region=us-central1 --project=PROJECT_ID
Cloud Run
gcloud run services delete my-verification-run-service --region=us-central1 --project=PROJECT_ID
Elimine o pipeline de envio, o destino, o lançamento e a implementação:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
Elimine os contentores do Cloud Storage que o Cloud Deploy criou.
Uma termina com
_clouddeploy
e a outra é[region].deploy-artifacts.[project].appspot.com
.
Se já tiver a CLI instalada, certifique-se de que está a executar a versão mais recente:
gcloud components update
Crie o seu ambiente de tempo de execução
Se estiver a implementar no Cloud Run, pode ignorar este comando.
Para o GKE, crie um cluster: deploy-verification-cluster
,
com as predefinições. O ponto final da API Kubernetes do cluster tem de ser
acessível 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 deploy-verification-cluster \ --project=PROJECT_ID \ --region=us-central1
Prepare a configuração do Skaffold e o manifesto da aplicação
O Cloud Deploy usa o Skaffold para fornecer os detalhes sobre o que implementar e como o implementar no seu destino.
Neste início rápido, cria um ficheiro skaffold.yaml
que identifica o manifesto a usar para implementar a app de exemplo e também identifica o contentor a executar após a implementação (a validação da implementação).
Crie o seu pipeline de entrega e 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.
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 a secção Arquitetura do serviço Cloud Deploy para ver detalhes sobre esse ciclo de vida.
GKE
Execute o seguinte comando a partir do diretório deploy-verification-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=deploy-verification-demo-app-gke-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 por SHA na criação de lançamentos.
Cloud Run
Execute o seguinte comando a partir do diretório deploy-verification-run-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=deploy-verification-demo-app-run-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
Repare na flag --images=
, que usa para substituir o marcador de posição (my-app-image
) na definição do serviço pela imagem específica qualificada com SHA. A Google recomenda que
crie modelos das suas definições de serviço desta forma e que use
nomes de imagens qualificados por SHA na criação de lançamentos.
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 destino configurado para este pipeline de entrega.
A tarefa de validação que especificámos na nossa configuração do Skaffold é executada como parte desta implementação, após a implementação da aplicação.
Veja os resultados na Google Cloud consola
Após alguns minutos, o lançamento é implementado no tempo de execução de destino.
A tarefa de validação que configurámos (para fins de exemplo) imprime uma string no registo do Cloud Build. Podemos ver esse registo para confirmar que a validação funcionou como esperado.
Limpar
Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.
É tudo. Concluiu este início rápido!