Vous ne pouvez vous connecter à votre instance Redis qu'à partir de clusters Google Kubernetes Engine qui utilisent le même réseau autorisé que l'instance Redis.
Configuration
Si vous avez déjà installé Google Cloud CLI et créé une instance Redis, vous pouvez ignorer ces étapes.
Installez la gcloud CLI et initialisez:
gcloud init
Suivez le Guide de démarrage rapide pour créer une instance Redis. Retenez la zone, l'adresse IP et le port de l'instance Redis.
Préparer le cluster GKE
Si vous n'avez pas créé de cluster GKE, créez-en un à l'aide des commandes suivantes pour la Google Cloud CLI:
Désignez le projet pour cet exemple d'application dans
gcloud
.gcloud config set project [PROJECT_ID]
Définissez la variable de configuration de la zone Compute Engine dans
gcloud
.gcloud config set compute/zone [ZONE]
Créer un cluster GKE nommé
visitcount-cluster
.gcloud container clusters create visitcount-cluster --num-nodes=3 --enable-ip-alias
Si vous n'avez pas créé le cluster via
gcloud
, utilisez cette commande pour récupérer les identifiants du cluster :gcloud container clusters get-credentials [CLUSTER_NAME] --zone [CLUSTER_ZONE] --project [PROJECT_ID]
- CLUSTER_NAME est le nom de votre cluster GKE.
- CLUSTER_ZONE est la zone dans laquelle se trouve votre cluster.
- PROJECT_ID est le projet dans lequel votre cluster et vos instances Redis se trouvent.
Si votre cluster est de version 1.8 ou supérieure et que les alias d'adresses IP sont activés, ignorez cette étape. Si le cluster est de version 1.7 ou inférieure, ou si les alias d'adresses IP ne sont pas activés sur votre cluster de version 1.8 ou ultérieure, procédez comme suit avant d'essayer de vous connecter à l'instance :
Exécutez les commandes suivantes, en remplaçant RESERVED_IP_RANGE par la plage d'adresses IP réservées de votre instance :
git clone https://github.com/bowei/k8s-custom-iptables.git cd k8s-custom-iptables/ TARGETS="RESERVED_IP_RANGE" ./install.sh cd ..
Si vous ne connaissez pas la plage d'adresses IP réservées de votre instance, vous pouvez obtenir cette information via la console (options avancées) ou à l'aide de la commande suivante :
gcloud redis instances describe INSTANCE_ID --region=REGION
Pour en savoir plus sur les alias d'adresses IP et sur la création de clusters avec ce paramètre activé, consultez la documentation relative aux alias d'adresses IP.
Exemple d'application
Cet exemple d'application de serveur HTTP établit une connexion à une instance Redis à partir d'un cluster Google Kubernetes Engine.
Clonez le dépôt correspondant au langage de programmation souhaité et accédez au dossier contenant l'exemple de code :
Go
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
Cet exemple de code incrémente un compteur Redis à chaque accès au point de terminaison /
.
Go
Cette application utilise le client github.com/gomodule/redigo/redis
. Installez-le en exécutant la commande suivante :
go get github.com/gomodule/redigo/redis
Java
Cette application est basée sur un servlet Jetty 3.1.
Il utilise la bibliothèque Jedis :
La classe AppServletContextListener
permet de créer un pool de connexions Redis longue durée :
La classe VisitCounterServlet
est un servlet Web qui incrémente un compteur Redis :
Node.js
Cette application utilise le module redis
.
Python
Cette application utilise Flask pour la diffusion Web et le package redis-py
pour communiquer avec l'instance Redis.
Créer l'image du conteneur
Créez et transférez l'image du conteneur vers Container Registry de la manière suivante :
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
Déployer votre application sur Google Kubernetes Engine
Mettez à jourgke_deployment/visit-counter.yaml
en remplaçant <PROJECT_ID>
par votre ID de projet Google Cloud. Ce fichier contient la configuration du déploiement et du service.
Go
Pour éviter de coder en dur l'adresse IP de l'instance Redis, vous pouvez créer un fichier redishost ConfigMap :
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Vérifiez la configuration à l'aide de la commande suivante :
kubectl get configmaps redishost -o yaml
Java
Node.js
Pour éviter de coder en dur l'adresse IP de l'instance Redis, vous pouvez créer un fichier redishost ConfigMap :
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Vérifiez la configuration à l'aide de la commande suivante :
kubectl get configmaps redishost -o yaml
Python
Pour éviter de coder en dur l'adresse IP de l'instance Redis, vous pouvez créer un fichier redishost ConfigMap :
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Vérifiez la configuration à l'aide de la commande suivante :
kubectl get configmaps redishost -o yaml
Appliquez la configuration à votre cluster comme suit :
kubectl apply -f gke_deployment/visit-counter.yaml
Déterminez l'adresse [EXTERNAL-IP] pour cet exemple d'application en exécutant la commande suivante :
kubectl get service visit-counter
Affichez votre application hébergée à l'adresse http://[EXTERNAL-IP] via le navigateur ou envoyez une requête GET via cURL ou le navigateur :
curl http://[EXTERNAL-IP]
Supprimer l'entrée des tables d'adresses IP pour l'instance Redis
Si vous avez suivi la troisième étape de la section de ce tutoriel intitulé Préparer le cluster GKE, vous avez installé la plage d'adresses IP réservées de l'instance Redis dans les tables d'adresses IP de l'instance GKE. Si vous souhaitez supprimer cette entrée de plage d'adresses IP Redis des tables IP de votre instance GKE, exécutez la commande suivante à partir du répertoire k8s-custom-iptables/
:
./uninstall.sh