Nesta página, explicamos como implantar um aplicativo no Kubernetes usando o Cloud Build.
O Cloud Build oferece um builder gke-deploy
, que permite implantar um aplicativo em contêineres em um cluster do GKE.
gke-deploy
é um wrapper em torno de kubectl
, a interface de linha de comando do Kubernetes. Ele aplica as práticas recomendadas do Google para implantar aplicativos no Kubernetes por meio dos seguintes procedimentos:
Atualização do arquivo de recurso do Kubernetes do aplicativo para usar o resumo da imagem do contêiner em vez de uma tag.
Adição de rótulos recomendados ao arquivo de recurso do Kubernetes.
Recuperação de credenciais dos clusters do GKE em que você está implantando a imagem.
Aguardando o arquivo de recurso do Kubernetes enviado ficar pronto.
Se você quiser implantar os aplicativos usando o kubectl
diretamente e não precisar de outras funcionalidades, o Cloud Build também fornecerá um builder kubectl
que pode ser usado para implantar o aplicativo em um cluster do GKE.
Antes de começar
Crie um cluster do GKE, se ainda não tiver um.
Formate o aplicativo em contêineres como código-fonte e prepare um
Dockerfile
. Seu código-fonte precisa ser armazenado em um repositório, como Cloud Source Repositories, GitHub ou Bitbucket.Você precisará de pelo menos um arquivo de recurso do Kubernetes que descreva os recursos do Kubernetes usados para executar o aplicativo. Se você não tiver arquivos de recurso do Kubernetes, siga estas etapas para gerar um para o aplicativo:
- Abra a página Clusters do Kubernetes Engine no Console do Google Cloud.
- Nessa página, clique em Implantar.
- Selecione o contêiner e clique em Continuar. Você verá a seção "Configuração".
- Em Configuração YAML, clique em Ver YAML para ver um arquivo de recurso de amostra do Kubernetes.
Permissões do IAM obrigatórias
Adicione o papel de desenvolvedor do Google Kubernetes Engine à sua conta:
Abra a página "Configurações" do Cloud Build:
Abrir a página "Configurações do Cloud Build"
Você verá a página Permissões da conta de serviço:
Defina o status do papel de Desenvolvedor do Kubernetes Engine como Ativo.
Como implantar uma imagem de contêiner pré-criada
Para implantar uma versão específica do aplicativo com gke-deploy
:
Verifique se o arquivo de recurso do Kubernetes está se referindo à tag ou ao resumo da imagem do contêiner correto.
Adicione a etapa
gke-deploy
ao arquivo de configuração de build: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" ] } ] }
Em que:
- kubernetes-resource-file é o caminho do arquivo de recurso do Kubernetes ou do diretório que contém os arquivos de recursos do Kubernetes.
- cluster é o nome do cluster do GKE em que o aplicativo será implantado.
- location é a região/zona do cluster.
Para mais informações sobre as sinalizações disponíveis, consulte sinalizações
gke-deploy run
.Comece a build:
gcloud builds submit --region=REGION --project=project-id --config build-config
Em que:
- project-id é o ID do projeto;
- build-config é o nome do arquivo de configuração da versão.
REGION
é uma das regiões de build com suporte.
Como criar e implantar uma nova imagem de contêiner
Para criar e implantar uma nova imagem de contêiner:
Atualize o arquivo de recurso do Kubernetes com a nova imagem do contêiner 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" ] } ] }
Em que:
- project-id é o ID do projeto;
- image é o nome desejado da imagem do contêiner, geralmente o nome do aplicativo.
- tag é a tag da imagem do contêiner.
- Se você estiver criando uma nova imagem de contêiner com cada confirmação, uma boa prática é usar o SHA abreviado da confirmação como uma tag. O Cloud Build o disponibiliza como uma substituição padrão
$SHORT_SHA
.
- Se você estiver criando uma nova imagem de contêiner com cada confirmação, uma boa prática é usar o SHA abreviado da confirmação como uma tag. O Cloud Build o disponibiliza como uma substituição padrão
- kubernetes-resource-file é o caminho do arquivo de recurso do Kubernetes ou do diretório que contém os arquivos de recursos do Kubernetes.
- cluster é o nome do cluster do GKE em que o aplicativo será implantado.
- location é a região/zona em que o cluster será implantado.
Comece a build:
gcloud builds submit --region=REGION --project=project-id --config build-config
Em que:
- project-id é o ID do projeto;
- build-config é o nome do arquivo de configuração da versão.
REGION
é uma das regiões de build com suporte.
Como automatizar as implantações
É possível automatizar a implantação do aplicativo no GKE criando um gatilho no Cloud Build. É possível configurar os gatilhos para criar e implantar imagens sempre que você enviar alterações do código.
Para criar um gatilho de compilação:
Abra a página Gatilhos no console do Google Cloud:
Selecione o projeto no menu suspenso do seletor na parte superior da página.
Clique em Abrir.
Clique em Criar gatilho.
Na página Criar gatilho, especifique as seguintes configurações:
Insira um nome para o gatilho.
Selecione o evento de repositório para iniciar o gatilho.
Selecione o repositório que contém o código-fonte e o arquivo de configuração da compilação.
Especifique o regex para o nome da ramificação ou da tag que iniciará sua trigger.ee
Escolha uma configuração para o gatilho.
Se você escolher um arquivo de configuração do Cloud Build, especifique Variáveis de substituição fornecendo um nome de variável e o valor que quer associar a ela. No exemplo abaixo, a variável de substituição definida pelo usuário
_CLOUDSDK_CONTAINER_CLUSTER
especifica o cluster em que será feita a implantação. A variável de substituição definida pelo usuário_CLOUDSDK_COMPUTE_ZONE
especifica o respectivo local. Se você quiser implantar em um cluster diferente, use a mesma configuração de build e altere apenas 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}" ] } ] }
Em que:
- kubernetes-resource-file é o caminho do arquivo de configuração do Kubernetes ou do diretório que contém os arquivos de recursos do Kubernetes.
- project-id é o ID do projeto;
- image é o nome desejado da imagem do contêiner, geralmente o nome do aplicativo.
- tag é a tag da imagem do contêiner.
Para saber mais como definir substituições para arquivos de configuração de build, consulte Como usar substituições definidas pelo usuário.
Clique em Criar para salvar o gatilho de compilação.
Quando você envia o código ao seu repositório, o Cloud Build aciona automaticamente um build. Para saber mais sobre gatilhos de compilação, consulte Como criar e gerenciar gatilhos de build.
A seguir
- Saiba como configurar implantações automáticas para suas cargas de trabalho no GKE.
- Saiba como criar um pipeline de CI/CD no estilo GitOps para implantação no GKE com o Cloud Build.
- Saiba mais sobre outras opções de
gke-deploy
. - Saiba como realizar implantações azul-verde no Compute Engine.
- Saiba mais sobre outros builders do Cloud.
- Saiba como resolver problemas de erro no build.