En este instructivo, se muestra cómo usar Gemini para Google Cloud, un servicio potenciado por IA de Google Cloud para navegar por los registros y configurar un entorno de compilación para un conjunto de microservicios en Google Kubernetes Engine.
Este instructivo está dirigido a ingenieros DevOps de cualquier nivel de experiencia.
Objetivos
- Indica a Gemini una consulta de registro para poder observar registros de Pods.
- Comprender cómo establecer un entorno de compilación privado con instrucciones Gemini con preguntas basadas en el contexto.
- Usa Gemini para aprender a almacenar imágenes de contenedor de forma privada y segura.
Productos de Google Cloud usados
En este instructivo, se usan los siguientes productos facturables de Google Cloud. Usa el calculadora de precios para generar una estimación de costos según el uso previsto.
Google Kubernetes Engine (GKE) GKE es un entorno de desarrollo que te permite implementar y administrar aplicaciones alojadas en contenedores a gran escala.
Cloud Logging. Los registros son una herramienta de administración con asistencia de almacenamiento, búsqueda, análisis y supervisión.
Cloud Build. Cloud Build es un servicio que ejecuta se basa en la infraestructura de Google Cloud. Cloud Build puede importar código fuente desde varios repositorios o desde Cloud Storage locales, ejecutar una compilación según tus especificaciones y producir artefactos como como contenedores de Docker o archivos de Java.
Artifact Registry. Con Artifact Registry, puedes administrar imágenes de contenedor y paquetes de lenguajes. Te permite centralmente almacenar artefactos y compilar dependencias como parte de una experiencia en Google Cloud.
Gemini. Gemini está siempre activo de Google Cloud que ofrece modelos de AA asistencia a una amplia variedad de usuarios, incluidos desarrolladores científicos. Para brindar una experiencia de asistencia integrada, Gemini está incorporado en muchos productos de Google Cloud.
Antes de comenzar
- Asegúrate de que Gemini esté configurado para tu cuenta de usuario y tu proyecto de Google Cloud. Además, asegúrate de tener el complemento de Cloud Code en tu IDE preferido. Si prefieres usar Cloud Shell Editor Cloud Workstations como tu IDE, luego Cloud Code y Gemini Code Assist ya están disponibles de forma predeterminada.
-
Enable the Google Kubernetes Engine API.
-
In the Google Cloud console, 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.
Crea un clúster de GKE con el Comando
gcloud container clusters create
:gcloud container clusters create test --region us-central1
El comando tarda unos minutos en ejecutarse. El resultado es similar al siguiente:
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
Clona un repositorio y usa
kubectl
para implementar un conjunto de microservicios que conforman una app web de comercio electrónico en el clúster de GKE:git clone https://github.com/GoogleCloudPlatform/microservices-demo && cd microservices-demo kubectl apply -f ./release/kubernetes-manifests.yaml
Después de unos minutos, obtén la dirección IP externa para acceder a tu aplicación web en un navegador:
kubectl get service frontend-external | awk '{print $4}'
Comprende los registros de las cargas de trabajo en GKE
Para el siguiente ejemplo, considera que eres un ingeniero DevOps con la herencia de un conjunto existente de microservicios que se ejecutan en GKE clúster. Para comprender el entorno, decides que quieres inspeccionar los registros de los diversos microservicios.
En tu configuración preferida IDE integrado en Gemini Code Assist, puedes chatear con Gemini para obtener ayuda. Con el panel de Gemini, puedes hacer lo siguiente: ingresas instrucciones, que son preguntas o afirmaciones que describen la ayuda que quieras, y Gemini te devolverá las respuestas.
Descubre cómo y cuándo Gemini para Google Cloud usa tus datos.
Sabes que los microservicios se implementaron en el espacio de nombres default
.
Para indicarle a Gemini que te ayude a inspeccionar los registros, sigue estos pasos:
En la barra de actividades de tu IDE, haz clic en chat_spark de Gemini Code Assist para abre el panel de Gemini Code Assist.
En el panel de Gemini Code Assist, ingresa la siguiente instrucción:
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 devuelve una respuesta similar a la que se indica a continuación:
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.
Para inspeccionar estos registros, haz clic en cada registro que devolvió la consulta. En una registro individual, si haces clic en Explicar esta consulta, la respuesta es similar. por lo siguiente:
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.
Crea un entorno de compilación privado para las imágenes de contenedor
Ahora que comprendes mejor las cargas de trabajo, de datos, decides configurar la infraestructura y crear el contenedor del futuro de tu equipo imágenes de un conjunto de trabajadores privados. En esta sección, solicitarás Gemini te ayudará a comprender cómo ejecutar una compilación para que puedas migrar tus compilaciones al proyecto de Google Cloud.
En la barra de actividades de tu IDE, haz clic en chat_spark de Gemini Code Assist para abre el panel de Gemini Code Assist.
En el panel de Gemini Code Assist, ingresa la siguiente instrucción:
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 devuelve una respuesta similar a la que se indica a continuación:
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
Los grupos privados de Cloud Build parecen una ruta viable, por lo que debes Gemini te brinda asistencia para crear tu primer grupo privado. Escribe la siguiente instrucción:
Can you give me a gcloud command to create my first Cloud Build private worker pool?
Gemini devuelve una respuesta similar a la que se indica a continuación:
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.
Según la respuesta anterior, parece que debes pasar un de configuración para reemplazar la variable PRIVATEPOOL_CONFIG_FILE, por lo que le solicitas a Gemini que haga lo siguiente: ayudarte a crear un archivo de configuración. Escribe la siguiente instrucción:
Can you show me an example of a Cloud Build private pool config file?
Gemini devuelve una respuesta similar a la que se indica a continuación:
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.
Comienzas a crear tu propio archivo de configuración en el que los trabajadores de compilación pero no tienen acceso a la Internet pública. Navega a la consola de Google Cloud y Inicia el Editor de Cloud Shell.
En Cloud Shell, ejecuta el siguiente comando, con la configuración De
egressOption
aNO_PUBLIC_EGRESS
:cat << EOF >> cloudbuild-privatepool-config.yaml privatePoolV1Config: networkConfig: egressOption: NO_PUBLIC_EGRESS EOF
No estás seguro del resto de las opciones disponibles en la configuración por lo que le solicitas asistencia a Gemini:
Is there a default value for any of these options?
Gemini devuelve una respuesta similar a la que se indica a continuación:
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.
Verás que Gemini proporciona algunos de los valores predeterminados configurados en el archivo de configuración y, luego de leer la documentación, decidir que tu archivo de configuración está en buen estado. En Cloud Shell, pasa el comando
gcloud
que Gemini te proporcionó anteriormente en el archivo de configuración que acabas de crear:gcloud builds worker-pools create max-pool-test \ --config-from-file cloudbuild-privatepool-config.yaml \ --region us-central1
Después de crear los trabajadores, te das cuenta de que los contenedores no tendrá acceso a administradores de paquetes públicos, como
pip
. Deseas confirmar tus conocimientos sobre el alojamiento de paquetes privados. Ingresa lo siguiente: mensaje: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 devuelve una respuesta similar a la que se indica a continuación:
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.
Decides seguir adelante con la creación de Artifact Registry en un repositorio de confianza. En el panel de Gemini, ingresa la siguiente instrucción:
How can I use gcloud to create a private Docker repository for container images in Artifact Registry?
Gemini devuelve una respuesta similar a la que se indica a continuación:
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.
Cuando ves la variable KMS_KEY, te das cuenta de que no creaste un de Google Cloud KMS. Escribe la siguiente instrucción:
Do I need a KMS_KEY?
Gemini devuelve una respuesta similar a la que se indica a continuación:
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.
Una vez respondidas tus preguntas, en Cloud Shell, puedes ejecutar
gcloud
. comando que Gemini te proporcionó:gcloud artifacts repositories create max-docker-repo-test \ --repository-format=docker \ --location=us-central1 \ --description="test container repository"
Con la asistencia de Gemini, creaste correctamente la versión privada conjunto de trabajadores y el repositorio privado para compilar y alojar los artefactos.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en este instructivo, puedes borrar el proyecto de Google Cloud que para este instructivo. Como alternativa, puedes borrar los recursos individuales.
- 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.
¿Qué sigue?
- Leído Descripción general de Gemini para Google Cloud.
- Más información sobre Cuotas y límites de Gemini
- Más información sobre ubicaciones para Gemini.