sql >> Databasteknik >  >> NoSQL >> Redis

Exponera Redis med Ingress Nginx Controller

Redis fungerar på 6379 som inte är HTTP-port(80,443). Så du måste aktivera TCP/UDP-stöd i nginx ingress controller. Minikube-dokumenten här visar hur man gör det för redis.

Uppdatera TCP- och/eller UDP-tjänsternas konfigurationskartor

När vi lånar från handledningen om att konfigurera TCP- och UDP-tjänster med ingress nginx-kontrollern måste vi redigera configmap som är installerad som standard när vi aktiverar minikube ingress-tillägget.

Det finns 2 configmaps, 1 för TCP-tjänster och 1 för UDP-tjänster. Som standard ser de ut så här:

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

Eftersom dessa konfigurationskartor är centraliserade och kan innehålla konfigurationer är det bäst om vi bara korrigerar dem istället för att helt skriva över dem.

Låt oss använda denna omdistribuering som ett exempel:

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

Skapa en fil redis-deployment.yaml och klistra in innehållet ovan. Installera sedan redis-distributionen med följande kommando:

kubectl apply -f redis-deployment.yaml

Därefter måste vi skapa en tjänst som kan dirigera trafik till våra pods:

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

Skapa en fil redis-service.yaml och klistra in innehållet ovan. Installera sedan redis-tjänsten med följande kommando:

kubectl apply -f redis-service.yaml

För att lägga till en TCP-tjänst till nginx ingress-kontrollern kan du köra följande kommando:

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

Var:

6379 :porten som din tjänst ska lyssna på utanför den virtuella minikube-maskinen

default :namnområdet som din tjänst är installerad i

redis-service :namnet på tjänsten

Vi kan verifiera att vår resurs har patchats med följande kommando:

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

Vi borde se något sånt här:

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

Det enda värdet du behöver validera är att det finns ett värde under dataegenskapen som ser ut så här:

"6379": default/redis-service:6379

Packa på ingress-nginx-kontrollern

Det finns ett sista steg som måste göras för att erhålla anslutning från det yttre klustret. Vi behöver patcha vår nginx-kontroller så att den lyssnar på port 6379 och kan dirigera trafik till din tjänst. För att göra detta måste vi skapa en patchfil.

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

Skapa en fil som heter ingress-nginx-controller-patch.yaml och klistra in innehållet ovan.

Tillämpa sedan ändringarna med följande kommando:

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



  1. Få specifik del av dokumentet

  2. Hur konfigurerar man vårsessioner för att fungera med Redis i xml?

  3. Redis Anslutning via uttag på Node.js

  4. Tornado-fel:[Errnr 24] Fel för många öppna filer