Crie um build particular com o Gemini para receber assistência do Google Cloud

Neste tutorial, mostramos como usar o Gemini para Google Cloud, um colaborador com tecnologia de IA do Google Cloud, para navegar pelos registros e configurar um ambiente de criação para um conjunto de microsserviços no Google Kubernetes Engine.

Este tutorial é destinado a engenheiros de DevOps de qualquer nível de experiência.

Objetivos

  • Solicite ao Gemini uma consulta de geração de registros para que seja possível observar os registros dos pods.
  • Saiba como estabelecer um ambiente de build particular fazendo perguntas contextuais ao Gemini.
  • Use o Gemini para aprender a armazenar imagens de contêiner de maneira particular e segura.

Produtos do Google Cloud usados

Neste tutorial, usamos os seguintes produtos faturáveis do Google Cloud. Use a calculadora de preços para gerar uma estimativa de custo baseada na projeção de uso.

  • Google Kubernetes Engine (GKE). O GKE é um serviço gerenciado do Kubernetes que permite implantar e gerenciar aplicativos conteinerizados em escala.

  • Cloud Logging: O Logging é um sistema de gerenciamento de registros em tempo real com suporte para armazenamento, pesquisa, análise e monitoramento.

  • Cloud Build. O Cloud Build é um serviço que executa seus builds na infraestrutura do Google Cloud. O Cloud Build pode importar o código-fonte de uma variedade de repositórios ou espaços do Cloud Storage, executar um build de acordo com as especificações e produzir artefatos como contêineres do Docker ou arquivos Java.

  • Artifact Registry O Artifact Registry é um local único para você gerenciar imagens de contêiner e pacotes de linguagem. Ele permite que você armazene artefatos centralmente e crie dependências como parte de uma experiência integrada do Google Cloud.

  • Gemini (em inglês). O Gemini é um colaborador sempre ativo no Google Cloud que oferece assistência com tecnologia de IA generativa para uma ampla gama de usuários, incluindo desenvolvedores e cientistas de dados. Para oferecer uma experiência de assistência integrada, o Gemini está incorporado em muitos produtos do Google Cloud.

Antes de começar

  1. Verifique se o Gemini está configurado para sua conta de usuário e projeto do Google Cloud. Além disso, verifique se você instalou o plug-in do Cloud Code no ambiente de desenvolvimento integrado de sua preferência. Se você preferir usar o Editor do Cloud Shell ou o Cloud Workstations como seu ambiente de desenvolvimento integrado, o Cloud Code e o Gemini Code Assist já estão disponíveis por padrão.
  2. Ative a Google Kubernetes Engine API.

    Ative a API

  3. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  4. Crie um cluster do GKE usando o comando gcloud container clusters create:

    gcloud container clusters create test --region us-central1
    

    O comando leva alguns minutos para ser executado. O resultado será assim:

    Creating cluster test in us-central1... Cluster is being health-checked (master is healthy)...done.
    
    Created https://container.googleapis.com/v1/projects/agmsb-gke-lab/zones/us-central1/clusters/test.
    
    To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1/test?project=agmsb-gke-lab
    kubeconfig entry generated for test.
    
    NAME: test
    LOCATION: us-central1
    MASTER_VERSION: 1.27.3-gke.100
    MASTER_IP: 34.72.99.149
    MACHINE_TYPE: e2-medium
    NODE_VERSION: 1.27.3-gke.100
    NUM_NODES: 9
    STATUS: RUNNING
    
  5. Clone um repositório e use kubectl para implantar um conjunto de microsserviços que compõem um app da Web de comércio eletrônico no cluster do GKE:

    git clone https://github.com/GoogleCloudPlatform/microservices-demo && cd microservices-demo
    
    kubectl apply -f ./release/kubernetes-manifests.yaml
    
  6. Após alguns minutos, veja o endereço IP externo para acessar seu app da Web em um navegador:

    kubectl get service frontend-external | awk '{print $4}'
    

Entenda os registros de cargas de trabalho no GKE

Para o exemplo a seguir, considere que você é um engenheiro de DevOps encarregado de herdar um conjunto atual de microsserviços em execução em um cluster do GKE. Para entender o ambiente, você decide inspecionar registros de vários microsserviços.

No seu ambiente de desenvolvimento integrado integrado ao Gemini Code Assist, você pode conversar com o Gemini para receber ajuda. No painel Gemini, você insere comandos, que são perguntas ou declarações que descrevem a ajuda que você quer, e o Gemini retorna respostas.

O Gemini para Google Cloud não usa seus comandos nem as respostas dele como dados para treinar modelos. Para mais informações, acesse Como o Gemini para Google Cloud usa seus dados.

Você sabe que os microsserviços foram implantados no namespace default. Para solicitar que o Gemini ajude você a inspecionar registros, siga estas etapas:

  1. Na barra de atividades do ambiente de desenvolvimento integrado, clique em chat_spark Gemini Code Assist para abrir o painel Gemini Code Assist.

  2. No painel Gemini Code Assist, insira o seguinte comando:

    How can I write a Cloud Logging query to search for logs from Pods in
    a namespace called "default" in a Google Kubernetes Engine cluster named "test"?
    

    O Gemini retorna uma resposta parecida com:

    To write a Cloud Logging query to search for logs from Pods in a
    namespace called "default" in GKE cluster called "test", you
    can use the following query:
    
    resource.type="k8s_container"
    resource.labels.namespace_name="default"
    resource.labels.cluster_name="test"
    
    This query will search for all logs from Pods in the "default"
    namespace in the "test" GKE cluster. You can also use the
    Cloud Logging console to search for logs from Pods in a specific
    namespace and cluster. To do this, follow these steps:
    
    1. Go to the Cloud Logging console.
    2. In the Query builder pane, click
       Resource.
    3. In the Resource type list, select Kubernetes
       Container.
    4. In the Namespace name field, enter default.
    5. In the Cluster name field, enter test.
    6. Click Add.
    7. In the Query results pane, you will see a list of logs
       from Pods in the "default" namespace in the "test" GKE
       cluster.
    
  3. Para inspecionar esses registros, clique em cada um retornado da consulta. Em um registro individual, se você clicar em Explicar esta consulta, a resposta será semelhante a esta:

    Sure. Here are the bullet points that explain the log entry:
    
    • The log entry is about a GET request to the /_healthz path.
    • The request was successful and returned a 200 status code.
    • The request took 0 milliseconds to complete.
    • The request was made by the x-liveness-probe session.
    • The request was made from the frontend-755cdc7957-pv8x5 pod
      in the default namespace.
    

Criar um ambiente de build particular para imagens de contêiner

Agora que você tem uma compreensão mais profunda das cargas de trabalho da observação dos registros, decide configurar a infraestrutura e criar as futuras imagens de contêiner da sua equipe em um conjunto de workers privados. Nesta seção, você vai solicitar que o Gemini ajude a entender como executar um ambiente de build para migrar builds para seu projeto do Google Cloud.

  1. Na barra de atividades do ambiente de desenvolvimento integrado, clique em chat_spark Gemini Code Assist para abrir o painel Gemini Code Assist.

  2. No painel Gemini Code Assist, insira o seguinte comando:

    How can I build a private build environment that is not connected to
    the internet in Google Cloud? I want to be able to use Docker to
    build my container images in this environment.
    

    O Gemini retorna uma resposta parecida com:

    To build a private build environment that is not connected to the internet
    in Google Cloud, you can use a Cloud Build private pool. A private pool
    is a group of build workers that are not connected to the public internet.
    You can create a private pool in a Virtual Private Cloud (VPC) network,
    which provides an additional layer of security for your build environment.
    
    To create a private pool, you will need to:
    
    1. Create a VPC network.
    2. Create a private pool in the VPC network.
    3. Configure your build config file to use the private pool.
    
    Once you have created a private pool, you can use it to build your
    container images using Docker. To do this, you will need to:
    
    1. Create a Dockerfile.
    2. Create a build config file.
    3. Run the `gcloud builds submit` command.
    
    The `gcloud builds submit` command will build your container image
    using the private pool.
    
    Find more information for your question here:
    
    • https://cloud.google.com/build/docs/private-pools/create-manage-private-pools
    
  3. Os pools particulares do Cloud Build parecem ser um caminho viável, então você pede ajuda ao Gemini para criar seu primeiro pool particular. Insira o seguinte comando:

    Can you give me a gcloud command to create my first Cloud Build
    private worker pool?
    

    O Gemini retorna uma resposta parecida com:

    Here's how you can create your first private worker pool using the gcloud
    command:
    
    1. Define your pool configuration:
    
    First, you need to define the configuration of your private pool. This
    includes details like the pool name, region, machine type, disk size, and
    network settings. You can do this by creating a JSON file named
    workerpool.json with the following structure:
    
    {
      "name": "my-first-privatepool",
      "location": "us-central1",
      "machineType": "e2-standard-2",
      "diskSizeGb": 800,
      "network": "projects/your-project-id/global/networks/default",
      "assignExternalIP": true
    }
    
    2. Create the pool using gcloud:
    
    Once you have the configuration file ready, you can use the following gcloud
    command to create the private worker pool:
    
    gcloud builds worker-pools create \
      --project=gsm-project-382212 \
      --location=us-central1 \
      --worker-pool-id=my-first-privatepool \
      --file=workerpool.json
    
    Explanation of the command:
    
    - gcloud builds worker-pools create : This is the command to create a new worker pool.
    - --project=gsm-project-382212 : This specifies the project ID where you want to create the pool.
    - --location=us-central1 : This specifies the region where you want to create the pool.
    - --worker-pool-id=my-first-privatepool : This specifies the ID for your private pool.
    - --file=workerpool.json : This specifies the path to your configuration file.
    
    3. Verify the pool creation:
    
    After running the command, you can verify that the pool has been created by
    running the following command:
    
    gcloud builds worker-pools list
    
    Additional notes:
    
    - You can customize the configuration file to meet your specific needs. For
    example, you can change the machine type, disk size, or network settings.
    - You can also create private worker pools using the Cloud Build API or th
     Cloud Console.
    
    I hope this helps! Let me know if you have any other questions.
    
  4. A partir da resposta anterior, parece que você precisa transmitir um arquivo de configuração para substituir a variável PRIVATEPOOL_CONFIG_FILE. Portanto, você solicita que o Gemini auxilie na criação desse arquivo. Insira o seguinte comando:

    Can you show me an example of a Cloud Build private pool config file?
    

    O Gemini retorna uma resposta parecida com:

    Sure. Here is an example of a Cloud Build private pool config file:
    
    privatePoolV1Config:
       networkConfig:
         egressOption: NO_PUBLIC_EGRESS<br>
         peeredNetwork: 'projects/my-project/global/networks/my-network'
         peeredNetworkIpRange: '10.1.2.0/24'
       workerConfig:
         diskSizeGb: '100'
         machineType: 'e2-standard-4'
    
    This config file creates a private pool with the following
    properties:
    
    • The pool is not connected to the public internet.
    • The pool is connected to the `my-network` VPC network.
    • The pool's workers have a `100GB` boot disk and a
      `e2-standard-4` machine type.
    
    For more information, see the Cloud Build documentation.
    
  5. Você começa a criar seu próprio arquivo de configuração em que os workers da compilação não têm acesso à Internet pública. Navegue até o console do Google Cloud e inicie o Editor do Cloud Shell.

  6. No Cloud Shell, execute o seguinte comando, definindo egressOption como NO_PUBLIC_EGRESS:

    cat << EOF >> cloudbuild-privatepool-config.yaml
    
    privatePoolV1Config:
      networkConfig:
        egressOption: NO_PUBLIC_EGRESS
    
    EOF
    
  7. Você não tem certeza sobre as outras opções disponíveis no arquivo de configuração, então pediu ajuda ao Gemini:

    Is there a default value for any of these options?
    

    O Gemini retorna uma resposta parecida com:

    Yes, there are default values for some of the options in the private
    pool config file. For example, the default value for egressOption is
    ALLOW_PUBLIC_EGRESS, which means that the private pool will have
    access to the public internet. The default value for diskSizeGb is
    100, and the default value for machineType is e2-medium.
    
    For a full list of the default values, see the Cloud Build documentation.
    
  8. Você verá que o Gemini fornece alguns dos valores padrão já definidos no arquivo de configuração e, ao ler a documentação, decide que seu arquivo de configuração está em bom estado. No Cloud Shell, transmita o comando gcloud que o Gemini forneceu anteriormente no arquivo de configuração recém-criado:

    gcloud builds worker-pools create max-pool-test \
        --config-from-file cloudbuild-privatepool-config.yaml \
        --region us-central1
    
  9. Após a criação dos workers, você percebe que os contêineres não terão acesso a gerenciadores de pacotes públicos, como pip. Você quer confirmar seu conhecimento sobre a hospedagem de pacotes particulares. Digite o seguinte comando:

    If I create a private pool with NO_PUBLIC_EGRESS enabled, can I use
    Artifact Registry to host my packages privately and access them from
    a private pool?
    

    O Gemini retorna uma resposta parecida com:

    Yes, you can use Artifact Registry to host your packages privately
    and access them from a private pool. To do this, you will need to
    create a private pool with NO_PUBLIC_EGRESS enabled and then
    configure your Artifact Registry repository to use the private pool.
    For more information, see the Cloud Build documentation.
    
  10. Você decide prosseguir e criar um repositório do Artifact Registry. No painel Gemini, insira o seguinte comando:

    How can I use gcloud to create a private Docker repository for
    container images in Artifact Registry?
    

    O Gemini retorna uma resposta parecida com:

    To create a private Docker repository for container images in
    Artifact Registry, you can use the following command:
    
    gcloud artifacts repositories create REPOSITORY_NAME \\\
        --repository-format=docker \\\
        --location=LOCATION \\\
        --description="DESCRIPTION" \\\
        --kms-key=KMS_KEY
    
    Where:
    
    • REPOSITORY_NAME is the name of your repository.
    • LOCATION is the location of your repository.
    • DESCRIPTION is a description of your repository.
    • KMS_KEY is the name of your Cloud Key Management Service key that
      you want to use to encrypt your repository data.
    
    For more information, see the gcloud artifacts repositories create
    documentation.
    

  11. Ao ver a variável KMS_KEY, você percebe que ainda não criou uma chave do Cloud KMS. Insira o seguinte comando:

    Do I need a KMS_KEY?
    

    O Gemini retorna uma resposta parecida com:

    No, you don't need a KMS_KEY to create a private Docker repository
    for container images in Artifact Registry. However, if you want to
    encrypt your container images, you can use a Cloud Key Management Service key. For more
    information, see the Artifact Registry CMEK documentation.
    
  12. Com suas perguntas respondidas, no Cloud Shell, execute o comando gcloud fornecido pelo Gemini:

    gcloud artifacts repositories create max-docker-repo-test \
        --repository-format=docker \
        --location=us-central1 \
        --description="test container repository"
    

Com a assistência do Gemini, você criou o conjunto particular de workers e o repositório particular para criar e hospedar seus artefatos.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto do Google Cloud criado para este tutorial. A outra opção é excluir os recursos individuais.

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir