Anda hanya dapat terhubung ke instance Redis dari cluster Google Kubernetes Engine yang menggunakan jaringan yang sama dengan instance Redis.
Penyiapan
Jika Anda telah menginstal Google Cloud CLI dan membuat instance Redis, Anda dapat melewati langkah-langkah ini.
Instal gcloud CLI dan lakukan inisialisasi:
gcloud initIkuti 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:
Tentukan 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 menggunakan
gcloud, gunakan perintah berikut 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 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 baru tidak mengaktifkan alias IP, ikuti langkah-langkah solusi berikut 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 Anda tidak mengetahui rentang IP yang dicadangkan untuk instance Anda, cari tahu dengan menggunakan konsol (opsi lanjutan) atau perintah berikut:
gcloud redis instances describe INSTANCE_ID --region=REGION
Untuk mengetahui informasi selengkapnya tentang IP alias, termasuk cara membuat cluster dengan setelan ini diaktifkan, lihat dokumentasi IP alias.
Contoh aplikasi
Aplikasi server HTTP contoh ini membuat koneksi ke instance Redis dari cluster Google Kubernetes Engine.
Buat clone repositori untuk bahasa pemrograman yang Anda pilih 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 menambah 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@latest
Contoh aplikasi:
Java
Aplikasi ini berbasis servlet Jetty 3.1.
Library ini menggunakan library Jedis:
Class AppServletContextListener digunakan untuk membuat kumpulan koneksi Redis yang berjalan lama:
Class VisitCounterServlet adalah servlet web yang menambah
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:
gcloud artifacts repositories create --location REPO_REGION --repository-format=docker REPO_ID
cp gke_deployment/Dockerfile .
docker build -t REPO_REGION-docker.pkg.dev/PROJECT_ID/REPO_ID/visit-counter:v1 .
gcloud docker -- push REPO_REGION-docker.pkg.dev/PROJECT_ID/REPO_ID/visit-counter:v1
Men-deploy aplikasi Anda ke Google Kubernetes Engine
Untuk menghindari hardcode IP instance Redis, Anda dapat membuat ConfigMap redishost:
export REDISHOST_IP=REDISHOST_IP
kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}
Verifikasi konfigurasi menggunakan perintah berikut:
kubectl get configmaps redishost -o yaml
Perbarui gke_deployment/visit-counter.yaml, dengan mengganti <REPO_REGION>, <PROJECT_ID>, dan <REPO_ID> dengan nilai dari image container yang dibuat di Membangun image container. File ini berisi konfigurasi untuk deployment dan layanan.
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
Terapkan konfigurasi ke cluster Anda:
kubectl apply -f gke_deployment/visit-counter.yaml
Tentukan alamat IP eksternal untuk aplikasi contoh ini dengan menjalankan perintah berikut:
kubectl get service visit-counter
Verifikasi bahwa aplikasi Anda dihosting di IP eksternal menggunakan browser, atau kirim permintaan GET menggunakan curl atau browser Anda:
curl http://EXTERNAL_IP
Menghapus entri tabel IP untuk instance Redis
Jika Anda telah mengikuti langkah ketiga di bagian Menyiapkan cluster GKE dalam panduan ini, berarti 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