Implemente uma app no GKE através do Cloud Deploy
Esta página mostra-lhe como usar o Cloud Deploy para entregar 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
- 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, 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, 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 estão incluídos para projetos que desativam as concessões de funções automáticas para contas de serviço predefinidas.
- 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 as autorizações de programador do Kubernetes:
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"
Se tiver problemas em adicionar qualquer uma destas funções, contacte o administrador do projeto.
-
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 com o nome
deploy-gke-quickstart
e navegue até ele.mkdir deploy-gke-quickstart cd deploy-gke-quickstart
Crie um ficheiro denominado
skaffold.yaml
com 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.yaml
para mais informações acerca deste ficheiro.Crie um ficheiro denominado
k8s-pod.yaml
com o seguinte conteúdo:apiVersion: v1 kind: Pod metadata: name: getting-started 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.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-qsprod
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 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.
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 destino que está a promover.
Clique em Promover.
O lançamento está agora na fila para implementação no
qsprod
. Quando a implementação estiver concluída, a visualização do pipeline de publicação mostra que foi implementada: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.
Eliminar o cluster
qsdev
:gcloud container clusters delete quickstart-cluster-qsdev --region=us-central1 --project=PROJECT_ID
Eliminar o cluster
qsprod
:gcloud container clusters delete quickstart-cluster-qsprod --region=us-central1 --project=PROJECT_ID
Elimine o pipeline de envio, os destinos, o lançamento e as implementações:
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
.
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.
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.
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
Veja os resultados na Google Cloud consola
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!