Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Phơi sáng Redis với Bộ điều khiển Ingress Nginx

Redis hoạt động trên 6379 không phải là cổng HTTP (80,443). Vì vậy, bạn cần bật hỗ trợ TCP / UDP trong bộ điều khiển nhập nginx. Tài liệu minikube ở đây cho biết cách thực hiện điều đó cho redis.

Cập nhật sơ đồ cấu hình dịch vụ TCP và / hoặc UDP

Mượn từ hướng dẫn định cấu hình các dịch vụ TCP và UDP với bộ điều khiển nginx nhập vào, chúng ta sẽ cần chỉnh sửa sơ đồ cấu hình được cài đặt theo mặc định khi bật addon nhập vào minikube.

Có 2 sơ đồ cấu hình, 1 cho các dịch vụ TCP và 1 cho các dịch vụ UDP. Theo mặc định, chúng trông như thế này:

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

Vì các sơ đồ cấu hình này là tập trung và có thể chứa các cấu hình, nên tốt nhất là chúng tôi chỉ vá chúng thay vì ghi đè chúng hoàn toàn.

Hãy sử dụng triển khai redis này làm ví dụ:

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

Tạo tệp redis-deployment.yaml và dán nội dung bên trên. Sau đó cài đặt triển khai redis bằng lệnh sau:

kubectl apply -f redis-deployment.yaml

Tiếp theo, chúng tôi cần tạo một dịch vụ có thể định tuyến lưu lượng truy cập đến các nhóm của chúng tôi:

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

Tạo tệp redis-service.yaml và dán nội dung bên trên. Sau đó cài đặt dịch vụ redis bằng lệnh sau:

kubectl apply -f redis-service.yaml

Để thêm dịch vụ TCP vào bộ điều khiển nhập nginx, bạn có thể chạy lệnh sau:

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

Ở đâu:

6379 :cổng mà dịch vụ của bạn sẽ lắng nghe từ bên ngoài máy ảo minikube

default :không gian tên mà dịch vụ của bạn được cài đặt trong

redis-service :tên của dịch vụ

Chúng tôi có thể xác minh rằng tài nguyên của chúng tôi đã được vá bằng lệnh sau:

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

Chúng ta sẽ thấy một cái gì đó như thế này:

Nhãn
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

Giá trị duy nhất bạn cần xác thực là có một giá trị trong thuộc tính dữ liệu trông giống như sau:

"6379": default/redis-service:6379

Vá bộ điều khiển ingress-nginx

Có một bước cuối cùng phải được thực hiện để có được kết nối từ cụm bên ngoài. Chúng tôi cần vá bộ điều khiển nginx của mình để nó đang lắng nghe trên cổng 6379 và có thể định tuyến lưu lượng truy cập đến dịch vụ của bạn. Để thực hiện việc này, chúng tôi cần tạo một tệp vá.

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

Tạo một tệp có tên ingress-nginx-controller-patch.yaml và dán nội dung ở trên.

Tiếp theo, hãy áp dụng các thay đổi với lệnh sau:

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. Redis hiệu suất trên CPU đa lõi

  2. Chuyển đổi cơ sở dữ liệu MySQL đơn giản sang giải pháp NoSQL

  3. Có thể thực hiện redis trên Heroku mà không cần addon không?

  4. Redis dưới ASP cổ điển (VBScript)

  5. Làm thế nào để xác định thời gian thực thi của một tập lệnh Lua trong Redis?