Puoi connetterti a un'istanza Redis da Cloud Run utilizzando il traffico in uscita VPC diretto.
Configurazione
Se hai già installato Google Cloud CLI e creato un'istanza Redis, puoi saltare questi passaggi.
Installa e inizializza gcloud CLI:
gcloud initSegui la guida rapida per creare un'istanza Redis. Prendi nota della zona, dell'indirizzo IP e della porta dell'istanza Redis.
Preparare il traffico in uscita della rete VPC per la configurazione
Per connetterti all'istanza Redis, il servizio Cloud Run deve avere accesso alla rete VPC autorizzata dell'istanza Redis.
Per trovare il nome di questa rete, esegui il comando seguente:
gcloud redis instances describe INSTANCE_ID --region REGION --format "value(authorizedNetwork)"
Prendi nota del nome della rete.
Applicazione di esempio
Questa applicazione server HTTP di esempio stabilisce una connessione a un'istanza Redis da un servizio Cloud Run.
Clona il repository per il linguaggio di programmazione scelto e vai alla cartella contenente il codice campione:
Vai
git clone https://github.com/GoogleCloudPlatform/golang-samples
cd golang-samples/memorystore/redis
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/memorystore/redis
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
cd nodejs-docs-samples/memorystore/redis
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/memorystore/redis
Questa applicazione di esempio incrementa un contatore Redis ogni volta che si accede all'endpoint /.
Vai
Questa applicazione utilizza il
github.com/gomodule/redigo/redis
client. Installalo eseguendo il comando seguente:
go get github.com/gomodule/redigo/redis@latest
Applicazione di esempio:
Java
Questa applicazione è basata su servlet Jetty 3.1.
Utilizza la libreria Jedis:
La classe AppServletContextListener viene utilizzata per creare un pool di connessioni Redis a lunga durata:
La classe VisitCounterServlet è una servlet web che incrementa un contatore Redis:
Node.js
Questa applicazione utilizza il redis
modulo. Di seguito è riportato un file package.json di esempio:
Codice dell'applicazione di esempio:
Python
Questa applicazione utilizza Flask
per il serving web e il redis-py
pacchetto per comunicare con l'istanza Redis.
Codice dell'applicazione di esempio:
Eseguire il deployment dell'applicazione in Cloud Run
Per eseguire il deployment dell'applicazione:
Copia il
Dockerfilenella directory di origine:cp cloud_run_deployment/Dockerfile .Crea un'immagine container utilizzando Cloud Build eseguendo il comando seguente:
gcloud artifacts repositories create --location REPO_REGION --repository-format=docker REPO_ID gcloud builds submit --pack image=REPO_REGION-docker.pkg.dev/PROJECT_ID/REPO_ID/visit-counter:v1
Esegui il deployment del container in Cloud Run eseguendo il comando seguente:
gcloud run deploy \ --image REPO_REGION-docker.pkg.dev/PROJECT_ID/REPO_ID/visit-counter:v1 \ --allow-unauthenticated \ --region REGION \ --network NETWORK \ --subnet SUBNET \ --set-env-vars REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
dove:
REPO_REGIONè la regione del repository.REPO_IDè il nome del repository contenente l'immagine dell'applicazione.PROJECT_IDè l'ID del tuo Google Cloud progetto.REGIONè la regione in cui si trova l'istanza Redis.NETWORKè il nome della rete VPC autorizzata a cui è collegata l'istanza Redis.SUBNETè il nome della subnet. La subnet deve essere almeno/26o superiore. Il traffico in uscita VPC diretto supporta gli interv4ali IPv4 RFC 1918, RFC 6598, e Classe E.REDIS_IPeREDIS_PORTsono l'indirizzo IP e il numero di porta dell'istanza Redis.
Al termine del deployment, la riga di comando visualizza l'URL del servizio Cloud Run. Visita questo URL in un browser web (o utilizza uno strumento come curl) e osserva l'aumento del conteggio sull'istanza Redis ogni volta che viene visitato il servizio.