As estações de trabalho na nuvem permitem-lhe criar e usar imagens personalizadas para as suas estações de trabalho. Depois de uma imagem personalizada estar em utilização, é útil automatizar uma recompilação da imagem personalizada para incorporar correções e atualizações disponíveis nas imagens base.
Neste tutorial, vai aprender a criar um pipeline automatizado para ajudar a garantir que inclui atualizações e patches de segurança nas suas imagens de estações de trabalho personalizadas.
Objetivos
Ao seguir este tutorial, cria um pipeline automatizado para a sua imagem base com estes passos:
- Crie um repositório do Artifact Registry para armazenar e analisar a sua imagem personalizada.
- Configure o GitHub com Google Cloud para armazenar as configurações de imagens.
- Crie um acionador do Cloud Build para automatizar a criação e a implementação de imagens personalizadas no Artifact Registry.
- Configure o Cloud Scheduler para iniciar compilações regularmente.
- Reveja os resultados dos processos automatizados.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
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.
-
Verify 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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI com a sua identidade federada.
gcloud
-
Para inicializar a CLI
gcloud
, execute o seguinte comando:gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify 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.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI com a sua identidade federada.
gcloud
-
Para inicializar a CLI
gcloud
, execute o seguinte comando:gcloud init
Defina o ID do projeto do projeto na nuvem que planeia usar:
PROJECT_ID=$PROJECT_ID
Defina o nome de utilizador do GitHub onde planeia armazenar o seu repositório:
GITHUB_USER=$GITHUB_ID
Defina as variáveis
PROJECT_NUMBER
eREGION
a usar 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 planeia usar, por exemplo,
us-central1
.Para mais informações sobre as regiões disponíveis, consulte o artigo Localizações das Cloud Workstations.
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 planeia usar.
Configure o Docker para usar as suas credenciais da CLI do
gcloud
quando aceder ao Artifact Registry.gcloud auth configure-docker $REGION-docker.pkg.dev
Para desativar a análise de artefactos, execute o seguinte comando:
gcloud services disable containerscanning.googleapis.com
- Clique neste link para
criar um novo fork
do repositório
software-delivery-workshop
. - Se lhe for pedido, inicie sessão no GitHub.
- Selecione o seu nome de utilizador do GitHub como proprietário. O nome do repositório é apresentado como
software-delivery-workshop
. - Clique em Criar fork e aguarde alguns segundos até que o processo esteja concluído.
- O comando
gcloud
CLI cria um acionador manual no Cloud Build denominadocustom-image-trigger
, conforme indicado pelo sinalizadorname
na segunda linha. - As três linhas seguintes contêm flags relacionadas com o repositório do GitHub de origem:
- Caminho para o repositório
- Tipo do repositório
- Ramo do Git a compilar
- A flag
build-config
indica o caminho para o ficheiro do Cloud Build no repositório Git. Para tornar a tarefa dinâmica, use a flag
substitutions
. Para esta tarefa, o comando transmite as seguintes variáveis:- Região,
$_REGION
- Nome do repositório do Artifact Registry,
$_AR_REPO_NAME
- Nome da imagem do contentor,
$_AR_IMAGE_NAME
- Localização do ficheiro Docker para compilar,
$_IMAGE_DIR
Veja o ficheiro cloudbuild.yaml para ver como estas variáveis são usadas no processo.
- Região,
Após a criação do acionador, o nome exclusivo do acionador é obtido e armazenado na variável de ambiente
$TRIGGER_ID
para utilização posterior.Conceda uma função necessária à conta de serviço predefinida 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 uma função necessária à conta de serviço do Cloud Build para carregar 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 a tarefa 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
A tarefa está definida para ser executada uma vez por dia. No entanto, para testar a funcionalidade imediatamente, execute a tarefa manualmente a partir do Cloud Scheduler:
- Na página do Cloud Scheduler, encontre a entrada que acabou de criar denominada 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 uma tarefa para testar o sistema manualmente.
Depois de o comando ser executado com êxito, mude para a página Histórico do Cloud Build para rever o progresso:
Abra a página Repositórios do Artifact Registry:
Na lista de repositórios, clique num repositório.
Clique no nome de uma imagem. Os totais de vulnerabilidades para 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.
- 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.
- 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.
- Reveja a lista de imagens base pré-configuradas disponíveis.
- Personalize as imagens de contentores.
- Reveja os tipos de máquinas disponíveis.
- Configurar as práticas recomendadas de segurança.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.
Prepare o ambiente
Antes de continuar, certifique-se de que define as seguintes variáveis de ambiente.
Crie um repositório do Artifact Registry
Neste tutorial, usa o Artifact Registry para armazenar e analisar as suas imagens.
Configure o seu repositório do GitHub
Na prática, mantém o Dockerfile das suas imagens personalizadas num repositório Git. O processo automatizado acede a esse repositório durante o processo de criação para extrair as configurações relevantes e o Dockerfile.
Crie um fork do repositório de exemplo
Para criar uma ramificação de um repositório de exemplo que forneça definições de contentores, siga estes passos:
Associe o Cloud Build ao GitHub
Em seguida, associe esse repositório ao Cloud Build através da capacidade de associação ao GitHub integrada. Clique no link para o repositório do GitHub e siga as instruções que descrevem como concluir o processo. Não precisa de criar o acionador no último passo do assistente e pode ignorar os últimos passos porque pode fazê-lo mais tarde a partir da linha de comandos.
Se usar uma solução de repositório Git diferente, também pode seguir as instruções para associar o Cloud Build ao GitLab ou ao Bitbucket.
Crie um acionador do Cloud Build
O repositório de exemplo contém uma definição de contentor e uma configuração do Cloud Build usadas para criar a imagem de contentor. Neste passo, cria um acionador do Cloud Build que executa as instruções no ficheiro cloudbuild.yaml
que pode encontrar 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:
Configure o Cloud Scheduler
Para ajudar a garantir que as suas imagens estão atualizadas com as atualizações e os patches mais recentes, use o Cloud Scheduler para executar o acionador do Cloud Build numa frequência definida. Para este tutorial, a tarefa é executada todos os dias. Na prática, defina esta opção para uma frequência alinhada com as necessidades da sua organização para ajudar a garantir que as atualizações mais recentes são sempre incluídas.
Reveja os resultados
Uma vez que ativou a API Container Scanning como parte do processo de configuração, o Artifact Registry analisa automaticamente as imagens em busca de vulnerabilidades de segurança.
Para rever as vulnerabilidades:
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, certifique-se de que se lembra de eliminar os recursos de que já não precisa.
Para eliminar um Google Cloud projeto da Google Cloud consola ou da
CLIgcloud
:
Consola
gcloud