Anda hanya dapat terhubung ke instance Redis dari cluster Google Kubernetes Engine yang menggunakan jaringan yang diizinkan yang sama dengan instance Redis.
Penyiapan
Jika telah menginstal Google Cloud CLI dan membuat instance Redis, Anda dapat melewati langkah-langkah ini.
Instal gcloud CLI dan lakukan inisialisasi:
gcloud init
Ikuti Panduan Memulai Cepat untuk membuat instance Redis. Catat zona, alamat IP, dan port instance Redis.
Menyiapkan cluster GKE
Jika Anda belum membuat cluster GKE, buat cluster menggunakan perintah berikut untuk Google Cloud CLI:
Tetapkan project untuk aplikasi contoh ini di
gcloud
.gcloud config set project [PROJECT_ID]
Tetapkan variabel konfigurasi zona Compute Engine di
gcloud
.gcloud config set compute/zone [ZONE]
Buat cluster GKE bernama
visitcount-cluster
.gcloud container clusters create visitcount-cluster --num-nodes=3 --enable-ip-alias
Jika Anda tidak membuat cluster melalui
gcloud
, gunakan perintah ini untuk mengambil kredensial cluster:gcloud container clusters get-credentials [CLUSTER_NAME] --zone [CLUSTER_ZONE] --project [PROJECT_ID]
- CLUSTER_NAME adalah nama cluster GKE Anda.
- CLUSTER_ZONE adalah zona tempat cluster Anda berada.
- PROJECT_ID adalah project tempat cluster dan instance Redis Anda berada.
Jika cluster Anda adalah versi 1.8 atau yang lebih tinggi dan telah mengaktifkan alias IP, lewati langkah ini. Jika cluster Anda adalah versi 1.7 atau yang lebih lama, atau cluster versi 1.8 atau yang lebih tinggi tidak mengaktifkan alias IP, ikuti langkah-langkah solusi ini sebelum mencoba terhubung ke instance Anda.
Jalankan perintah ini, dengan mengganti RESERVED_IP_RANGE dengan rentang IP yang dicadangkan untuk instance Anda:
git clone https://github.com/bowei/k8s-custom-iptables.git cd k8s-custom-iptables/ TARGETS="RESERVED_IP_RANGE" ./install.sh cd ..
Jika tidak mengetahui rentang IP yang dicadangkan untuk instance, Anda dapat mengetahuinya melalui konsol (opsi lanjutan) atau dengan memasukkan perintah ini:
gcloud redis instances describe INSTANCE_ID --region=REGION
Untuk informasi selengkapnya tentang alias IP, termasuk cara membuat cluster dengan setelan ini diaktifkan, lihat dokumentasi alias IP.
Contoh aplikasi
Contoh aplikasi server HTTP ini membuat koneksi ke instance Redis dari cluster Google Kubernetes Engine.
Clone repositori untuk bahasa pemrograman yang Anda inginkan dan buka folder yang berisi kode contoh:
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
Aplikasi contoh ini menambahkan penghitung Redis setiap kali endpoint /
diakses.
Go
Aplikasi ini menggunakan klien
github.com/gomodule/redigo/redis
. Instal dengan menjalankan perintah berikut:
go get github.com/gomodule/redigo/redis
Java
Aplikasi ini berbasis servlet Jetty 3.1.
Library ini menggunakan library Jedis:
Class AppServletContextListener
digunakan untuk membuat kumpulan koneksi Redis yang berumur panjang:
Class VisitCounterServlet
adalah servlet web yang menambahkan
penghitung Redis:
Node.js
Aplikasi ini menggunakan modul
redis
.
Python
Aplikasi ini menggunakan Flask
untuk penayangan web dan paket redis-py
untuk berkomunikasi dengan instance Redis.
Membuat image container
Build dan kirim image container ke 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
Men-deploy aplikasi ke Google Kubernetes Engine
Perbaruigke_deployment/visit-counter.yaml
dengan mengganti <PROJECT_ID>
dengan Project ID Google Cloud Anda. File ini berisi konfigurasi untuk deployment dan layanan.
Go
Untuk menghindari hard code IP instance Redis, Anda dapat membuat ConfigMap redishost:
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Verifikasi konfigurasi menggunakan perintah berikut:
kubectl get configmaps redishost -o yaml
Java
Node.js
Untuk menghindari hard code IP instance Redis, Anda dapat membuat ConfigMap redishost:
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Verifikasi konfigurasi menggunakan perintah berikut:
kubectl get configmaps redishost -o yaml
Python
Untuk menghindari hard code IP instance Redis, Anda dapat membuat ConfigMap redishost:
export REDISHOST_IP=XXX.XXX.XXX.XXX
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Verifikasi konfigurasi menggunakan perintah berikut:
kubectl get configmaps redishost -o yaml
Terapkan konfigurasi ke cluster Anda:
kubectl apply -f gke_deployment/visit-counter.yaml
Tentukan alamat [EXTERNAL-IP] untuk aplikasi contoh ini dengan menjalankan perintah ini:
kubectl get service visit-counter
Lihat aplikasi Anda yang dihosting di http://[EXTERNAL-IP] melalui browser, atau kirim permintaan GET melalui cURL atau browser Anda:
curl http://[EXTERNAL-IP]
Menghapus entri tabel IP untuk instance Redis
Jika mengikuti langkah ketiga di bagian panduan ini yang disebut Menyiapkan cluster GKE, Anda telah menginstal rentang IP yang dicadangkan dari instance Redis ke tabel IP instance GKE. Jika Anda ingin menghapus entri rentang IP Redis ini dari tabel IP instance GKE, jalankan perintah berikut dari direktori k8s-custom-iptables/
:
./uninstall.sh