Uso de Memorystore con Cloud Run

El servicio Memorystore de Google proporciona un entorno Redis totalmente administrado. Cloud Run proporciona un entorno de alojamiento de contenedores totalmente administrado con escala automática. Esto abre la oportunidad de diseñar soluciones alojadas por Cloud Run que aprovechen los servicios de Memorystore. En este artículo examinaremos lo que implica configurarlo.

Cada vez que creamos una instancia de Memorystore, se le dará una dirección IP privada que será visible para una sola red VPC. Además, Memorystore solo permite conexiones de recursos contenidos en la misma región. Esto proporciona acceso inmediato a Memorystore desde Compute Engines en la misma región / VPC utilizando el emparejamiento VPC:

Para acceder a Memorystore desde Cloud Run se requieren algunos pasos adicionales. Esto se debe a que Cloud Run es un entorno administrado sin servidor y no está asociado con ninguna VPC específica, como la VPC con la que se empareja Memorystore. La solución a esto es utilizar el acceso VPC sin servidor.

Creamos un conector de acceso VPC sin servidor en la misma región que Cloud Run y Memorstore y asociado con la misma VPC que Memorystore. Con esto en su lugar, podemos indicarle a Cloud Run que aproveche ese conector para acceder a Memorystore.

Veamos ahora una muestra que ilustra esta historia en acción. Primero, creamos una instancia de Memorystore:

 Las instancias de gcloud redis crean redis1 --region us-central1 

La instancia se llamará "redis1" y existirá en la región "us-central1". Este comando tardará varios minutos en completarse. Cuando se haya creado la instancia, querremos tomar nota de la dirección IP que nos fue asignada.

 Las instancias de gcloud redis describen redis1 --region us-central1 

Dentro de la información presentada, encontraremos una entrada con la etiqueta "host". Tome nota de la dirección IP, ya que esto es lo que usaremos para conectarnos con la instancia de Redis. Ahora podemos crear el conector de acceso VPC:

 conectores de acceso vpc de redes de cómputo gcloud \ 
crear my-vpc-connector \
--por defecto de la red \
--region us-central1 \
--rango 10.8.0.0/28

Esto creará un conector de acceso llamado "my-vpc-connector" asociado con la red VPC predeterminada y la región us-central1. Las direcciones IP para el conector se tomarán del rango CIDR 10.8.0.0/28.

Ahora podemos crear una aplicación alojada en Cloud Run que aprovechará Redis. Aquí hay un ejemplo:

 const express = require ('express'); 
const cors = require ('cors')
const redis = require ("redis");

aplicación const = express ();

cliente const = redis.createClient ({
"host": process.env.REDIS_IP
});
client.on ("error", función (error) {
console.error (error);
});

app.use (cors ());

app.get ('/', (req, res) => {
res.set ('Cache-Control', 'no-store');
client.set ("clave", "valor!", redis.print);
client.get ("key", (err, reply) => {
res.send (`




Conectando a Redis en: $ {process.env.REDIS_IP}


Valor de la clave que acaba de leer: $ {reply}




`);
});
});

const port = process.env.PORT || 8080;
app.listen (puerto, () => {
console.log (`Escuchando en el puerto $ {port}`);
});

Observe el uso de una variable de entorno llamada REDIS_IP que se espera que se proporcione. Esto contendrá la dirección IP de la instancia de Memorystore que se utilizará.

Luego construimos una imagen de contenedor (no se muestra). Una vez que se ha creado la imagen del contenedor, podemos implementar en Cloud Run:

 gcloud run deploy cloud-run-app \ 
--image gcr.io/[PROJECT_IDfont>/cloud-run-app \
--max-instancias 1 \
--plataforma gestionada \
--region us-central1 \
--vpc-connector my-vpc-connector \
--permitir-sin autenticar \
--set-env-vars "REDIS_IP = [IP_ADDRESS]"

Tenga en cuenta que configuramos la variable de entorno llamada REDIS_IP para que sea la dirección IP de la instancia de Redis. Tenga en cuenta también que suministramos el conector VPC que creamos anteriormente para proporcionar el enlace entre Cloud Run y Memorystore.

Aquí está disponible un repositorio de GitHub que contiene el ejemplo completo que se acaba de mostrar.

El siguiente video muestra una ilustración adicional de los pasos.

Referencias


El uso de Memorystore con Cloud Run se publicó originalmente en Google Cloud - Community on Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.