O Cloud Workstations permite criar e usar imagens personalizadas para suas estações de trabalho. Depois que uma imagem personalizada está em uso, é útil automatizar a recriação dela para extrair correções e atualizações disponíveis nas imagens de base.
Neste tutorial, você aprenderá a criar um pipeline automatizado para garantir a inclusão de atualizações de segurança e patches nas imagens personalizadas da estação de trabalho.
Objetivos
Ao seguir este tutorial, você cria um pipeline automatizado para sua imagem de base com as seguintes etapas:
- Crie um repositório do Artifact Registry para armazenar e verificar sua imagem personalizada.
- Configure o GitHub com o Google Cloud para armazenar as configurações de imagem.
- Crie um gatilho do Cloud Build para automatizar a criação e a implantação de imagens personalizadas no Artifact Registry.
- Configure o Cloud Scheduler para iniciar builds regularmente.
- Analisar os resultados dos processos automatizados.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Artifact Registry, API Container Scanning, Cloud Build e Cloud Scheduler.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Artifact Registry, API Container Scanning, Cloud Build e Cloud Scheduler.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
prepare o ambiente
Antes de continuar, defina as variáveis de ambiente a seguir.
Defina o ID do projeto na nuvem que você planeja usar:
PROJECT_ID=$PROJECT_ID
Defina o nome de usuário do GitHub onde você planeja armazenar o repositório:
GITHUB_USER=$GITHUB_ID
Defina as variáveis
PROJECT_NUMBER
eREGION
a serem usadas no processo:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGION
No exemplo anterior, substitua $REGION pelo nome da região que você planeja usar, como
us-central1
.Para mais informações sobre as regiões disponíveis, consulte Locais do Cloud Workstations.
Crie um repositório do Artifact Registry
Neste tutorial, você vai usar o Artifact Registry para armazenar e verificar suas imagens.
Crie um repositório com o seguinte comando:
gcloud artifacts repositories create custom-images \ --repository-format=docker \ --location=$REGION \ --description="Docker repository"
Substitua $REGION pelo nome da região que você planeja usar.
Configure o Docker para usar suas credenciais da CLI
gcloud
ao acessar o Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.dev
Para desativar o Artifact Analysis, execute o seguinte comando:
gcloud services disable containerscanning.googleapis.com
Configurar o repositório do GitHub
Na prática, você mantém o Dockerfile das imagens personalizadas em um repositório Git. O processo automatizado acessa esse repositório durante o processo de compilação para extrair as configurações e o Dockerfile relevantes.
Bifurcar o repositório de amostra
Para bifurcar um repositório de amostra que fornece definições de contêiner, siga estas etapas:
- Clique neste link para
Criar uma nova bifurcação
do repositório
software-delivery-workshop
. - Se solicitado, faça login no GitHub.
- Selecione seu nome de usuário do GitHub como Proprietário. O nome do repositório aparece como
software-delivery-workshop
. - Clique em Criar bifurcação e aguarde alguns segundos para que o processo seja concluído.
Conectar o Cloud Build ao GitHub
Em seguida, conecte esse repositório ao Cloud Build usando o recurso de conexão integrado do GitHub. Clique no link para o repositório do GitHub e siga as instruções que descrevem como concluir o processo. Não é necessário criar o gatilho na última etapa do assistente e você pode pular as últimas etapas porque é possível fazer isso mais tarde na linha de comando.
Se você usar uma solução de repositório Git diferente, também poderá seguir as instruções para conectar o Cloud Build ao GitLab ou Bitbucket.
Criar um gatilho do Cloud Build
O repositório de amostra contém uma definição de contêiner e uma configuração do Cloud Build usadas para criar a imagem do contêiner. Nesta etapa, você cria um
gatilho do Cloud Build que executa as instruções no
arquivo cloudbuild.yaml
, que está disponível na
pasta
labs/cloudbuild-scheduled-jobs/code-oss-java.
gcloud builds triggers create manual \
--name=custom-image-trigger \
--repo=$GITHUB_USER/software-delivery-workshop \
--repo-type=GITHUB \
--branch=main \
--build-config=labs/cloudbuild-scheduled-jobs/code-oss-java/cloudbuild.yaml \
--substitutions=_REGION=$REGION,_AR_REPO_NAME=custom-images,_AR_IMAGE_NAME=code-oss-java,_IMAGE_DIR=labs/cloudbuild-scheduled-jobs/code-oss-java
TRIGGER_ID=$(gcloud builds triggers list \
--filter=name="custom-image-trigger" --format="value(id)")
Neste exemplo, temos as seguintes configurações:
- O comando
gcloud
da CLI cria um acionador manual no Cloud Build chamadocustom-image-trigger
, conforme indicado pela sinalizaçãoname
na segunda linha. - As três linhas a seguir contêm sinalizações relacionadas ao repositório do GitHub de origem:
- Caminho para o repositório
- Tipo do repositório
- Ramificação Git para build
- A sinalização
build-config
indica o caminho para o arquivo do Cloud Build no repositório Git. Para tornar o job dinâmico, use a sinalização
substitutions
. Para esse job, o comando transmite as seguintes variáveis:- Região:
$_REGION
- Nome do repositório do Artifact Registry,
$_AR_REPO_NAME
- Nome da imagem do contêiner,
$_AR_IMAGE_NAME
- Local do Dockerfile a ser criado,
$_IMAGE_DIR
Acesse o arquivo cloudbuild.yaml para ver como essas variáveis são usadas no processo.
- Região:
Depois que o gatilho é criado, o nome exclusivo dele é recuperado e armazenado na variável de ambiente
$TRIGGER_ID
para uso posterior.
Configurar o Cloud Scheduler
Para garantir que suas imagens estejam com as atualizações e os patches mais recentes, use o Cloud Scheduler para executar o gatilho do Cloud Build em uma frequência definida. Neste tutorial, o job é executado todos os dias. Na prática, defina uma frequência alinhada às necessidades organizacionais para garantir que as atualizações mais recentes sejam sempre incluídas.
Conceda um papel necessário à conta de serviço padrão para invocar o gatilho do Cloud Build:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/cloudbuild.builds.editor"
Conceda um papel necessário à conta de serviço do Cloud Build para fazer upload de imagens para o Artifact Registry:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role="roles/artifactregistry.admin"
Crie o job do Cloud Scheduler com o seguinte comando:
gcloud scheduler jobs create http run-build \ --schedule='0 1 * * *' \ --uri=https://cloudbuild.googleapis.com/v1/projects/$PROJECT_ID/locations/global/triggers/$TRIGGER_ID:run \ --location=us-central1 \ --oauth-service-account-email=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --oauth-token-scope=https://www.googleapis.com/auth/cloud-platform
O job está configurado para ser executado uma vez por dia. No entanto, para testar o recurso imediatamente, execute o job manualmente no Cloud Scheduler:
- Na página do Cloud Scheduler, encontre a entrada que você acabou de criar chamada run-build.
- Na coluna "Ações", clique no menu de opções more_vertMais dessa linha.
- Clique em Forçar a execução de um job para testar o sistema manualmente.
Depois que o comando for executado com êxito, mude para a página de histórico do Cloud Build para analisar o progresso:
Revisar os resultados
Como você ativou a API Container Scanning como parte do processo de configuração, o Artifact Registry verifica automaticamente as imagens em busca de vulnerabilidades de segurança.
Para analisar as vulnerabilidades:
Abra a página de repositórios do Artifact Registry:
Na lista de repositórios, clique em um deles.
Clique no nome de uma imagem. O total de vulnerabilidades de cada resumo de imagem aparece na coluna Vulnerabilidades.
Para ver a lista de vulnerabilidades de uma imagem, clique no link na coluna Vulnerabilidades. A lista de vulnerabilidades mostra a gravidade, se há alguma correção disponível e o nome do pacote que contém a vulnerabilidade.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, lembre-se de excluir os recursos que não são mais necessários.
Para excluir um projeto do Google Cloud no console do Google Cloud ou na
CLI gcloud
:
Console
- No Console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
gcloud
Exclua um projeto do Google Cloud:
gcloud projects delete PROJECT_ID
A seguir
- Consulte a lista de imagens de base pré-configuradas disponíveis.
- Personalize as imagens de contêiner.
- Confira os tipos de máquina disponíveis.
- Configurar práticas recomendadas de segurança
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.