Com o Cloud Workstations, é possível criar e usar imagens personalizadas para suas estações de trabalho. Depois que uma imagem personalizada estiver em uso, é útil automatizar uma recriação da imagem personalizada para extrair correções e atualizações disponíveis nas imagens de base.
Neste tutorial, você vai aprender a criar um pipeline automatizado para garantir que as atualizações de segurança e os patches sejam incluídos nas imagens personalizadas de estação de trabalho.
Objetivos
Ao seguir este tutorial, você vai criar um pipeline automatizado para sua imagem de base com estas 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.
- Criar um gatilho de build 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.
- Analise os resultados dos processos automatizados.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso,
use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho sem custos financeiros.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command:gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command:gcloud init
Prepare o ambiente
Antes de continuar, defina as seguintes variáveis de ambiente.
Defina o ID do projeto na nuvem que você planeja usar:
PROJECT_ID=$PROJECT_IDDefina o nome de usuário do GitHub em que você planeja armazenar o repositório:
GITHUB_USER=$GITHUB_IDDefina as variáveis
PROJECT_NUMBEReREGIONpara usar durante o processo:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \ --format='value(projectNumber)') REGION=$REGIONNo exemplo anterior, substitua $REGION pelo nome da região que você planeja usar, por exemplo,
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 da
gcloudao acessar o Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.devPara 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 suas imagens personalizadas em um repositório do Git. O processo automatizado acessa esse repositório durante o processo de build para extrair as configurações relevantes e o Dockerfile.
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 até 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 é possível pular as últimas etapas porque isso pode ser feito mais tarde na linha de comando.
Se você usa uma solução de repositório Git diferente, também pode seguir as instruções para conectar o Cloud Build ao GitLab ou Bitbucket.
Criar um gatilho de build do Cloud Build
O repositório de amostra contém uma definição de contêiner e uma configuração do Cloud Build
usada para criar a imagem de contêiner. Nesta etapa, você vai criar um
gatilho de build do Cloud Build que executa as instruções no
arquivo cloudbuild.yaml, que pode ser encontrado 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)")
Este exemplo configura o seguinte:
- O comando da CLI
gcloudcria um gatilho manual no Cloud Build chamadocustom-image-trigger, conforme indicado pela flagnamena segunda linha. - As próximas três linhas contêm flags relacionadas ao repositório de origem do GitHub:
- Caminho para o repositório
- Tipo do repositório
- Ramificação do Git para criar
- A flag
build-configindica o caminho para o arquivo do Cloud Build no repositório do Git. Para tornar o job dinâmico, use a flag
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
Abra 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_IDpara uso posterior.
Configurar o Cloud Scheduler
Para garantir que as imagens estejam atualizadas com as atualizações e correções mais recentes, use o Cloud Scheduler para executar o gatilho do Cloud Build com uma frequência definida. Neste tutorial, o job é executado todos os dias. Na prática, defina uma frequência alinhada às necessidades da sua organização para garantir que as atualizações mais recentes sejam sempre incluídas.
Conceda um papel obrigatório à conta de serviço padrão para invocar o gatilho de build 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 obrigató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-platformO job está definido 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 "opções" more_vertMais para essa linha.
- Clique em Forçar a execução de um job para testar o sistema manualmente.
Depois que o comando for executado, acesse a página de histórico do Cloud Build para analisar o progresso:
Analisar os resultados
Como você ativou a API de verificação de contêineres 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 "Repositórios" do Artifact Registry:
Na lista de repositórios, clique em um repositório.
Clique no nome de uma imagem. Os totais de vulnerabilidade de cada resumo de imagem aparecem 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, a disponibilidade de uma correção 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 conta do Google Cloud pelos recursos usados nesta página, lembre-se de excluir os recursos que você não precisa mais.
Para excluir um projeto do Google Cloud no console do Google Cloud ou na CLI do gcloud:
Console
- No console 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
- Confira 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 as 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.