Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Mengekspos Redis dengan Ingress Nginx Controller

Redis bekerja pada 6379 yang bukan port HTTP (80.443). Jadi, Anda perlu mengaktifkan dukungan TCP/UDP di pengontrol ingress nginx. Dokumen minikube di sini menunjukkan cara melakukannya untuk redis.

Perbarui peta konfigurasi layanan TCP dan/atau UDP

Meminjam dari tutorial mengonfigurasi layanan TCP dan UDP dengan pengontrol ingress nginx, kita perlu mengedit configmap yang diinstal secara default saat mengaktifkan addon ingress minikube.

Ada 2 configmaps, 1 untuk layanan TCP dan 1 untuk layanan UDP. Secara default mereka terlihat seperti ini:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: udp-services
  namespace: ingress-nginx

Karena peta konfigurasi ini terpusat dan mungkin berisi konfigurasi, sebaiknya kita hanya menambalnya daripada menimpanya sepenuhnya.

Mari kita gunakan penerapan redis ini sebagai contoh:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-deployment
  namespace: default
  labels:
    app: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - image: redis
        imagePullPolicy: Always
        name: redis
        ports:
        - containerPort: 6379
          protocol: TCP

Buat file redis-deployment.yaml dan rekatkan konten di atas. Kemudian instal penerapan redis dengan perintah berikut:

kubectl apply -f redis-deployment.yaml

Selanjutnya kita perlu membuat layanan yang dapat mengarahkan lalu lintas ke pod kita:

apiVersion: v1
kind: Service
metadata:
  name: redis-service
  namespace: default
spec:
  selector:
    app: redis
  type: ClusterIP
  ports:
    - name: tcp-port
      port: 6379
      targetPort: 6379
      protocol: TCP

Buat file redis-service.yaml dan rekatkan konten di atas. Kemudian instal layanan redis dengan perintah berikut:

kubectl apply -f redis-service.yaml

Untuk menambahkan layanan TCP ke pengontrol ingress nginx, Anda dapat menjalankan perintah berikut:

kubectl patch configmap tcp-services -n kube-system --patch '{"data":{"6379":"default/redis-service:6379"}}'

Dimana:

6379 :port yang harus didengarkan layanan Anda dari luar mesin virtual minikube

default :namespace tempat layanan Anda diinstal

redis-service :nama layanan

Kami dapat memverifikasi bahwa sumber daya kami telah ditambal dengan perintah berikut:

kubectl get configmap tcp-services -n kube-system -o yaml

Kita akan melihat sesuatu seperti ini:

apiVersion: v1
data:
  "6379": default/redis-service:6379
kind: ConfigMap
metadata:
  creationTimestamp: "2019-10-01T16:19:57Z"
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
  name: tcp-services
  namespace: kube-system
  resourceVersion: "2857"
  selfLink: /api/v1/namespaces/kube-system/configmaps/tcp-services
  uid: 4f7fac22-e467-11e9-b543-080027057910

Satu-satunya nilai yang perlu Anda validasi adalah bahwa ada nilai di bawah properti data yang terlihat seperti ini:

"6379": default/redis-service:6379

Menambal ingress-nginx-controller

Ada satu langkah terakhir yang harus dilakukan untuk mendapatkan konektivitas dari luar cluster. Kami perlu menambal pengontrol nginx kami agar mendengarkan pada port 6379 dan dapat merutekan lalu lintas ke layanan Anda. Untuk melakukan ini, kita perlu membuat file patch.

spec:
  template:
    spec:
      containers:
      - name: ingress-nginx-controller
        ports:
         - containerPort: 6379
           hostPort: 6379

Buat file bernama ingress-nginx-controller-patch.yaml dan rekatkan konten di atas.

Selanjutnya terapkan perubahan dengan perintah berikut:

kubectl patch deployment ingress-nginx-controller --patch "$(cat ingress-nginx-controller-patch.yaml)" -n kube-system



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. apa perbedaan rata-rata antara permata Nest dan redis-namespace ketika kami menggunakan redis dengan Rails/ruby

  2. cookie nginx lua redis tidak disetel

  3. Redis database pada mesin dev dengan banyak proyek

  4. Mengapa Menggunakan Redis daripada MongoDb untuk Caching?

  5. Membuat fungsi tampilan tanpa mengembalikan respons di Flask