Puoi connetterti all'istanza Redis solo dai cluster Google Kubernetes Engine che utilizzano la stessa rete autorizzata dell'istanza Redis.
Configurazione
Se hai già installato Google Cloud CLI e creato un'istanza Redis, puoi saltare questi passaggi.
Installa gcloud CLI e inizializzalo:
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 cluster GKE
Se non hai creato un cluster GKE, creane uno utilizzando i seguenti comandi per Google Cloud CLI:
Indica 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 utilizzando
gcloud, utilizza il seguente 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 cluster GKE.
- CLUSTER_ZONE è la zona in cui si trova il cluster.
- PROJECT_ID è il progetto in cui esistono il cluster e le istanze Redis.
Se il cluster è la versione 1.8 o successive e ha gli alias IP abilitati, salta questo passaggio. Se il cluster è la versione 1.7 o precedenti oppure se il cluster della versione 1.8 o successive non ha gli alias IP abilitati, segui questi passaggi di soluzione alternativa 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 dell'istanza, scoprilo utilizzando la console (opzioni avanzate) o il seguente comando:
gcloud redis instances describe INSTANCE_ID --region=REGION
Per ulteriori informazioni sugli alias IP, inclusa la procedura per creare un cluster con questa impostazione abilitata, consulta la documentazione sugli alias IP.
Applicazione di esempio
Questa applicazione 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 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 seguente comando:
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 servizio web e il redis-py
pacchetto per comunicare con l'istanza Redis.
Codice dell'applicazione di esempio:
Creare l'immagine container
Crea ed esegui il push dell'immagine container con Cloud Build in Container Registry:
cp gke_deployment/Dockerfile . gcloud artifacts repositories create --location REPO_REGION --repository-format=docker REPO_ID gcloud builds submit --tag REPO_REGION-docker.pkg.dev/PROJECT_ID/REPO_ID/visit-counter:v1
Eseguire il deployment dell'applicazione in Google Kubernetes Engine
Per evitare di codificare l'indirizzo IP dell'istanza Redis, puoi creare un redishost ConfigMap:
export REDISHOST_IP=REDISHOST_IP
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Verifica la configurazione utilizzando il seguente comando:
kubectl get configmaps redishost -o yaml
Aggiorna gke_deployment/visit-counter.yaml, sostituendo <REPO_REGION>, <PROJECT_ID> e <REPO_ID> con i valori dell'immagine container creata in Creare l'immagine container. Questo file contiene la configurazione per il deployment e il servizio.
apiVersion: apps/v1
kind: Deployment
metadata:
name: visit-counter
labels:
app: visit-counter
spec:
replicas: 1
selector:
matchLabels:
app: visit-counter
template:
metadata:
labels:
app: visit-counter
spec:
containers:
- name: visit-counter
image: "<REPO_REGION>-docker.pkg.dev/<PROJECT_ID>/<REPO_ID>/visit-counter:v1"
env:
- name: REDISHOST
valueFrom:
configMapKeyRef:
name: redishost
key: REDISHOST
ports:
- name: http
containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: visit-counter
spec:
type: LoadBalancer
selector:
app: visit-counter
ports:
- port: 80
targetPort: 8080
protocol: TCP
Applica la configurazione al cluster:
kubectl apply -f gke_deployment/visit-counter.yaml
Determina l'indirizzo IP esterno per questa app di esempio eseguendo il seguente comando:
kubectl get service visit-counter
Verifica che l'app sia ospitata all'indirizzo IP esterno utilizzando il browser oppure invia una richiesta GET utilizzando curl o il browser:
curl http://EXTERNAL_IP
Rimuovere la voce delle tabelle IP per l'istanza Redis
Se hai seguito il passaggio 3 della sezione
Preparare il cluster GKE di questa procedura dettagliata,
hai installato l'intervallo IP riservato dell'istanza Redis nelle tabelle IP dell'istanza
GKE. Se vuoi rimuovere questa voce dell'intervallo IP Redis dalle tabelle IP dell'istanza GKE, esegui il seguente comando dalla directory k8s-custom-iptables/:
./uninstall.sh