sql >> Database teknologi >  >> NoSQL >> Redis

Eksponering af Redis med Ingress Nginx-controller

Redis fungerer på 6379, som ikke er HTTP-port (80.443). Så du skal aktivere TCP/UDP-understøttelse i nginx ingress controller. Minikube-dokumenterne her viser, hvordan man gør det til redis.

Opdater TCP- og/eller UDP-tjenesternes configmaps

Når vi låner fra vejledningen om konfiguration af TCP- og UDP-tjenester med ingress nginx-controlleren, bliver vi nødt til at redigere configmap'et, som er installeret som standard, når minikube ingress-tilføjelsen aktiveres.

Der er 2 configmaps, 1 til TCP-tjenester og 1 til UDP-tjenester. Som standard ser de sådan ud:

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

Da disse configmaps er centraliserede og kan indeholde konfigurationer, er det bedst, hvis vi kun patcher dem i stedet for at overskrive dem fuldstændigt.

Lad os bruge denne redis-implementering som et eksempel:

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

Opret en fil redis-deployment.yaml og indsæt indholdet ovenfor. Installer derefter redis-implementeringen med følgende kommando:

kubectl apply -f redis-deployment.yaml

Dernæst skal vi oprette en tjeneste, der kan dirigere trafik til vores 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

Opret en fil redis-service.yaml og indsæt indholdet ovenfor. Installer derefter redis-tjenesten med følgende kommando:

kubectl apply -f redis-service.yaml

For at tilføje en TCP-tjeneste til nginx ingress-controlleren kan du køre følgende kommando:

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

Hvor:

6379 :den port, din tjeneste skal lytte til uden for den virtuelle minikube-maskine

default :det navneområde, som din tjeneste er installeret i

redis-service :navnet på tjenesten

Vi kan bekræfte, at vores ressource blev patchet med følgende kommando:

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

Vi burde se noget som dette:

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

Den eneste værdi, du skal validere, er, at der er en værdi under dataegenskaben, der ser sådan ud:

"6379": default/redis-service:6379

Patch ingress-nginx-controlleren

Der er et sidste trin, der skal udføres for at opnå forbindelse fra den ydre klynge. Vi skal patche vores nginx-controller, så den lytter på port 6379 og kan dirigere trafik til din tjeneste. For at gøre dette skal vi oprette en patch-fil.

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

Opret en fil kaldet ingress-nginx-controller-patch.yaml og indsæt indholdet ovenfor.

Anvend derefter ændringerne med følgende kommando:

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



  1. 3 måder at returnere en tilfældig prøve af dokumenter fra en MongoDB-samling

  2. Korrekt måde at importere json-fil til mongo

  3. Transparent Database Failover til dine applikationer

  4. Cloudera Replication Plugin muliggør x-platform replikering til Apache HBase