Vista geral
A Google Cloud Policy Intelligence ajuda as empresas a compreender e gerir as respetivas políticas para reduzir o risco. Ao oferecer mais visibilidade e automatização, os clientes podem aumentar a segurança sem aumentar a carga de trabalho.
O Recommender permite-lhe obter recomendações para Google Cloud recursos, ajudando a melhorar a segurança na nuvem, poupar custos e muito mais. Para ver uma lista de recomendações suportadas, consulte a documentação do motor de recomendações. Este tutorial descreve a utilização de recomendações de dimensionamento para instâncias de VM e recomendações de gestão de identidade e acesso (IAM). O Serviço de Recomendação usa a aprendizagem automática para fornecer aos administradores recomendações para remover o acesso desnecessário a Google Cloud recursos e redimensionar Google Cloud as instâncias do Compute Engine para uma utilização mais eficiente dos recursos.
Cada recomendação inclui uma ação sugerida e o respetivo impacto. Depois de rever as recomendações para os impactos identificados, bem como outras considerações específicas do seu ambiente, pode selecionar as recomendações que quer aplicar. Pode aplicar recomendações manualmente a partir da Google Cloud consola ou aplicá-las de forma programática integrando-as no seu pipeline de infraestrutura como código (IaC).
A IaC permite-lhe automatizar a criação dos seus Google Cloud recursos.Tem de manter o seu repositório de IaC atualizado e encaminhar as alterações feitas à Google Cloud organização através dele. Geralmente, as estratégias de IaC nas organizações revelam-se benéficas quando são implementadas com rigor e servem como a única versão da verdade para a sua infraestrutura na nuvem. Manter o repositório de IaC atualizado é fundamental para evitar desvios entre a versão da sua infraestrutura que o repositório de IaC reflete e o que tem na organização.
Recomendações de IAM
Entre outras práticas importantes, uma prática comum é o princípio de segurança do menor privilégio e uma consideração cuidadosa de como as alterações à sua organização são implementadas e sincronizadas com o seu repositório de IaC.
Recomendação de dimensionamento para VMs
As recomendações de dimensionamento ajudam a reduzir os custos através de sugestões para redimensionar o tipo de máquina das suas instâncias de modo a usar os recursos das instâncias de forma mais eficiente
Este tutorial descreve como arquitetar e criar um pipeline de automatização para aplicar um programa de recomendações de informações sobre políticas de forma programática. Como parte desta pipeline de automatização, vai saber como manter o seu repositório de IaC atualizado com as alterações que decide fazer à sua Google Cloud organização, com base no dimensionamento de VMs e na recomendação de associações de políticas de IAM que o Recomendador disponibiliza.
Este tutorial usa o Hashicorp Terraform como ferramenta IaC. No entanto, os padrões arquitetónicos e os componentes usados no pipeline de automatização descrito podem ser usados mesmo que esteja a usar uma ferramenta de gestão de IaC diferente, como o Deployment Manager. Tem de modificar a base de código de código aberto disponibilizada com este tutorial para se adequar à sua implementação específica de IaC.
Este guia destina-se a arquitetos, proprietários de produtos e programadores que possam ser responsáveis pela administração, segurança e planeamento da infraestrutura do respetivoGoogle Cloud.
Arquitetura do pipeline de automatização
O diagrama seguinte mostra os componentes que usa nesta pipeline de automatização.
Uma tarefa agendada do Cloud Scheduler executa o serviço Recommender Parser. O serviço chama a API Recommender para obter recomendações do Recommender para os projetos que especificar. Em seguida, analisa estas recomendações de dimensionamento de VMs e IAM para as mapear para a configuração que tem nos seus manifestos do Terraform. O serviço atualiza os seus manifestos de IaC para refletir estas recomendações. Gera um pedido de obtenção com as alterações para que possa rever as atualizações. Depois de rever e unir o pedido de envio, uma tarefa do Cloud Build implementa as alterações à sua infraestrutura na sua organização doGoogle Cloud .
São usados vários serviços Google Cloud auxiliares no pipeline para fins de acompanhamento das recomendações processadas, geração de notificações sobre a conclusão da compilação e armazenamento do estado do Terraform. Vai saber mais sobre estes serviços ao longo deste tutorial.
A lista seguinte descreve a finalidade dos componentes e os requisitos de controlo de acesso:
- Recomendadores de inteligência da plataforma
- Finalidade: gerar recomendações de segurança e dimensionamento de VMs
- Controlo de acesso: a Google Cloud conta de serviço tem de ter as autorizações de IAM necessárias para obter recomendações através da API Recommender. - Reveja as funções e as autorizações do Recommender para selecionar a função mais adequada aplicável à conta de serviço que usa para executar o serviço recommender-parser. 
- Cloud Scheduler
- Finalidade: o Cloud Scheduler aciona o serviço do analisador do Recommender. O Cloud Scheduler permite-lhe configurar várias tarefas que invocam tantas instâncias do serviço de análise quanto precisar. Cada invocação tem de transmitir as seguintes entradas - Lista de projetos para os quais as recomendações devem ser processadas
- Tipo de recomendação
- Nome do repositório de IaC
 
- Controlo de acesso: crie ou identifique uma Google Cloud conta de serviço a usar para as chamadas do Cloud Scheduler para o seu serviço Recommender Parser. - Conceda à conta de serviço a função de agente do serviço Cloud Scheduler para que possa executar tarefas do Cloud Scheduler. Além disso, conceda à conta de serviço a função de invocador do Cloud Run, uma vez que essa conta invoca um serviço do Cloud Run - Consulte a documentação sobre a configuração do acesso autenticado para tarefas do programador para ver detalhes. 
- Serviço do Cloud Run
- Finalidade:: o serviço de análise sintática de recomendações é onde reside toda a lógica de processamento. Tem várias rotas, cada uma com um objetivo específico: - Analisar recomendações para cada tipo de recomendação.
- Atualizar o estado das recomendações que estão a ser processadas
 
- Controlo de acesso: use o IAM para gerir o acesso a este serviço - Além disso, atribua o serviço a uma conta de serviço dedicada. Isto garante que apenas o serviço pode invocar outros serviços, como o Firestore. 
- Hashicorp Terraform
- Finalidade: o Terraform 0.12 é a ferramenta IaC. 
- É usado um criador do Cloud Build para o Terraform para invocar comandos do Terraform, e a conta de serviço do Cloud Build é usada para esse fim. 
- Cloud Build
- Finalidade: o Google Cloud Build automatiza a implementação de infraestrutura com base nas alterações feitas aos manifestos de IaC de acordo com as recomendações de inteligência de políticas. 
- Controlo de acesso: a conta de serviço do Cloud Build tem de ter o conjunto correto de autorizações para interagir com os recursos no seu projeto de teste. - Consulte a documentação para configurar uma conta de serviço do Cloud Build. 
- GitHub
- Finalidade: o repositório de IaC usa o GitHub para o controlo de origem. O repositório de IaC no GitHub está integrado com o Cloud Build. Quando são feitos commits no ramo principal, é acionado um trabalho do Cloud Build para executar um conjunto de tarefas pré-configuradas. 
- Controlo de acesso: tem de gerar chaves SSH para ativar o acesso ao seu repositório de IaC. - Além disso, tem de gerar um token de acesso pessoal para enviar commits para o GitHub. 
- Firestore
- O Firestore é uma base de dados de documentos NoSQL totalmente gerida e escalável que é usada nesta arquitetura para persistir informações relacionadas com os IDs de recomendações analisados pelo serviço Recommender Parser, juntamente com os detalhes correspondentes pertinentes para commits do Git. - Os detalhes persistentes no Firestore desempenham um papel integral no ciclo de feedback que faz parte do pipeline completo. Depois de receber uma recomendação gerada pela API Recommender e antes de processar a recomendação, o serviço marca o estado da recomendação como - CLAIMED. Depois de a recomendação ser aplicada com êxito, o serviço consulta a base de dados para obter os IDs das recomendações que foram aplicadas com êxito pela tarefa do Cloud Build e altera o estado da recomendação para- SUCCEEDED. Se a tarefa do Cloud Build falhar, o estado da recomendação é alterado para- FAILED.
- Controlo de acesso: consulte as funções do Firestore para ver detalhes. O serviço recommender-parser lê dados do Firestore e precisa da função roles/datastore.user para o fazer. 
- Pub/Sub
- Finalidade: o Cloud Build publica mensagens num tópico do Pub/Sub quando o estado da sua compilação muda, como quando a compilação é criada, quando a compilação passa para um estado de funcionamento e quando a compilação é concluída. - O tópico do Pub/Sub para o qual o Cloud Build publica mensagens chama-se cloud-builds e é criado automaticamente para si quando ativa a API Cloud Build no seu projeto. 
- Controlo de acesso: as subscrições push podem ser configuradas para fornecer um cabeçalho de autenticação para permitir que o serviço autorize o pedido. Consulte o artigo Usar subscrições push para ver mais detalhes. 
Quando terminar este tutorial, pode evitar a faturação contínua eliminando os recursos que criou. Consulte a secção Limpar para ver mais detalhes.
Configure o seu ambiente
- Na Google Cloud consola, selecione o projeto do build.
- Na Google Cloud consola, aceda ao Cloud Shell. - Na parte inferior da Google Cloud consola, é aberta uma sessão do Cloud Shell e é apresentado um comando. O Cloud Shell é um ambiente de shell com a CLI do Google Cloud já instalada e com valores já definidos para o seu projeto atual. A sessão pode demorar alguns segundos a ser inicializada. - Use o Cloud Shell para todos os comandos de terminal neste tutorial. 
- Crie uma variável de ambiente para guardar o número do projeto do seu projeto - buildatravés do comando abaixo:- export BUILD_PROJECT_ID=$DEVSHELL_PROJECT_ID
- Crie uma variável de ambiente para guardar o número do projeto do seu projeto - test. Copie manualmente o ID do projeto de teste e substitua PROJECT-ID por ele,- export TEST_PROJECT_ID=PROJECT-ID 
- Atribui definições predefinidas para valores que são usados ao longo do tutorial, como região e zona. Neste tutorial, usa - us-central1como região predefinida e- us-central1-bcomo zona predefinida.
- Defina a região e a zona predefinidas para este tutorial executando o seguinte comando: - gcloud config set compute/zone us-central1-b --project $BUILD_PROJECT_ID gcloud config set compute/zone us-central1-b --project $TEST_PROJECT_ID
- Defina o seu projeto do - buildcomo o projeto predefinido:- gcloud config set project $BUILD_PROJECT_ID
- Crie uma variável de ambiente denominada - BUILD_PROJECT_NUMBERpara o- buildnúmero do projeto- export BUILD_PROJECT_NUMBER=$(gcloud projects describe $DEVSHELL_PROJECT_ID --format='value(projectNumber)')
- Clone o repositório do GitHub para este tutorial. 
Crie um contentor para o estado do Terraform
Crie um contentor do Cloud Storage no seu projeto de compilação para armazenar o ficheiro de estado do Terraform.
gcloud storage buckets create gs://recommender-tf-state-$BUILD_PROJECT_ID \
  --project=${BUILD_PROJECT_ID} --location=us-central1
Crie um repositório do GitHub
Crie um repositório do GitHub para servir como repositório de IaC de exemplo
- Crie um novo repositório privado do GitHub. Este repositório IAC-REPO-NAME serve como repositório de IaC para os fins deste tutorial 
- Nos passos seguintes, vai enviar os ficheiros no subdiretório - sample-iacdo repositório clonado para a sua conta do GitHub.- No Cloud Shell, copie o diretório - sample-iacpara o seu diretório pessoal. Vai usar este diretório para criar um novo repositório local e enviá-lo para o GitHub.- cp -r recommender-iac-pipeline-nodejs-tutorial/sample-iac $HOME
- Navegue para o novo diretório - cd $HOME/sample-iac
- Inicialize o repositório na sua máquina local. - git init
- Adicione IAC-REPO-NAME como o repositório remoto, substitua IAC-REPO-NAME e GITHUB-ACCOUNT por valores adequados - git remote add origin https://github.com/GITHUB-ACCOUNT/IAC-REPO-NAME 
- Substitua os marcadores de posição nos ficheiros deste repositório pelo - testID do projeto e o nome do contentor do Google Cloud Storage do Terraform.- sed -i "s|__PROJECT_ID__|${TEST_PROJECT_ID}|g" ./terraform.tfvars sed -i "s|__STATE_BUCKET_NAME__|recommender-tf-state-$BUILD_PROJECT_ID|g" ./backend.tf
- Adicione, confirme e envie para o GitHub. - git add . git commit -m "First Commit" git push origin master
- Inicie sessão na sua conta do GitHub quando lhe for solicitado. 
 
Gere chaves SSH para o seu repositório
Configure a autenticação de chaves SSH com o seu repositório de IaC no GitHub e carregue as chaves para o Cloud Storage.
- Gere chaves SSH para o seu repositório do GitHub. - Gere um par de chaves SSH. Substitua your_email@example.com pelo seu endereço de email do GitHub. No Cloud Shell: - ssh-keygen -t rsa -b 4096 -m PEM -C "your_email@example.com" 
- Quando lhe for pedido que "Introduza um ficheiro no qual guardar a chave", prima Enter. Esta opção aceita a localização predefinida do ficheiro. 
- No comando para introduzir uma frase secreta, prima Enter. 
 
- Tome nota do diretório SSH-KEYS-DIR no qual guarda as chaves SSH transferidas. Por predefinição, a localização é - $HOME/.ssh/
- Copie a chave pública de SSH que gerou para o seu repositório do GitHub como uma chave de implementação. - Copie a chave pública de SSH que gerou no Cloud Shell. Substitua SSH-KEYS-DIR pelo caminho do diretório. - cat SSH-KEYS-DIR/id_rsa.pub
- Na sua conta do GitHub, navegue para o IAC-REPO-NAME repositório 
- Clique em Definições > Chaves de implementação. 
- Clique em Adicionar chave de implementação e cole a chave pública de SSH que copiou. Escolha um Título para a chave. 
- Selecione a caixa de verificação "Permitir acesso de escrita" 
- Clique em Guardar. 
 
- Navegue novamente para a sessão do Cloud Shell 
- Crie o ficheiro - known_hostspara o GitHub. Na sessão do Cloud Shell, execute o comando:- ssh-keyscan github.com >> ~/.ssh/known_hosts
- Crie um contentor do Cloud Storage no seu projeto - builde carregue as suas chaves SSH e o ficheiro- known_hostspara o mesmo. Substitua SSH-KEYS-DIR pelo caminho para o diretório onde gerou as chaves SSH.- gcloud storage buckets create gs://github-keys-$BUILD_PROJECT_ID --project=${BUILD_PROJECT_ID} --location=us-central1 gcloud storage cp SSH-KEYS-DIR/id_rsa* gs://github-keys-$BUILD_PROJECT_ID gcloud storage cp SSH-KEYS-DIR/known_hosts gs://github-keys-$BUILD_PROJECT_ID 
- Gere um token de acesso pessoal para o GitHub. Este token é usado quando executa operações Git através de chamadas API que o serviço recommender-parser faz para gerar pedidos de obtenção, validar manifestos de IaC atualizados. - Na sua conta do GitHub, no canto superior direito de qualquer página, clique na sua foto do perfil e, de seguida, em Definições. 
- Na barra lateral esquerda, clique em Definições do programador. 
- Na barra lateral esquerda, clique em Tokens de acesso pessoal 
- Clique em Gerar novo token. 
- Atribua um nome descritivo ao token. 
- Selecione os âmbitos como repo. 
- Clique em Gerar token. 
- Copie o token para a área de transferência. 
- Na sessão do Cloud Shell, crie uma variável de ambiente. - export GITHUB_PAT=personal-access-token-you-copied 
 
Configure o Cloud Build
- Associe o seu repositório Git IAC-REPO-NAME para integrar com o Cloud Build. - Aceda à página da app Cloud Build no GitHub Marketplace.
- Desloque a página para baixo e clique em Configurar com o Google Cloud Build na parte inferior da página.
- Se lhe for pedido, inicie sessão no GitHub.
- Selecione Selecionar apenas repositórios. Use a lista pendente Selecionar repositórios para ativar apenas o acesso ao seu IAC-REPO-NAME na app Cloud Build.
- Clique em Instalar.
- Inicie sessão em Google Cloud. - É apresentada a página de autorização, onde lhe é pedido que autorize a app Google Cloud Build a estabelecer ligação a Google Cloud. 
- Clique em Autorizar o Google Cloud Build por GoogleCloudBuild. É redirecionado para a consola Google Cloud . 
- Selecione o seu projeto do Google Cloud . 
- Ative a caixa de verificação de consentimento e clique em Seguinte. 
- Na página Selecionar repositório apresentada, selecione o IAC-REPO-NAME repositório do GitHub 
- Clique em Associar repositório. 
- Clique em Criar um acionador. Esta ação cria uma definição de acionador para si. 
- Clique em Criar para guardar o acionador de compilação. 
 - Para mais informações, consulte o artigo Executar compilações no GitHub. 
- O diretório que copiou tem um ficheiro - cloudbuild.yaml. Este ficheiro de configuração descreve os passos que uma tarefa do Cloud Build executa quando é acionada.- steps: - name: hashicorp/terraform:0.12.0 args: ['init'] - name: hashicorp/terraform:0.12.0 args: ['apply', '-auto-approve']
- Adicione autorizações à sua conta de serviço do Cloud Build para lhe permitir criar contas de serviço, associar funções e máquinas virtuais (instâncias do Compute Engine) no projeto de teste - gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \ --member serviceAccount:$BUILD_PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role roles/compute.admin \ --project $TEST_PROJECT_ID gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \ --member serviceAccount:$BUILD_PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role roles/iam.serviceAccountAdmin \ --project $TEST_PROJECT_ID gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \ --member serviceAccount:$BUILD_PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role roles/iam.securityAdmin \ --project $TEST_PROJECT_ID
- Abra a página Build Triggers na Google Cloud consola. 
- Selecione o projeto - builde clique em Abrir.
- Atualize a definição do acionador: - Clique no menu e, de seguida, em Editar.
- Para Configuração, selecione a opção Ficheiro de configuração do Cloud Build (yaml ou json) e introduza cloudbuild.yamlno campo de texto.
- Clique em Guardar.
 
- Para testar manualmente o acionador de compilação, clique em Executar na entrada do acionador na lista de acionadores. 
- Verifique se uma instância do Compute Engine denominada - tf-compute-1e uma conta de serviço denominada- Terraform Recommender Testforam criadas no seu projeto de teste pela tarefa do Cloud Build que executou no passo anterior
Implemente o serviço do Cloud Run recommender-parser
- No Cloud Shell, altere os diretórios para o diretório criado pela clonagem do repositório - cd $HOME/recommender-iac-pipeline-nodejs-tutorial/parser-service
- Configure Google Cloud para usar uma região predefinida para os serviços do Cloud Run. Neste tutorial, usa a região us-central1, mas pode escolher uma região suportada diferente, se preferir. - gcloud config set run/region us-central1
- O diretório - parser-servicetem um subdiretório de teste com alguns JSONs de payload de exemplo para testar o serviço recommender-parser. Execute os seguintes comandos sed para substituir os marcadores de posição PROJECT_ID nestes ficheiros JSON pelo ID do seu projeto de teste.- sed -i "s|__PROJECT_ID__|${TEST_PROJECT_ID}|g" ./stub/iam.json sed -i "s|__PROJECT_ID__|${TEST_PROJECT_ID}|g" ./stub/vm.json
- Execute o seguinte comando para criar uma variável de ambiente para a sua imagem do Docker. - export IMAGE=gcr.io/$BUILD_PROJECT_ID/recommender-parser:1.0
- Crie a imagem e carregue-a para o Container Registry - gcloud builds submit --tag $IMAGE .
- Crie uma conta de serviço para o serviço recommender-parser interagir com outros serviços no pipeline. Google Cloud É uma boa prática conceder autorizações detalhadas aos seus serviços do Cloud Run. Consulte o artigo Identidade do serviço do Cloud Run para ver mais detalhes. - gcloud beta iam service-accounts create recommender-parser-sa \ --description "Service account that the recommender-parser service uses to invoke other Google Cloud services" \ --display-name "recommender-parser-sa" \ --project $BUILD_PROJECT_ID
- O serviço recommender-parser precisa de aceder às chaves SSH do GitHub e ao estado do Terraform que carregou para os contentores do Cloud Storage criados anteriormente. Adicione a conta de serviço como membro ao contentor do Cloud Storage. - gcloud storage buckets add-iam-policy-binding gs://github-keys-$BUILD_PROJECT_ID \ --member=serviceAccount:recommender-parser-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role=roles/storage.objectUser gcloud storage buckets add-iam-policy-binding gs://recommender-tf-state-$BUILD_PROJECT_ID \ --member=serviceAccount:recommender-parser-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role=roles/storage.objectUser
- Conceda à conta de serviço do serviço recommender-parser acesso ao Firestore, ao Recommender e à API Service Usage. - gcloud projects add-iam-policy-binding $BUILD_PROJECT_ID \ --member serviceAccount:recommender-parser-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role roles/datastore.user gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \ --member serviceAccount:recommender-parser-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role roles/recommender.iamAdmin gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \ --member serviceAccount:recommender-parser-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role roles/recommender.iamViewer gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \ --member serviceAccount:recommender-parser-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role roles/recommender.computeAdmin gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \ --member serviceAccount:recommender-parser-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role roles/serviceusage.serviceUsageConsumer
- Implemente o serviço do Cloud Run, denominado recommender-parser, executando o comando. Substitua GITHUB-ACCOUNT pelo nome de utilizador da sua conta do GitHub e não pelo email. Aceite todos os comandos do sistema. - gcloud run deploy \ --image=${IMAGE} \ --no-allow-unauthenticated \ --region us-central1 \ --platform managed \ --service-account recommender-parser-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --set-env-vars="GITHUB_ACCOUNT=github.com:GITHUB-ACCOUNT,GITHUB_PAT=${GITHUB_PAT},SSH_KEYS_BUCKET=github-keys-${BUILD_PROJECT_ID},TERRAFORM_STATE_BUCKET=recommender-tf-state-$BUILD_PROJECT_ID" \ --project $BUILD_PROJECT_ID \ recommender-parser 
Configure o Firestore
- Na Google Cloud consola, no projeto build, navegue para a página do Firestore.
- Quando lhe for pedido que selecione um modo, clique em Selecionar modo nativo.
- Selecioneus-east1como a localização predefinida.
- Clique em Criar base de dados.
O serviçorecommender-parser escreve documentos nesta base de dados para os seguintes fins:
- Para acompanhar as recomendações que obteve da Recommender API
- Chame a API Recommender assim que as recomendações forem processadas para atualizar o estado de cada recomendação processada para SUCCEEDEDouFAILED, conforme apropriado. Este é um passo fundamental que torna o pipeline idempotente, garantindo que as recomendações não são processadas de forma incompleta nem várias vezes.
Configure uma tarefa do Cloud Scheduler
- Crie uma conta de serviço que as tarefas do Cloud Scheduler usam para executar o serviço recommender-parser. - gcloud beta iam service-accounts create recommender-scheduler-sa \ --description "Service Account used by Cloud Scheduler to invoke the recommender-parser service" \ --display-name "recommender-scheduler-sa" \ --project $BUILD_PROJECT_ID
- Atribua a função de execução/invocador da conta de serviço para poder invocar o serviço do Cloud Run. - gcloud beta run services add-iam-policy-binding recommender-parser \ --member=serviceAccount:recommender-scheduler-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker \ --region=us-central1
- Obtenha o URL do serviço de recomendações: - gcloud beta run services list --platform managed --project $BUILD_PROJECT_ID- A tarefa do Cloud Scheduler invoca a rota /recommendation/iam do serviço recommender-parser para analisar as recomendações do IAM e a rota /recommender/vm para analisar as recomendações de dimensionamento de VMs. 
- Crie uma variável para o ponto final que as tarefas do Cloud Scheduler invocam. Substitua RECOMMENDER-SERVICE-URL pelo URL do serviço de recomendações que copiou no passo anterior. - export RECOMMENDER_ROUTE_TO_INVOKE_IAM=RECOMMENDER-SERVICE-URL/recommendation/iam - O URL deve ter o seguinte aspeto após anexar as informações do trajeto: - RECOMMENDER-SERVICE-URL/recommendation/iam 
- Crie uma tarefa do Cloud Scheduler denominada - recommender-iam-scheduler.- Altere o fuso horário selecionado com base na sua localização.
- Substitua IAC-REPO-NAME pelo nome do repositório do GitHub que criou.
 - O corpo da mensagem requer três entradas e tem de o construir conforme descrito abaixo: - repo: Este é o nome do seu repositório do GitHub IAC-REPO-NAME que criou em Crie um repositório do GitHub.
- projects: Uma lista / matriz de IDs de projetos aos quais este repositório do GitHub de IaC está mapeado. Google Cloud Neste tutorial, é o seu projeto- test.
- stub: o Recommender gera recomendações de IAM quando um subconjunto de autorizações para uma função não é usado há 60 dias e as recomendações de dimensionamento de VMs seguem um padrão semelhante. Para efeitos de teste desta conduta a pedido, pode transmitir- stubcomo- truepara que a conduta seja testada com os payloads de exemplo do Recommender fornecidos no repositório que clonou para este tutorial.
 - gcloud beta scheduler jobs create http recommender-iam-scheduler \ --project $BUILD_PROJECT_ID \ --time-zone "America/Los_Angeles" \ --schedule="0 */3 * * *" \ --uri=$RECOMMENDER_ROUTE_TO_INVOKE_IAM \ --description="Scheduler job to invoke recommendation pipeline" \ --oidc-service-account-email="recommender-scheduler-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com" \ --headers="Content-Type=application/json" \ --http-method="POST" \ --message-body="{ \"repo\": \"IAC-REPO-NAME\", \"projects\": [\"$TEST_PROJECT_ID\"], \"location\": \"global\", \"stub\": true }" 
Passos adicionais
O Cloud Build publica informações de compilação num tópico do Pub/Sub denominado cloud-builds que foi criado automaticamente quando ativou a API Cloud Build no seu projeto de compilação.
- Execute o seguinte comando para verificar se o tópico cloud-builds existe no seu projeto - build:- gcloud pubsub topics describe cloud-builds- Se o tópico existir, é apresentada a seguinte saída, em que BUILD-PROJECT-ID é o ID do projeto de compilação: - name: projects/BUILD-PROJECT-ID/topics/cloud-builds - Se receber uma mensagem de erro a indicar que o recurso não foi encontrado, siga as instruções para subscrever notificações de compilação e criar o tópico manualmente. 
- Crie uma conta de serviço que o Pub/Sub usa para invocar o ponto final do serviço recommender-parser. - gcloud beta iam service-accounts create recommender-ci-subscription-sa \ --description "Service Account used by Cloud Pub/Sub to push Cloud Build events to the recommender-parser service" \ --display-name "recommender-ci-subscription-sa" \ --project $BUILD_PROJECT_ID
- A conta de serviço do Pub/Sub deve estar associada às funções de que precisa para poder publicar mensagens e invocar o serviço recommender-parser. - gcloud projects add-iam-policy-binding $BUILD_PROJECT_ID \ --member serviceAccount:recommender-ci-subscription-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role roles/pubsub.publisher \ --project $BUILD_PROJECT_ID gcloud projects add-iam-policy-binding $BUILD_PROJECT_ID \ --member serviceAccount:recommender-ci-subscription-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role roles/pubsub.subscriber \ --project $BUILD_PROJECT_ID gcloud projects add-iam-policy-binding $BUILD_PROJECT_ID \ --member serviceAccount:recommender-ci-subscription-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role roles/run.invoker \ --project $BUILD_PROJECT_ID
- Adicione a - recommender-ci-subscription-saconta de serviço que criou ao serviço recommender-parser como membro com a função- invoker- gcloud beta run services add-iam-policy-binding recommender-parser \ --member=serviceAccount:recommender-ci-subscription-sa@$BUILD_PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker --region=us-central1
- Navegue para Pub/Sub na Google Cloud consola. 
- Clique no tópico cloud-builds. 
- Clique em Criar subscrição. 
- Para o ID da subscrição, introduza - recommender-service-build-events.
- Para Tipo de fornecimento, selecione Push. 
- Para Ponto final, introduza o URL do serviço de recomendações anexado por - /ci.
- Selecione Ativar autenticação. - Selecione a conta de serviço recommender-ci-subscription-saque criou.
- Clique em Conceder em resposta à mensagem de comando.
 
- Selecione a conta de serviço 
- Selecione Prazo de confirmação de 60 segundos. 
- Manter as restantes predefinições. 
- Clique em Criar. 
Teste o pipeline
O Recomendador gera recomendações de IAM quando um subconjunto de autorizações para uma função não é usado durante 60 dias. As recomendações de dimensionamento de VMs seguem um padrão semelhante. Para efeitos de teste desta
pipeline a pedido, vai usar os payloads JSON de recomendações de exemplo
fornecidos no subdiretório stub fornecido no repositório que clonou para
este tutorial. Isto permite-lhe testar o pipeline, exceto as chamadas API que o analisador de recomendações faz ao ponto final da API Recommender para atualizar o estado das recomendações que aplicou com êxito.
Em alternativa, se tiver recomendações ativas nos seus Google Cloud projetos, pode testar o pipeline de extremo a extremo sem ter de usar stubs. O resultado descrito abaixo é pertinente quando usa os payloads de exemplo para testar o pipeline. No entanto, os passos para testar este pipeline sem exemplos permanecem inalterados.
- Na Google Cloud consola, navegue para o projeto de teste e reveja os recursos que foram criados. Deve ter o seguinte: - Uma instância do Compute Engine denominada tf-compute-1com o tipo de máquinag1-small.
- Uma conta de serviço denominada Terraform Recommender Testcom a função deeditorpara o seu projeto de teste.
 
- Uma instância do Compute Engine denominada 
- Na página da consola do Cloud Scheduler no seu projeto - build, clique em Executar agora para a tarefa recommender-iam-scheduler.
- Clique na tarefa para ver os registos. Também pode ver os registos do serviço recommender-parser para ter uma vista detalhada dos passos que estão a ser executados pelo serviço. 
- Quando o serviço concluir a execução, navegue para o seu repositório do GitHub IAC-REPO-NAME. O serviço - recommender-parserteria gerado um pedido de obtenção para si. Reveja os manifestos de IaC modificados que constituem este pedido de envio e clique em Unir pedido de envio se estiver satisfeito com as alterações aos seus manifestos de IaC.
- Quando junta o pedido de envio, é criado um novo commit no ramo principal. Isto aciona uma tarefa do Cloud Build que implementa as modificações nos Google Cloud recursos no seu projeto - test. Aguarde alguns momentos para que a tarefa do Cloud Build seja concluída. Pode rever o respetivo estado na consola do Google Cloud
- Quando a tarefa estiver concluída, navegue para o projeto de teste. As cargas úteis de exemplo fornecidas fazem as seguintes alterações aos recursos no seu projeto de teste. - A conta de serviço de teste do Terraform, que tinha anteriormente a função de editorquando implementada, é alterada paraviewer.
 
- A conta de serviço de teste do Terraform, que tinha anteriormente a função de