Puoi connetterti alla tua istanza Redis solo da cluster Google Kubernetes Engine che usano la stessa rete autorizzata dell'istanza Redis.
Configurazione
Se hai già installato Google Cloud CLI e hai creato un'istanza Redis, puoi saltare questi passaggi.
Installa l'interfaccia a riga di comando gcloud e inizializza:
gcloud init
Segui la guida rapida. per creare un'istanza Redis. Prendi nota della zona, dell'indirizzo IP e della porta l'istanza Redis.
Preparazione del cluster GKE
Se non hai creato un cluster GKE, creane uno utilizzando seguenti comandi per Google Cloud CLI:
Specifica il progetto per questa applicazione di esempio in
gcloud
.gcloud config set project [PROJECT_ID]
Imposta la variabile di configurazione della zona di Compute Engine in
gcloud
.gcloud config set compute/zone [ZONE]
Crea un cluster GKE denominato
visitcount-cluster
.gcloud container clusters create visitcount-cluster --num-nodes=3 --enable-ip-alias
Se non hai creato il cluster tramite
gcloud
, utilizza questo comando per recuperare le credenziali del cluster:gcloud container clusters get-credentials [CLUSTER_NAME] --zone [CLUSTER_ZONE] --project [PROJECT_ID]
- CLUSTER_NAME è il nome del tuo cluster GKE.
- CLUSTER_ZONE è la zona in cui si trova il tuo cluster.
- PROJECT_ID è il progetto in cui si trovano il cluster e le istanze Redis.
Se il tuo cluster è della versione 1.8 o successiva e ha gli alias IP abilitati, salta questo passaggio. Se il tuo cluster è di versione 1.7 o precedente o se il tuo cluster di versione 1.8 o successiva non ha gli alias IP abilitati, segui questa procedura di risoluzione dei problemi prima di provare a connetterti all'istanza.
Esegui questi comandi, sostituendo RESERVED_IP_RANGE con l'intervallo IP riservato dell'istanza:
git clone https://github.com/bowei/k8s-custom-iptables.git cd k8s-custom-iptables/ TARGETS="RESERVED_IP_RANGE" ./install.sh cd ..
Se non conosci l'intervallo IP riservato della tua istanza, puoi trovarlo tramite la console (opzioni avanzate) o inserendo questo comando:
gcloud redis instances describe INSTANCE_ID --region=REGION
Per ulteriori informazioni sugli alias IP, inclusa la creazione di un cluster con questa impostazione abilitata, consulta la documentazione sugli alias IP.
Applicazione di esempio
Questa applicazione di server HTTP di esempio stabilisce una connessione a un'istanza Redis da un cluster Google Kubernetes Engine.
Clona il repository per il linguaggio di programmazione desiderato ed esplora alla cartella che contiene 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 l'endpoint /
a cui si accede.
Vai
Questa applicazione utilizza
github.com/gomodule/redigo/redis
di alto profilo. Installalo eseguendo il seguente comando:
go get github.com/gomodule/redigo/redis
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 di lunga durata:
La classe VisitCounterServlet
è un servlet web che incrementa
un contatore Redis:
Node.js
Questa applicazione utilizza il modulo redis
.
Python
Questa applicazione utilizza Flask per il servizio web e il pacchetto redis-py
per comunicare con l'istanza Redis.
Creazione dell'immagine container
Crea ed esegui il push dell'immagine container su Container Registry:
cp gke_deployment/Dockerfile .
export PROJECT_ID="$(gcloud config get-value project -q)"
docker build -t gcr.io/${PROJECT_ID}/visit-counter:v1 .
gcloud docker -- push gcr.io/${PROJECT_ID}/visit-counter:v1
Deployment dell'applicazione in Google Kubernetes Engine
Aggiornagke_deployment/visit-counter.yaml
sostituendo <PROJECT_ID>
con il tuo ID progetto Google Cloud. Questo file contiene la configurazione del deployment e del servizio.
Vai
Per evitare l'hard-coding dell'IP dell'istanza Redis, puoi creare un ConfigMap Redis:
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Verifica la configurazione utilizzando il comando seguente:
kubectl get configmaps redishost -o yaml
Java
Node.js
Per evitare di codificare l'IP dell'istanza Redis, puoi creare un ConfigMap redishost:
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Verifica la configurazione utilizzando il seguente comando:
kubectl get configmaps redishost -o yaml
Python
Per evitare di codificare l'IP dell'istanza Redis, puoi creare un ConfigMap redishost:
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Verifica la configurazione utilizzando il comando seguente:
kubectl get configmaps redishost -o yaml
Applica la configurazione al cluster:
kubectl apply -f gke_deployment/visit-counter.yaml
Per determinare l'indirizzo [EXTERNAL-IP] di questa app di esempio, esegui questo comando:
kubectl get service visit-counter
Visualizza la tua app ospitata all'indirizzo http://[EXTERNAL-IP] tramite il browser oppure invia una richiesta GET tramite cURL o il browser:
curl http://[EXTERNAL-IP]
Rimozione della voce delle tabelle IP per l'istanza Redis
Se hai seguito il passaggio 3 della sezione di questa procedura dettagliata denominata Preparazione del cluster GKE, hai installato l'intervallo IP riservato della tua istanza Redis nelle tabelle IP della tua istanza GKE. Se vuoi rimuovere questo Redis
dalla voce dell'intervallo IP dalle tabelle IP dell'istanza GKE, esegui
il seguente comando dalla directory k8s-custom-iptables/
:
./uninstall.sh