Anda hanya dapat terhubung ke instance Redis dari cluster Google Kubernetes Engine yang menggunakan jaringan diizinkan yang sama dengan instance Redis.
Penyiapan
Jika sudah menginstal Google Cloud CLI dan membuat instance Redis, Anda dapat melewati langkah-langkah ini.
Instal gcloud CLI dan lakukan inisialisasi:
gcloud initIkuti Panduan Memulai untuk membuat instance Redis. Catat zona, alamat IP, dan port instance Redis.
Menyiapkan cluster GKE
Jika 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 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 memiliki IP alias yang diaktifkan, lewati langkah ini. Jika cluster Anda adalah versi 1.7 atau yang lebih rendah, atau cluster versi 1.8 atau yang lebih tinggi tidak memiliki IP alias yang diaktifkan, ikuti langkah-langkah solusi sementara 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 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.
Kloning 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 menambahkan penghitung Redis setiap kali endpoint / diakses.
Go
Aplikasi ini menggunakan
github.com/gomodule/redigo/redis
klien. Instal dengan menjalankan perintah berikut:
go get github.com/gomodule/redigo/redis@latest
Contoh aplikasi:
Java
Aplikasi ini berbasis servlet Jetty 3.1.
Aplikasi 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 redis
modul. Berikut adalah contoh file package.json:
Kode aplikasi contoh:
Python
Aplikasi ini menggunakan Flask
untuk penayangan web dan paket redis-py
untuk berkomunikasi dengan instance Redis.
Kode aplikasi contoh:
Membangun image container
Bangun dan kirim image container dengan Cloud Build ke 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
Men-deploy aplikasi ke Google Kubernetes Engine
Untuk menghindari hardcode IP instance Redis, Anda dapat membuat redishost ConfigMap:
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 Anda buat 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 dengan menggunakan browser, atau kirim permintaan GET menggunakan curl atau browser Anda:
curl http://EXTERNAL_IP
Menghapus entri tabel IP untuk instance Redis
Jika Anda mengikuti langkah ketiga di bagian dari panduan ini tentang
Menyiapkan cluster GKE,
Anda telah menginstal rentang IP yang dicadangkan untuk instance Redis ke
tabel IP instance GKE. Jika ingin menghapus entri rentang IP Redis ini dari tabel IP instance GKE, jalankan perintah berikut dari direktori k8s-custom-iptables/:
./uninstall.sh