Créer une compilation privée avec Gemini pour l'assistance Google Cloud

Ce tutoriel vous montre comment utiliser Gemini pour Google Cloud, un service dans Google Cloud, pour parcourir les journaux et configurer un environnement de compilation pour un ensemble de microservices dans Google Kubernetes Engine.

Ce tutoriel s'adresse aux ingénieurs DevOps, quel que soit leur niveau d'expérience.

Objectifs

  • Demandez à Gemini de saisir une requête de journalisation afin de pouvoir observer les journaux des pods.
  • Découvrez comment établir un environnement de compilation privé à l'aide de requêtes Gemini avec des questions contextuelles.
  • Utiliser Gemini pour apprendre à stocker des images de conteneurs de manière privée et sécurisée.

Produits Google Cloud utilisés

Ce tutoriel utilise les produits Google Cloud facturables suivants. Utilisez le simulateur de coût pour générer une estimation des coûts basée sur votre utilisation prévue.

  • Google Kubernetes Engine (GKE) : GKE est un service Kubernetes géré qui permet de déployer et de gérer des applications conteneurisées à grande échelle.

  • Cloud Logging : Logging est un outil de gestion des journaux en temps réel avec stockage, recherche, analyse et surveillance.

  • Cloud Build. Cloud Build est un service qui exécute vos charges de travail s'appuient sur l'infrastructure Google Cloud. Cloud Build peut Importer du code source depuis différents dépôts ou depuis Cloud Storage d'exécuter une compilation selon vos spécifications et de produire des artefacts comme les conteneurs Docker ou les archives Java.

  • Artifact Registry Artifact Registry est un outil centralisé qui vous permet gérer les images de conteneurs et les packages de langages. Il vous permet de centraliser de stocker des artefacts et de créer des dépendances Google Cloud.

  • Gemini. Gemini est activé en permanence un collaborateur dans Google Cloud qui propose des solutions une assistance pour un large éventail d'utilisateurs, y compris pour les développeurs et scientifiques. Pour fournir une expérience d'assistance intégrée, Gemini est intégré dans de nombreux produits Google Cloud.

Avant de commencer

  1. Assurez-vous que Gemini est configuré pour votre compte utilisateur et votre projet Google Cloud. Assurez-vous également d'avoir installé le plug-in Cloud Code dans l'IDE de votre choix ; Si vous préférez utiliser l'éditeur Cloud Shell ou Cloud Workstations comme IDE, puis Cloud Code et Gemini Code Assist sont déjà disponibles par défaut.
  2. Enable the Google Kubernetes Engine API.

    Enable the API

  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  4. Créez un cluster GKE à l'aide de la classe Commande gcloud container clusters create:

    gcloud container clusters create test --region us-central1
    

    L'exécution de la commande prend quelques minutes. Le résultat ressemble à ce qui suit :

    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. Cloner un dépôt et utiliser kubectl pour déployer un ensemble de microservices qui constituent une application Web d'e-commerce vers le cluster GKE:

    git clone https://github.com/GoogleCloudPlatform/microservices-demo && cd microservices-demo
    
    kubectl apply -f ./release/kubernetes-manifests.yaml
    
  6. Après quelques minutes, récupérez l'adresse IP externe pour accéder à votre application Web. dans un navigateur:

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

Comprendre les journaux pour les charges de travail dans GKE

Pour l'exemple suivant, supposons que vous êtes un ingénieur DevOps chargé avec l'héritage d'un ensemble existant de microservices exécutés dans GKE cluster. Pour comprendre l'environnement, vous décidez d'inspecter les journaux à partir des différents microservices.

Dans votre IDE intégré à Gemini Code Assist vous pouvez discuter avec Gemini pour obtenir de l'aide. Dans le volet Gemini, vous saisissez des invites, c'est-à-dire des questions ou déclarations décrivant l'aide apportée comme vous le souhaitez, et Gemini renvoie des réponses.

Découvrez comment et quand Gemini pour Google Cloud utilise vos données.

Vous savez que les microservices ont été déployés sur l'espace de noms default. Pour demander à Gemini de vous aider à inspecter les journaux, procédez comme suit:

  1. Dans la barre d'activité de votre IDE, cliquez sur chat_spark Gemini Code Assist pour ouvrez le volet Gemini Code Assist.

  2. Dans le volet Gemini Code Assist, saisissez la requête suivante:

    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"?
    

    Gemini devrait proposer une réponse semblable à celle-ci :

    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. Pour inspecter ces journaux, cliquez sur chaque journal renvoyé par la requête. Sur un journal individuel, si vous cliquez sur Expliquer cette requête, la réponse est similaire comme suit:

    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.
    

Créer un environnement de compilation privé pour les images de conteneurs

Maintenant que vous avez une meilleure compréhension des charges de travail grâce à l'observation les journaux, vous décidez de configurer l'infrastructure et de créer le futur conteneur de votre équipe sur un ensemble de nœuds de calcul privés. Dans cette section, vous demandez Gemini pour vous aider à comprendre comment exécuter un build pour pouvoir migrer vos compilations vers votre projet Google Cloud.

  1. Dans la barre d'activité de votre IDE, cliquez sur chat_spark Gemini Code Assist pour ouvrez le volet Gemini Code Assist.

  2. Dans le volet Gemini Code Assist, saisissez la requête suivante:

    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.
    

    Gemini devrait proposer une réponse semblable à celle-ci :

    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. Les pools privés Cloud Build semblent être une voie viable. Vous vous demandez donc Gemini pour vous aider à créer votre premier pool privé. Saisissez la requête suivante :

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

    Gemini devrait proposer une réponse semblable à celle-ci :

    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. D'après la réponse précédente, il semble que vous deviez transmettre une de configuration Terraform pour remplacer la variable PRIVATEPOOL_CONFIG_FILE, et vous demandez donc à Gemini de à créer un fichier de configuration. Saisissez la requête suivante :

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

    Gemini devrait proposer une réponse semblable à celle-ci :

    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. Vous commencez à créer votre propre fichier de configuration dans lequel les nœuds de calcul de compilation n'ont pas accès à l'Internet public. Accéder à la console Google Cloud et Lancez l'éditeur Cloud Shell.

  6. Dans Cloud Shell, exécutez la commande suivante : egressOption par NO_PUBLIC_EGRESS:

    cat << EOF >> cloudbuild-privatepool-config.yaml
    
    privatePoolV1Config:
      networkConfig:
        egressOption: NO_PUBLIC_EGRESS
    
    EOF
    
  7. Vous n'êtes pas sûr des autres options disponibles dans la configuration Vous demandez donc de l'aide à Gemini:

    Is there a default value for any of these options?
    

    Gemini devrait proposer une réponse semblable à celle-ci :

    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. Vous voyez que Gemini fournit certaines des valeurs par défaut déjà défini dans le fichier de configuration. Après avoir lu la documentation, décider que votre fichier de configuration est correct tel quel. Dans Cloud Shell, transmettez la commande gcloud que Gemini vous a fournie précédemment le fichier de configuration que vous venez de créer:

    gcloud builds worker-pools create max-pool-test \
        --config-from-file cloudbuild-privatepool-config.yaml \
        --region us-central1
    
  9. Une fois vos nœuds de calcul créés, vous vous apercevez que les conteneurs n'aura pas accès aux gestionnaires de packages publics, tels que pip. Vous souhaitez confirmer que vous comprenez l’hébergement de packages privés. Saisissez les informations suivantes : requête:

    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?
    

    Gemini devrait proposer une réponse semblable à celle-ci :

    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. Vous décidez de créer un dépôt Artifact Registry un dépôt de clés. Dans le volet Gemini, saisissez la requête suivante:

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

    Gemini devrait proposer une réponse semblable à celle-ci :

    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. En voyant la variable KMS_KEY, vous vous rendez compte que vous n'avez pas créé de clé Cloud KMS. Saisissez la requête suivante :

    Do I need a KMS_KEY?
    

    Gemini devrait proposer une réponse semblable à celle-ci :

    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. Une fois que vous avez obtenu les réponses à vos questions, vous pouvez exécuter la commande gcloud dans Cloud Shell. que Gemini vous a fournie:

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

Avec l'aide de Gemini, vous avez créé un ensemble de nœuds de calcul et le dépôt privé pour créer et héberger vos artefacts.

Effectuer un nettoyage

Pour éviter que les ressources soient facturées sur votre compte Google Cloud, utilisé dans ce tutoriel, vous pouvez supprimer le projet Google Cloud créé pour ce tutoriel. Vous pouvez également supprimer les différentes ressources.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Étape suivante