Esta página explica como implementar uma aplicação no Kubernetes através do Cloud Build.
O Cloud Build fornece um criador gke-deploy
que lhe permite implementar uma aplicação em contentores num cluster do GKE.
O gke-deploy
é um wrapper em torno do kubectl
, a interface de linhas de comando para o Kubernetes. Aplica as práticas recomendadas da Google para implementar aplicações no Kubernetes da seguinte forma:
Atualizar o ficheiro de recursos do Kubernetes da aplicação para usar o resumo da imagem do contentor em vez de uma etiqueta.
Adicionar etiquetas recomendadas ao ficheiro de recursos do Kubernetes.
Obter credenciais para os clusters do GKE para os quais está a implementar a imagem.
A aguardar que o ficheiro de recursos do Kubernetes enviado esteja pronto.
Se quiser implementar as suas aplicações diretamente com o kubectl
e não precisar de funcionalidades adicionais, o Cloud Build também oferece um criador kubectl
que pode usar para implementar a sua aplicação num cluster do GKE.
Antes de começar
Crie um cluster do GKE, se ainda não tiver um.
Tenha a sua aplicação contentorizada sob a forma de código-fonte e um
Dockerfile
pronto. O código fonte tem de estar armazenado num repositório, como os Cloud Source Repositories, o GitHub ou o Bitbucket.Precisa de, pelo menos, um ficheiro de recursos do Kubernetes que descreva os recursos do Kubernetes usados para executar a sua aplicação. Se não tiver ficheiros de recursos do Kubernetes, siga estes passos para gerar um para a sua aplicação:
- Abra a página de clusters do Kubernetes Engine na Google Cloud consola.
- Na página de clusters do Kubernetes Engine, clique em Implementar.
- Selecione o contentor e clique em Continuar. É apresentada a secção Configuração.
- Em YAML de configuração, clique em Ver YAML para obter um ficheiro de recursos de exemplo do Kubernetes.
Autorizações de IAM necessárias
Adicione a função de programador do Google Kubernetes Engine à sua conta:
-
Na Google Cloud consola, aceda à página settings Autorizações do Cloud Build:
Defina o estado da função Kubernetes Engine Developer como Ativado.
Implementar uma imagem de contentor pré-criada
Para implementar uma versão específica da sua aplicação com o gke-deploy
:
Certifique-se de que o ficheiro de recursos do Kubernetes se refere à etiqueta ou ao resumo da imagem do contentor correto.
Adicione o passo
gke-deploy
no ficheiro de configuração de compilação:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--location=location", "--cluster=cluster" ] } ] }
Onde:
- kubernetes-resource-file é o caminho do ficheiro de recursos do Kubernetes ou o caminho do diretório que contém os ficheiros de recursos do Kubernetes.
- cluster é o nome do cluster do GKE no qual a aplicação vai ser implementada.
- location é a região/zona do cluster.
Para mais informações sobre as flags disponíveis, consulte as flags
gke-deploy run
.Comece a criar:
gcloud builds submit --region=REGION --project=project-id --config build-config
Onde:
- project-id é o ID do seu projeto.
- build-config é o nome do ficheiro de configuração da compilação.
REGION
é uma das regiões de compilação suportadas.
Criar e implementar uma nova imagem de contentor
Para criar uma nova imagem de contentor e implementar a nova imagem de contentor:
Atualize o ficheiro de recursos do Kubernetes com a nova imagem do contentor usando o atributo
--image
:YAML
steps: # build the container image - name: "gcr.io/cloud-builders/docker" args: ["build", "-t", "gcr.io/project-id/image:tag", "."] # push container image - name: "gcr.io/cloud-builders/docker" args: ["push", "gcr.io/project-id/image:tag"] # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/project-id/image:tag", "." ] }, { "name": "gcr.io/cloud-builders/docker", "args": [ "push", "gcr.io/project-id/image:tag" ] }, { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=location", "--cluster=cluster" ] } ] }
Onde:
- project-id é o ID do seu projeto.
- image é o nome pretendido da imagem do contentor, normalmente o nome da aplicação.
- tag é a etiqueta da imagem do contentor.
- Se estiver a criar uma nova imagem de contentor com cada confirmação, uma boa prática é usar o SHA curto de confirmação como uma etiqueta. O Cloud Build disponibiliza esta opção como uma substituição predefinida,
$SHORT_SHA
.
- Se estiver a criar uma nova imagem de contentor com cada confirmação, uma boa prática é usar o SHA curto de confirmação como uma etiqueta. O Cloud Build disponibiliza esta opção como uma substituição predefinida,
- kubernetes-resource-file é o caminho do ficheiro de recursos do Kubernetes ou o caminho do diretório que contém os ficheiros de recursos do Kubernetes.
- cluster é o nome do cluster do GKE no qual a aplicação vai ser implementada.
- location é a região/zona para a qual o cluster vai ser implementado.
Comece a criar:
gcloud builds submit --region=REGION --project=project-id --config build-config
Onde:
- project-id é o ID do seu projeto.
- build-config é o nome do ficheiro de configuração da compilação.
REGION
é uma das regiões de compilação suportadas.
Automatizar implementações
Pode automatizar a implementação da sua aplicação no GKE através da criação de um acionador no Cloud Build. Pode configurar acionadores para criar e implementar imagens sempre que enviar alterações para o seu código.
Para criar um acionador de compilação:
Abra a página Acionadores na Google Cloud consola:
Selecione o seu projeto no menu pendente do seletor de projetos na parte superior da página.
Clique em Abrir.
Clique em Criar acionador.
Na página Criar acionador, introduza as seguintes definições:
Introduza um nome para o acionador.
Selecione o evento do repositório para iniciar o acionador.
Selecione o repositório que contém o código fonte e o ficheiro de configuração de compilação.
Especifique a regex para o nome da ramificação ou da etiqueta que vai iniciar o acionador.
Escolha uma configuração para o acionador.
Se escolher um ficheiro de configuração do Cloud Build, pode especificar variáveis de substituição indicando um nome de variável e o valor que quer associar a essa variável. No exemplo abaixo, a variável de substituição definida pelo utilizador
_CLOUDSDK_CONTAINER_CLUSTER
especifica o cluster para implementação e a variável de substituição definida pelo utilizador_CLOUDSDK_COMPUTE_ZONE
especifica a respetiva localização. Se quiser implementar num cluster diferente, pode usar a mesma configuração de compilação e só precisa de alterar os valores das variáveis de substituição:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=${_CLOUDSDK_COMPUTE_ZONE} - --cluster=${_CLOUDSDK_CONTAINER_CLUSTER}
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=${_CLOUDSDK_COMPUTE_ZONE}", "--cluster=${_CLOUDSDK_CONTAINER_CLUSTER}" ] } ] }
Onde:
- kubernetes-resource-file é o caminho do ficheiro de configuração do Kubernetes ou o caminho do diretório que contém os ficheiros de recursos do Kubernetes.
- project-id é o ID do seu projeto.
- image é o nome pretendido da imagem do contentor, normalmente o nome da aplicação.
- tag é a etiqueta da imagem do contentor.
Para saber como definir substituições para ficheiros de configuração de compilação, consulte o artigo Usar substituições definidas pelo utilizador.
Clique em Criar para guardar o acionador de compilação.
Quando envia código para o seu repositório, o Cloud Build aciona automaticamente uma compilação. Para saber mais sobre os acionadores de compilação, consulte o artigo Criar e gerir acionadores de compilação.
O que se segue?
- Saiba como configurar implementações automatizadas para as suas cargas de trabalho no GKE.
- Saiba como criar um pipeline de CI/CD ao estilo GitOps implementado no GKE com o Cloud Build.
- Saiba mais sobre as
gke-deploy
opções adicionais. - Saiba como fazer implementações azul/verde no Compute Engine.
- Saiba mais sobre os criadores do Google Cloud adicionais.
- Saiba como resolver problemas de erros de compilação.