Com o Cloud Workstations, você cria e usa modelos imagens 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 ajudar a garantir incluindo atualizações e patches de segurança nas imagens personalizadas das estações de trabalho.
Objetivos
Ao seguir este tutorial, você cria 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 do Cloud Build para automatizar a criação e a implantação de imagens personalizadas para o Artifact Registry.
- Configurar 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 variáveis de ambiente a seguir.
Defina o ID do projeto de nuvem que você planeja usar:
PROJECT_ID=$PROJECT_ID
Defina o nome de usuário do GitHub em que você planeja 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 as credenciais da CLI
gcloud
ao ao acessar o Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.dev
Para desativar a Análise de artefatos, 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 build para extrair as configurações e o Dockerfile relevantes.
Bifurcar o repositório de amostra
Para bifurcar um repositório de exemplo que fornece definições de contêineres, 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 Create fork 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 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 o instruções para Conectar o Cloud Build ao GitLab ou Bitbucket.
Criar um gatilho do Cloud Build
O repositório de exemplo contém uma definição de contêiner e um Cloud Build
configuração 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)")
Neste exemplo, configuramos 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 Git para criação
- 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 flag
substitutions
. Para este 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 a 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 armazenados 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 diariamente. Em prática, defina uma frequência alinhada às suas necessidades organizacionais para ajudar e garantir que as atualizações mais recentes estejam 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 recurso imediatamente, execute o trabalho manualmente no O 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 more_vertMais opções. linha de comando.
- 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
Porque você ativou a API Container Scanning como parte da configuração o Artifact Registry verifica automaticamente as imagens em busca de segurança vulnerabilidades.
Para analisar as vulnerabilidades:
Abra a página de 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 para cada resumo de imagem aparecem em 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 dos recursos na sua conta do Google Cloud nesta página, lembre-se de excluir os recursos não precisa mais.
Para excluir um projeto do Google Cloud usando o console ou a
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
- Analise 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.