Anda hanya dapat terhubung ke instance Redis dari cluster Google Kubernetes Engine yang menggunakan jaringan resmi yang sama dengan instance Redis.
Penyiapan
Jika sudah menginstal Google Cloud CLI dan telah membuat instance Redis, Anda dapat melewati langkah-langkah ini.
Instal gcloud CLI dan lakukan inisialisasi:
gcloud init
Ikuti Panduan Memulai untuk membuat instance Redis. Catat zona, alamat IP, dan port instance Redis.
Menyiapkan cluster GKE Anda
Jika belum membuat cluster GKE, Anda dapat membuatnya 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 merupakan versi 1.8 atau yang lebih tinggi dan 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 berikut sebelum mencoba terhubung ke instance Anda.
Jalankan perintah berikut, dengan mengganti RESERVED_IP_RANGE dengan rentang IP yang dicadangkan dari 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 dari instance, Anda dapat mengetahuinya melalui konsol (opsi lanjutan) atau dengan memasukkan perintah ini:
gcloud redis instances describe INSTANCE_ID --region=REGION
Untuk mengetahui 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 paket tersebut dengan menjalankan perintah berikut:
go get github.com/gomodule/redigo/redis
Java
Aplikasi ini berbasis Jetty 3.1 servlet.
Kode 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
Bangun 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 Anda ke Google Kubernetes Engine
Perbaruigke_deployment/visit-counter.yaml
untuk mengganti <PROJECT_ID>
dengan Project ID Google Cloud Anda. File ini berisi konfigurasi untuk deployment dan layanan.
Go
Untuk menghindari hardcode 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 hardcode 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 hardcode 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 berikut:
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 telah mengikuti langkah ketiga pada 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 Anda, jalankan perintah berikut dari direktori k8s-custom-iptables/
:
./uninstall.sh