1. Descripción general
En este lab, implementarás un microservicio de dos niveles con un Pod que se ejecutará en GKE Autopilot y lo conectarás a una instancia privada de la base de datos de AlloyDB. La aplicación de atención al cliente es parte del sistema Cymbal Eats y proporciona funcionalidad para administrar usuarios registrados. La aplicación de Atención al cliente es un microservicio basado en Java que usa el framework Quarkus.
AlloyDB admite la conectividad de red a través de direcciones IP internas privadas configuradas para el acceso a servicios privados.
El acceso privado a servicios se implementa como una conexión de intercambio de tráfico de VPC entre tu red de VPC y la red de VPC subyacente de Google Cloud en la que residen tus recursos de AlloyDB (instancias y clústeres). La conexión privada permite que los recursos de tu red de VPC se comuniquen con los recursos de AlloyDB a los que acceden solo a través de direcciones IP internas. Los recursos de tu red de VPC no necesitan acceso a Internet ni direcciones IP externas para llegar a los recursos de AlloyDB.
¿Qué es GKE Autopilot?
GKE Autopilot es un modo de operación en GKE en el que Google administra la configuración de tu clúster, incluidos los nodos, el escalamiento, la seguridad y otros parámetros preestablecidos. Los clústeres de Autopilot están optimizados para ejecutar la mayoría de las cargas de trabajo de producción y aprovisionar recursos de procesamiento en función de los manifiestos de Kubernetes. La configuración optimizada sigue las prácticas recomendadas de GKE para la configuración, escalabilidad y seguridad de los clústeres y las cargas de trabajo. Para obtener una lista de los parámetros de configuración integrados, consulta la tabla de comparación de Autopilot y Standard.
¿Qué es AlloyDB?
Un servicio de base de datos completamente administrado y compatible con PostgreSQL para tus cargas de trabajo de bases de datos empresariales más exigentes. AlloyDB combina lo mejor de Google con uno de los motores de base de datos de código abierto más populares, PostgreSQL, para ofrecer un rendimiento, escalamiento y disponibilidad superiores.
Qué aprenderás
En este lab, aprenderás a realizar las siguientes tareas:
- Crear instancia privada de base de datos de AlloyDB
- Implementa una aplicación en el clúster de GKE Autopilot que se conecte a una instancia de AlloyDB
Requisitos previos
- Para este lab, se da por sentado que el usuario tiene conocimientos previos sobre los entornos de la consola de Cloud y Cloud Shell.
- La experiencia anterior de GKE y AlloyDB es útil, pero no obligatoria.
2. Configuración y requisitos
Configuración del proyecto de Cloud
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.
- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla en cualquier momento.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. por lo general, no te importa qué es. En la mayoría de los codelabs, deberás hacer referencia al ID del proyecto (por lo general, se identifica como
PROJECT_ID
). Si no te gusta el ID generado, puedes generar otro aleatorio. También puedes probar el tuyo propio y ver si está disponible. No se puede cambiar después de este paso y se mantendrá mientras dure el proyecto. - Para tu información, hay un tercer valor, un número de proyecto que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Para cerrar recursos y evitar que se te facture más allá de este instructivo, puedes borrar los recursos que creaste o borrar todo el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.
Configuración del entorno
Para activar Cloud Shell, haz clic en el ícono que se encuentra a la derecha de la barra de búsqueda.
Clona el repositorio, navega al directorio, copia y pega el siguiente comando en la terminal y presiona Intro:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Para implementar las dependencias necesarias, ejecuta gke-lab-setup.sh
.
Se crearán los siguientes recursos:
- Instancia y clúster de AlloyDB
- Artifact Registry, a fin de almacenar imágenes de contenedor para el trabajo de Cloud Run y la atención al cliente
- Conector de acceso a VPC para que los trabajos de Cloud Run se comuniquen con la base de datos de AlloyDB
- Trabajo de Cloud Run para crear una base de datos de AlloyDB
- Clúster de GKE Autopilot
./gke-lab-setup.sh
Si se te solicita que autorices, haz clic en “Autorizar”. para continuar.
El proceso de configuración tardará unos 10 minutos. Revisa la secuencia de comandos de configuración que se usa para crear las dependencias necesarias.
gke-lab-setup.sh
Espera hasta que la secuencia de comandos finalice y veas el siguiente resultado antes de ejecutar los próximos pasos.
Job [db-job] has successfully been created. To execute this job, use: gcloud beta run jobs execute db-job OK Creating execution... Done. OK Provisioning resources... Done. Execution [db-job-k94ps] has successfully started running.
3. Implementación de aplicaciones
Revisa el clúster de AlloyDB
Ejecuta el siguiente comando para revisar la instancia de AlloyDB creada:
gcloud alloydb instances describe customer-instance --cluster=customer-cluster --region=us-central1
Resultado de muestra:
createTime: '2023-01-06T14:40:07.213288293Z' instanceType: PRIMARY ipAddress: 10.77.176.2 machineConfig: cpuCount: 2 name: projects/cymbal-eats-20056-16671/locations/us-central1/clusters/customer-cluster/instances/customer-instance nodes: - zoneId: us-central1-f queryInsightsConfig: queryPlansPerMinute: 5 queryStringLength: 1024 recordApplicationTags: true recordClientAddress: true reconciling: false state: READY uid: df90d57d-88df-49be-a626-6dfec0513e64 updateTime: '2023-01-06T14:49:40.907977843Z' writableNode: zoneId: us-central1-b
Explora las funciones disponibles(Estadísticas de consultas, Supervisión) en la consola.
Revisa el clúster de GKE Autopilot
Configura las variables de entorno del proyecto:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
Como parte de la configuración inicial, el clúster se creó con el siguiente comando (no es necesario que ejecutes este comando):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Ejecuta el comando para ver el clúster de GKE Autopilot creado:
gcloud container clusters list
Resultado de muestra:
Ejecuta el comando para almacenar las credenciales del clúster:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Implementa una aplicación
A continuación, implementarás una aplicación de atención al cliente.
La aplicación de Atención al cliente es un microservicio basado en Java que usa el framework Quarkus.
Navega a la carpeta cymbal-eats/customer-service
y ejecuta los comandos para compilar y subir una imagen de contenedor:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Abre Cloud Build en la consola para revisar los detalles de la compilación más reciente.
Configura la siguiente variable de entorno con el valor de la dirección IP privada de AlloyDB:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
Ejecuta los siguientes comandos para crear un objeto Secret de Kubernetes y así almacenar las credenciales de la base de datos que la aplicación de atención al cliente usará para conectarse a la base de datos:
DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123
kubectl create secret generic gke-alloydb-secrets \
--from-literal=database=$DB_NAME \
--from-literal=username=$DB_USER \
--from-literal=password=$DB_PASSWORD \
--from-literal=db_host=$DB_HOST
Ejecuta el comando para reemplazar CUSTOMER_SERVICE_IMAGE en el archivo deployment.yaml:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Ejecuta el comando para implementar la aplicación:
kubectl apply -f customer-service-deployment.yaml
La aplicación tardará unos minutos en pasar al estado RUNNING.
Ejecuta el comando para crear una IP externa que se usará en los pasos de prueba:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Ejecuta el comando para verificar los recursos creados:
kubectl get all
Resultado de muestra:
4. Aplicación de prueba
Ejecuta los siguientes comandos para guardar la URL de atención al cliente.
kubectl get svc
Configura la siguiente variable de entorno con el valor de IP externa del resultado anterior.
CUSTOMER_SERVICE_URL=$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Ejecuta los siguientes comandos para crear un registro de cliente nuevo:
curl -X POST $CUSTOMER_SERVICE_URL/customer \
-H 'Content-Type: application/json' \
-d '{"id": "id1","rewardPoints": 3,"address": "1845 Denise St","city": "Mountain View","createDateTime": "2022-11-11T15:56:45.487566","email": "ajensen9090+eats@gmail.com","name": "Angela Jensen","state": "CA","updateDateTime": "2022-11-11T15:56:45.866125","zip": "94043"}'
Ejecuta el comando anterior varias veces para generar mensajes de registro que verás en el Explorador de registros más tarde.
Revisar registros de clientes
Ejecuta los siguientes comandos para ver el registro de cliente creado.
curl $CUSTOMER_SERVICE_URL/customer | jq
Resultado de muestra:
[ { "address": "1845 Denise St", "city": "Mountain View", "createDateTime": "2023-01-06T16:13:19.118744", "email": "ajensen9090+eats@gmail.com", "id": "id1", "name": "Angela Jensen", "rewardPoints": 3, "state": "CA", "updateDateTime": "2023-01-06T16:13:19.118896", "zip": "94043" } ]
Revisa las cargas de trabajo y los servicios de GKE
Abre Kubernetes Engine en la consola de Cloud y revisa las cargas de trabajo y servicios que se crearon.
Registros de la aplicación
Abre el Explorador de registros y busca registros que contengan “El cliente ya existe”. texto.
5. ¡Felicitaciones!
¡Felicitaciones! Completaste el codelab.
Temas abordados:
- Cómo crear una instancia privada de la base de datos de AlloyDB
- Cómo implementar una aplicación en un clúster de GKE Autopilot que se conecte a una instancia de AlloyDB
¿Qué sigue?
Explora otros codelabs de Cymbal Eats:
- Activa Cloud Workflows con Eventarc
- Activa el procesamiento de eventos desde Cloud Storage
- Conéctate a Cloud SQL privado desde Cloud Run
- Conéctate a bases de datos completamente administradas desde Cloud Run
- Protección de aplicaciones sin servidores con Identity-Aware Proxy (IAP)
- Activa trabajos de Cloud Run con Cloud Scheduler
- Implementa de forma segura en Cloud Run
- Protege el tráfico de entrada de Cloud Run
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.