Com o Cloud Workstations, você pode criar e usar imagens personalizadas para suas estações de trabalho. Depois que uma imagem personalizada estiver em uso, será ú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 da estação de trabalho.
Objetivos
Ao seguir este tutorial, você vai criar um pipeline automatizado para sua imagem de base seguindo estas etapas:
- Crie um repositório do Artifact Registry para armazenar e verificar a 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.
- Revise 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
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Container Scanning API, Cloud Build, and Cloud Scheduler APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Prepare o ambiente
Antes de continuar, defina as seguintes variáveis de ambiente.
Defina o ID do projeto da nuvem que você planeja usar:
PROJECT_ID=$PROJECT_ID
Defina o nome de usuário do GitHub em que você vai armazenar o repositório:
GITHUB_USER=$GITHUB_ID
Defina as variáveis
PROJECT_NUMBER
eREGION
para uso durante o 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, 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
gcloud
ao acessar o Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.dev
Para desativar Artifact Analysis, execute o seguinte comando:
gcloud services disable containerscanning.googleapis.com
Configurar seu repositório do GitHub
Na prática, você mantém o Dockerfile das 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 e o Dockerfile relevantes.
Bifurcar o repositório de exemplo
Para bifurcar um repositório de exemplo 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 acionador na última etapa do assistente, e você pode 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 ao Bitbucket.
Criar um gatilho do Cloud Build
O repositório de exemplo contém uma definição de contêiner e uma configuração do Cloud Build
usada 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 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
gcloud
cria um gatilho manual no Cloud Build chamadocustom-image-trigger
, conforme indicado pela flagname
na segunda linha. - As três linhas seguintes contêm flags relacionadas ao repositório do GitHub de origem:
- Caminho para o repositório
- Tipo do repositório
- Ramificação do Git a ser criada
- A flag
build-config
indica 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
Confira o arquivo cloudbuild.yaml para saber como essas variáveis são usadas no processo.
- Região,
Depois que o acionador é 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 atualizadas com as atualizações e os patches mais recentes, use o Cloud Scheduler para executar o acionador 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 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 acionador 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 no 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 para essa linha.
- Clique em Forçar a execução de um job para testar o sistema manualmente.
Depois que o comando for executado, mude para a página do histórico do Cloud Build para analisar o progresso:
Analisar 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 "Repositórios do Artifact Registry":
Na lista de repositórios, clique em um repositório.
Clique no nome de uma imagem. Os totais de vulnerabilidades 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, 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 conta do Google Cloud pelos recursos usados nesta página, não se esqueça 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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
A seguir
- Confira a lista de imagens de base pré-configuradas disponíveis.
- Personalize as imagens do 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.