En este tutorial se describe cómo configurar una conexión desde una aplicación que se ejecuta en un clúster de Autopilot de Google Kubernetes Engine a una instancia de AlloyDB.
AlloyDB es un servicio de bases de datos totalmente gestionado y compatible con PostgreSQL en Google Cloud.
Google Kubernetes Engine te ayuda a desplegar, escalar y gestionar Kubernetes automáticamente.
Objetivos
- Crea una imagen de Docker para AlloyDB.
- Ejecuta una aplicación en Google Kubernetes Engine.
- Conectarse a una instancia de AlloyDB mediante el proxy de autenticación de AlloyDB y una IP interna.
Costes
En este tutorial se usan componentes facturables de Google Cloud, como los siguientes:
- AlloyDB
- Google Kubernetes Engine
- Artifact Registry
Usa la calculadora de precios para generar una estimación de costes basada en el uso previsto.
Antes de empezar
Consola
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Habilita las APIs de Cloud necesarias para crear una instancia de AlloyDB para PostgreSQL y conectarte a ella.
En el paso Confirmar proyecto, haz clic en Siguiente para confirmar el nombre del proyecto que vas a modificar.
En el paso Habilitar APIs, haz clic en Habilitar para habilitar lo siguiente:
- API de AlloyDB
- API de Artifact Registry
- API de Compute Engine
- API Cloud Resource Manager
- API de Cloud Build
- API de Container Registry
- API de Kubernetes Engine
- API Service Networking
En este tutorial, usaremos la aplicación web de recogida de votos de ejemplo llamada gke-alloydb-app
.
Abrir Cloud Shell
Cloud Shell es un entorno de shell para gestionar recursos alojados enGoogle Cloud.
Cloud Shell tiene preinstaladas las herramientas de línea de comandos Google Cloud CLI y kubectl. La CLI de gcloud proporciona la interfaz de línea de comandos principal de Google Cloud. kubectl
proporciona la interfaz de línea de comandos principal para ejecutar comandos en clústeres de Kubernetes.
Consola
Para iniciar Cloud Shell, sigue estos pasos.
Ve a la Google Cloud consola.
En la parte superior de la consola Google Cloud , haz clic en
Activar Cloud Shell.
En el cuadro de diálogo Autorizar Cloud Shell, haz clic en Autorizar.
Se abrirá una sesión de Cloud Shell en un marco de la parte inferior de la consola. Usa esta shell para ejecutar los comandos
gcloud
ykubectl
.Antes de ejecutar comandos, define tu proyecto predeterminado en la CLI de Google Cloud con el siguiente comando:
gcloud config set project PROJECT_ID
Sustituye
PROJECT_ID
por el ID de tu proyecto.
Crear un clúster de AlloyDB y su instancia principal
Tu clúster de AlloyDB consta de varios nodos en una nube privada virtual (VPC) de Google. Cuando creas un clúster, también configuras el acceso a servicios privados entre una de tus VPCs y la VPC gestionada por Google que contiene el nuevo clúster. Te recomendamos que utilices un acceso IP interno para evitar que la base de datos esté expuesta a Internet.
Para conectarte a un clúster de AlloyDB para PostgreSQL desde fuera de su VPC configurada, debes configurar la función de acceso a servicios privados en la VPC de AlloyDB y usar la red de VPC predeterminada para ejecutar consultas desde una aplicación desplegada en un clúster de GKE.
gcloud
En Cloud Shell, comprueba si el intervalo de direcciones IP (IPv4) no utilizadas ya se ha asignado al peering de servicios:
gcloud services vpc-peerings list --network=default
Si el resultado es similar al siguiente, puedes saltarte el paso siguiente:
network: projects/493573376485/global/networks/default peering: servicenetworking-googleapis-com reservedPeeringRanges: - default-ip-range service: services/servicenetworking.googleapis.com
En este resultado, el valor de
reservedPeeringRanges
esdefault-ip-range
, que puede usar como IP_RANGE_NAME para crear una conexión privada en el paso 3.(Omite este paso si usas el valor predeterminado de
reservedPeeringRanges
). Para asignar direcciones IP no utilizadas en la VPC, usa el siguiente comando:gcloud compute addresses create IP_RANGE_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --description="VPC private service access" \ --network=default
Sustituye
IP_RANGE_NAME
por el nombre que quieras dar a las direcciones IP internas disponibles de una subred de AlloyDB, comoalloydb-gke-psa-01
.Para configurar el acceso al servicio mediante el intervalo de direcciones IP asignado, ejecuta el siguiente comando:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=IP_RANGE_NAME \ --network=default
Para desplegar el clúster de AlloyDB, ejecuta el siguiente comando:
gcloud alloydb clusters create CLUSTER_ID \ --database-version=POSTGRES_VERSION \ --password=CLUSTER_PASSWORD \ --network=default \ --region=REGION \ --project=PROJECT_ID
Haz los cambios siguientes:
CLUSTER_ID
: el ID del clúster que vas a crear. Debe empezar por una letra minúscula y puede contener letras minúsculas, números y guiones, comoalloydb-cluster
.VERSION
: la versión principal de PostgreSQL con la que quieres que sean compatibles los servidores de bases de datos del clúster. Elige una de estas opciones:14
: para la compatibilidad con PostgreSQL 1415
: para la compatibilidad con PostgreSQL 1516
: para la compatibilidad con PostgreSQL 16, que es la versión predeterminada de PostgreSQL admitidaPara obtener más información sobre las restricciones que se aplican al usar PostgreSQL 16 en vista previa, consulta Compatibilidad con la vista previa de PostgreSQL 16.
CLUSTER_PASSWORD
: la contraseña que se usará para el usuariopostgres
predeterminado.PROJECT_ID
: el ID de tu Google Cloud proyecto en el que quieres colocar el clúster.REGION
: el nombre de la región en la que se crea el clúster de AlloyDB, comous-central1
.
Para desplegar la instancia principal de AlloyDB, ejecuta lo siguiente:
gcloud alloydb instances create INSTANCE_ID \ --instance-type=PRIMARY \ --cpu-count=NUM_CPU \ --region=REGION \ --cluster=CLUSTER_ID \ --project=PROJECT_ID
Haz los cambios siguientes:
INSTANCE_ID
con el nombre de la instancia de AlloyDB que quieras, comoalloydb-primary
.CLUSTER_ID
con el nombre del clúster de AlloyDB, comoalloydb-cluster
.NUM_CPU
con el número de unidades de procesamiento virtuales, como2
.PROJECT_ID
por el ID de tu Google Cloud proyecto.REGION
por el nombre de la región en la que se crea el clúster de AlloyDB, comous-central1
.
Espera a que se cree la instancia de AlloyDB. Este proceso puede tardar varios minutos.
Conectarse a la instancia principal y crear una base de datos y un usuario de AlloyDB
Consola
Si no estás en la página Información general del clúster que acabas de crear, ve a la página Clústeres de la consola Google Cloud .
Para mostrar la página Resumen del clúster, haz clic en el nombre CLUSTER_ID del clúster.
En el menú de navegación, haz clic en AlloyDB Studio.
En la página Iniciar sesión en AlloyDB Studio, haz lo siguiente:
En la lista Base de datos, selecciona
postgres
.En la lista Usuario, selecciona
postgres
.En el campo Password (Contraseña), introduce la contraseña
CLUSTER_PASSWORD
que creaste en Crear un clúster de AlloyDB y su instancia principal.Haz clic en Autenticar. En el panel Explorador se muestra una lista de los objetos de la base de datos.
En la pestaña Editor 1, haz lo siguiente:
Crea una base de datos de AlloyDB:
CREATE DATABASE DATABASE_NAME;
Sustituye
DATABASE_NAME
por el nombre que quieras, comotutorial_db
.Haz clic en Ejecutar. Espera a que aparezca el mensaje
Statement executed successfully
en el panel Resultados.Haz clic en Borrar.
Crea un usuario y una contraseña de base de datos de AlloyDB:
CREATE USER USERNAME WITH PASSWORD 'DATABASE_PASSWORD';
Haz los cambios siguientes:
USERNAME
: el nombre del usuario de AlloyDB, comotutorial_user
.DATABASE_PASSWORD
: la contraseña de tu base de datos de AlloyDB, comotutorial
.
Haz clic en Ejecutar. Espera a que aparezca el mensaje
Statement executed successfully
en el panel Resultados.
En el panel Explorador de AlloyDB Studio, haz clic en manage_accounts Cambiar de usuario o base de datos.
En la página Iniciar sesión en AlloyDB Studio, haz lo siguiente:
En la lista Base de datos, seleccione
DATABASE_NAME
, comotutorial_db
.En la lista Usuario, selecciona
postgres
.En el campo Password (Contraseña), introduce la contraseña
CLUSTER_PASSWORD
que creaste en Crear un clúster de AlloyDB y su instancia principal.Haz clic en Autenticar. En el panel Explorador se muestra una lista de los objetos de la base de datos.
En la pestaña Editor 1, haz lo siguiente:
Concede todos los permisos al usuario de la base de datos de AlloyDB:
GRANT ALL PRIVILEGES ON DATABASE "DATABASE_NAME" to "USERNAME";
Haz clic en Ejecutar. Espera a que aparezca el mensaje
Statement executed successfully
en el panel Resultados.Haz clic en Borrar.
Concede permisos al usuario de la base de datos de AlloyDB en el esquema público:
GRANT CREATE ON SCHEMA public TO "USERNAME";
Haz clic en Ejecutar. Espera a que aparezca el mensaje
Statement executed successfully
en el panel Resultados.
Anota el nombre de la base de datos, el nombre de usuario y la contraseña. Esta información se usa en Crear un secreto de Kubernetes.
Crear un clúster de Autopilot de GKE
Un clúster contiene al menos una máquina de plano de control del clúster y varias máquinas de trabajador llamadas nodos. Los nodos son instancias de máquina virtual de Compute Engine que ejecutan los procesos de Kubernetes necesarios para formar parte del clúster. Despliega aplicaciones en clústeres y las aplicaciones se ejecutan en los nodos.
Consola
En la Google Cloud consola, ve a la página Clústeres de Kubernetes.
Haz clic en Crear.
Especifica
GKE_CLUSTER_ID
para tu clúster de Autopilot en el campo Nombre de la página Información básica del clúster, comoap-cluster
.En el campo Región, selecciona
REGION
, comous-central1
.Haz clic en Crear.
Espera a que se cree el clúster de GKE. Este proceso puede tardar varios minutos.
gcloud
Crea un clúster de Autopilot:
gcloud container clusters create-auto GKE_CLUSTER_ID \
--location=REGION
Haz los cambios siguientes:
GKE_CLUSTER_ID
: el nombre del clúster de Autopilot, comoap-cluster
.REGION
: el nombre de la región en la que se ha implementado el clúster de GKE, comous-central1
.
Espera a que se cree el clúster de GKE. Este proceso puede tardar varios minutos.
Conectarse a AlloyDB mediante el proxy de autenticación de AlloyDB
Te recomendamos que uses proxy de autenticación de AlloyDB para conectarte a AlloyDB. AlloyDB Auth Proxy proporciona un cifrado y una autenticación sólidos mediante Gestión de Identidades y Accesos (IAM), lo que puede ayudar a proteger tu base de datos.
Cuando te conectas mediante el proxy de autenticación de AlloyDB, se añade a tu pod mediante el patrón de contenedor sidecar
. El contenedor del proxy de autenticación de AlloyDB está en el mismo pod que tu aplicación, lo que permite que la aplicación se conecte al proxy de autenticación de AlloyDB mediante localhost
, lo que aumenta la seguridad y el rendimiento.
Crear y asignar roles a cuentas de servicio de Google
En Google Cloud, las aplicaciones usan cuentas de servicio para hacer llamadas a la API autorizadas autenticándose como la propia cuenta de servicio. Cuando una aplicación se autentica como una cuenta de servicio, tiene acceso a todos los recursos a los que la cuenta de servicio tiene permiso para acceder.
Para ejecutar AlloyDB Auth Proxy en Google Kubernetes Engine, crea una cuenta de servicio de Google que represente a tu aplicación. Te recomendamos que crees una cuenta de servicio única para cada aplicación, en lugar de usar la misma cuenta de servicio en todas partes. Este modelo es más seguro porque te permite limitar los permisos por aplicación.
Consola
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
En la página Permisos del proyecto "
PROJECT_ID
", busca la fila que contiene la cuenta de servicio de computación predeterminadaPROJECT_NUMBER-compute@developer.gserviceaccount.com
y haz clic en edit Editar principal en esa fila.Para obtener el
PROJECT_NUMBER
, que es un identificador único generado automáticamente para tu proyecto, sigue estos pasos:Ve a la página Panel de control de la Google Cloud consola.
En la parte superior de la página, haz clic en la lista desplegable Seleccionar de. En la ventana Seleccionar de que aparece, selecciona tu proyecto.
El
PROJECT_NUMBER
se muestra en la tarjeta Información del proyecto del panel de control del proyecto.Haz clic en
Añadir otro rol.Para asignar el rol
roles/artifactregistry.reader
, haz clic en Seleccionar un rol y eligeArtifact Registry
en Por producto o servicio, yArtifact Registry Reader
en Roles.Haz clic en Guardar. Se asigna el rol a la cuenta principal.
Para crear una cuenta de servicio para la aplicación de ejemplo de GKE, ve a la página Cuentas de servicio. Ir a Cuentas de servicio
Selecciona el proyecto.
En la página Cuentas de servicio del proyecto "
PROJECT_ID
", haz clic en Crear cuenta de servicio.En la sección Detalles de la cuenta de servicio de la página Crear cuenta de servicio, introduce
GSA_NAME
en el campo Nombre de cuenta de servicio, comogke-alloydb-gsa
.Haz clic en Crear y continuar.
Aparecerá la sección Conceder a esta cuenta de servicio acceso al proyecto (opcional) de la página Crear cuenta de servicio.
Para asignar el rol
roles/alloydb.client
, sigue estos pasos:- Haz clic en Seleccionar un rol.
- Elige
Cloud AlloyDB
en Por producto o servicio. - Elige
Cloud AlloyDB Client
en Roles.
Haz clic en
Añadir otro rol.Para asignar el rol
roles/serviceusage.serviceUsageConsumer
, haz clic en Seleccionar un rol y eligeService Usage
en Por producto o servicio, yService Usage Consumer
en Roles.Haz clic en Listo. Se asignan roles a la cuenta de servicio de Google.
gcloud
Para conceder los permisos necesarios a la cuenta de servicio predeterminada de Google para que Compute Engine pueda leer de Artifact Registry, ejecuta lo siguiente:
PROGECT_NUM=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:$PROGECT_NUM-compute@developer.gserviceaccount.com" --role="roles/artifactregistry.reader"
Para crear una cuenta de servicio de Google para tu aplicación, crea una cuenta de servicio de IAM:
gcloud iam service-accounts create GSA_NAME \ --display-name="gke-tutorial-service-account"
Sustituye
GSA_NAME
por el nombre de tu nueva cuenta de servicio de IAM, comogke-alloydb-gsa
.Para conceder los roles
alloydb.client
yserviceusage.serviceUsageConsumer
a la cuenta de servicio de Google de tu aplicación, usa los siguientes comandos:gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com --role="roles/alloydb.client" gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com --role="roles/serviceusage.serviceUsageConsumer"
Configurar Workload Identity Federation para GKE en la aplicación de ejemplo
Debes configurar GKE para que proporcione la cuenta de servicio al proxy de autenticación de AlloyDB mediante la función Workload Identity Federation for GKE. Este método te permite vincular una cuenta de servicio de Kubernetes a una cuenta de servicio de Google. La cuenta de servicio de Google pasa a estar accesible para las aplicaciones que usan la cuenta de servicio de Kubernetes correspondiente.
Una cuenta de servicio de Google es una identidad de gestión de identidades y accesos que representa tu aplicación en Google Cloud. Una cuenta de servicio de Kubernetes es una identidad que representa tu aplicación en un clúster de Google Kubernetes Engine.
Workload Identity Federation para GKE vincula una cuenta de servicio de Kubernetes a una cuenta de servicio de Google. Esta vinculación hace que cualquier despliegue con esa cuenta de servicio de Kubernetes se autentique como la cuenta de servicio de Google en sus interacciones con Google Cloud.
gcloud
En la Google Cloud consola, abre Cloud Shell.
En Cloud Shell, obtén las credenciales de tu clúster:
gcloud container clusters get-credentials GKE_CLUSTER_ID --region REGION --project PROJECT_ID
Este comando configura
kubectl
para que use el clúster de GKE que has creado.En el editor que elijas, sigue estos pasos:
Abre
service-account.yaml
con nano, por ejemplo:nano service-account.yaml
En el editor, pega el siguiente contenido:
apiVersion: v1 kind: ServiceAccount metadata: name: KSA_NAME
Sustituye
KSA_NAME
por el nombre de la cuenta de servicio, comoksa-alloydb
.Pulsa Control+O, INTRO para guardar los cambios y Control+X para salir del editor.
Crea una cuenta de servicio de Kubernetes para tu aplicación de ejemplo:
kubectl apply -f service-account.yaml
Concede permisos a tu cuenta de servicio de Kubernetes para suplantar la cuenta de servicio de Google creando un enlace de política de gestión de identidades y accesos entre las dos cuentas de servicio:
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:PROJECT_ID.svc.id.goog[default/KSA_NAME]" \ GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
Añade la anotación
iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID
a la cuenta de servicio de Kubernetes con la dirección de correo de la cuenta de servicio de Google:kubectl annotate serviceaccount \ KSA_NAME \ iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
Rellenar Artifact Registry con una imagen de la aplicación de muestra
gcloud
En Cloud Shell, usa el siguiente comando para clonar el repositorio con el código de la aplicación
gke-alloydb-app
de ejemplo de GitHub:git clone https://github.com/GoogleCloudPlatform/alloydb-auth-proxy && cd alloydb-auth-proxy/examples/go
Crea un repositorio en Artifact Registry para las imágenes de Docker:
gcloud artifacts repositories create REPOSITORY_ID --location REGION --repository-format=docker --project PROJECT_ID
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu proyecto.REPOSITORY_ID
: el nombre de tu repositorio, comogke-alloydb-sample-app
.
En el cuadro de diálogo Autorizar Cloud Shell, haz clic en Autorizar. Esta petición no aparece si ya has completado este paso.
Para compilar un contenedor Docker y publicarlo en Artifact Registry, usa el siguiente comando:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_ID/SAMPLE_APPLICATION --project PROJECT_ID
Haz los cambios siguientes:
PROJECT_ID
: el ID de tu proyecto.REPOSITORY_ID
: el nombre de tu repositorio, comogke-alloydb-sample-app
.SAMPLE_APPLICATION
: el nombre de tu aplicación web de muestra, comogke-alloydb-app
.
Crear un secreto de Kubernetes
Crea secretos de Kubernetes para la base de datos, el usuario y la contraseña del usuario que utilizará la aplicación de ejemplo. Los valores de cada secreto se basan en los valores especificados en el paso Conéctate a tu instancia principal y crea una base de datos y un usuario de AlloyDB de este tutorial. Para obtener más información, consulta Secretos.
gcloud
Usa un SECRET
de Kubernetes, como gke-alloydb-secret
, para almacenar la información de conexión:
kubectl create secret generic SECRET \
--from-literal=database=DATABASE_NAME \
--from-literal=username=USERNAME \
--from-literal=password=DATABASE_PASSWORD
Desplegar y ejecutar el proxy de AlloyDB con un patrón sidecar
Te recomendamos que ejecutes AlloyDB Proxy en un patrón sidecar
como contenedor adicional que comparta un pod con tu aplicación por los siguientes motivos:
- Evita que tu tráfico SQL se exponga de forma local. AlloyDB Proxy cifra las conexiones salientes, pero debes limitar la exposición de las conexiones entrantes.
- Evita un único punto de fallo. El acceso de cada aplicación a tu base de datos es independiente del resto, lo que la hace más resistente.
- Limita el acceso a AlloyDB Proxy, lo que te permite usar permisos de IAM por aplicación en lugar de exponer la base de datos a todo el clúster.
- Te permite acotar las solicitudes de recursos con mayor precisión. Como AlloyDB Proxy consume recursos de forma lineal en función del uso, este patrón te permite acotar y solicitar recursos de forma más precisa para que se adapten a tus aplicaciones a medida que se escalan.
- Te permite configurar tu aplicación para que se conecte mediante
127.0.0.1
en el DB_PORT que hayas especificado en la sección de comandos.
Una vez que hayas creado un clúster de GKE y hayas compilado una imagen de contenedor para tu aplicación, despliega la aplicación en contenedores en el clúster de GKE.
gcloud
En este tutorial, desplegarás la aplicación web de ejemplo de recogida de votos, gke-alloydb-app
, que usa AlloyDB como almacén de datos.
Obtén la cadena de conexión de la instancia principal de AlloyDB a la que quieres que se conecte el proxy de AlloyDB:INSTANCE_URI
gcloud alloydb instances describe INSTANCE_ID \ --cluster=CLUSTER_ID \ --region=REGION \ --format="value(name)"
Haz los cambios siguientes:
INSTANCE_ID
: nombre de la instancia, comoalloydb-primary
.CLUSTER_ID
: nombre del clúster, comoalloydb-cluster
.
La salida contiene el INSTANCE_URI que especifiques en el archivo de definición
proxy_sidecar_deployment.yaml
del paso 2b de esta sección.En el editor que elijas (por ejemplo, nano), sigue estos pasos:
Abre
proxy_sidecar_deployment.yaml
con el editor que prefieras; por ejemplo, nano:nano proxy_sidecar_deployment.yaml
En el editor, pega el siguiente contenido:
apiVersion: apps/v1 kind: Deployment metadata: name: gke-alloydb spec: selector: matchLabels: app: SAMPLE_APPLICATION template: metadata: labels: app: SAMPLE_APPLICATION spec: serviceAccountName: KSA_NAME containers: - name: SAMPLE_APPLICATION # Replace <PROJECT_ID> and <REGION> with your project ID and region. image: REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_ID/SAMPLE_APPLICATION:latest imagePullPolicy: Always # This app listens on port 8080 for web traffic by default. ports: - containerPort: 8080 env: - name: PORT value: "8080" # This project uses environment variables to determine # how you would like to run your application # To use the Go connector (recommended) - use INSTANCE NAME # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1) - name: INSTANCE_HOST value: "127.0.0.1" - name: DB_PORT value: "5432" # To use Automatic IAM Authentication (recommended) # use DB_IAM_USER instead of DB_USER # you may also remove the DB_PASS environment variable - name: DB_USER valueFrom: secretKeyRef: name: SECRET key: username - name: DB_PASS valueFrom: secretKeyRef: name: SECRET key: password - name: DB_NAME valueFrom: secretKeyRef: name: SECRET key: database # If you are using the Go connector (recommended), you can # remove alloydb-proxy (everything below this line) - name: alloydb-proxy # This uses the latest version of the AlloyDB Auth proxy # It is recommended to use a specific version for production environments. # See: https://github.com/GoogleCloudPlatform/alloydb-auth-proxy image: gcr.io/alloydb-connectors/alloydb-auth-proxy:1.10.1 command: - "/alloydb-auth-proxy" #AlloyDB instance name as parameter for the AlloyDB proxy # Use <INSTANCE_URI> - "INSTANCE_URI" securityContext: # The default AlloyDB Auth proxy image runs as the # "nonroot" user and group (uid: 65532) by default. runAsNonRoot: true resources: requests: # The proxy's memory use scales linearly with the number of active # connections. Fewer open connections will use less memory. Adjust # this value based on your application's requirements. memory: "2Gi" # The proxy's CPU use scales linearly with the amount of IO between # the database and the application. Adjust this value based on your # application's requirements. cpu: "1"
Sustituye
INSTANCE_URI
por la ruta a tu instancia principal de AlloyDB del paso 1, comoprojects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances/INSTANCE_ID
.Pulsa Control+O, INTRO para guardar los cambios y Control+X para salir del editor.
Para desplegar la aplicación
gke-alloydb-app
, aplica el archivo de definiciónproxy_sidecar_deployment.yaml
que has creado en el paso anterior:kubectl apply -f proxy_sidecar_deployment.yaml
Verifica que el estado de ambos contenedores del pod sea
running
:kubectl get pods
Ejemplo de salida:
NAME READY STATUS RESTARTS AGE gke-alloydb-8d59bb4cc-62xgh 2/2 Running 0 2m53s
Para conectarte a la aplicación
gke-alloydb-app
de ejemplo, usa un servicio, como un balanceador de carga HTTP externo. En el editor que elijas, sigue estos pasos:Abre
service.yaml
con nano, por ejemplo:nano service.yaml
En el editor nano, pega el siguiente contenido:
apiVersion: v1 kind: Service metadata: name: SAMPLE_APPLICATION spec: type: LoadBalancer selector: app: SAMPLE_APPLICATION ports: - port: 80 targetPort: 8080
Sustituye
SAMPLE_APPLICATION
por el nombre de tu aplicación web de ejemplo, comogke-alloydb-app
.Pulsa Control+O, INTRO para guardar los cambios y Control+X para salir del editor.
Para desplegar la aplicación de servicio
gke-alloydb-app
, aplica el archivoservice.yaml
:kubectl apply -f service.yaml
Para obtener los detalles del servicio, incluida la dirección IP externa del servicio, utiliza el siguiente comando:
kubectl get service
Ejemplo de salida:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE gke-alloydb-app LoadBalancer 34.118.229.246 35.188.16.172 80:32712/TCP 45s kubernetes ClusterIP 34.118.224.1 <none> 443/TCP 85m
Usa el valor de la IP externa del paso anterior para acceder a la aplicación de ejemplo en la siguiente URL:
http://EXTERNAL-IP
Ejemplos de archivos de configuración
proxy_sidecar_deployment.yaml
service.yaml
service-account.yaml
Limpieza
Para evitar que se apliquen cargos en tu cuenta Google Cloud por los recursos utilizados en este tutorial, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.
Eliminar el proyecto
La forma más fácil de evitar que te cobren es eliminar el proyecto que has creado para el tutorial.
Para ello, sigue las instrucciones que aparecen a continuación:
En la Google Cloud consola, ve a la página Gestionar recursos.
En la lista de proyectos, selecciona el proyecto que quieras eliminar y haz clic en Eliminar.
En el cuadro de diálogo, escribe tu
PROJECT_ID
y, a continuación, haz clic en Cerrar para eliminar el proyecto.
Siguientes pasos
- Acerca del proxy de autenticación de AlloyDB
- Resumen de las IPs internas
- Documentación de Google Kubernetes Engine