sql >> Database >  >> NoSQL >> Redis

Redis ontmaskeren met Ingress Nginx Controller

Redis werkt op 6379, een niet-HTTP-poort (80.443). U moet dus TCP/UDP-ondersteuning inschakelen in de nginx-ingangscontroller. De minikube-documenten hier laten zien hoe u dit voor redis kunt doen.

Update de configuratiekaarten van de TCP- en/of UDP-services

Gelet op de tutorial over het configureren van TCP- en UDP-services met de ingress nginx-controller, moeten we de configmap bewerken die standaard is geïnstalleerd bij het inschakelen van de minikube ingress-add-on.

Er zijn 2 configmaps, 1 voor TCP-services en 1 voor UDP-services. Standaard zien ze er zo uit:

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

Aangezien deze configmaps gecentraliseerd zijn en configuraties kunnen bevatten, is het het beste als we ze alleen patchen in plaats van ze volledig te overschrijven.

Laten we deze redis-implementatie als voorbeeld gebruiken:

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

Maak een bestand redis-deployment.yaml en plak de inhoud hierboven. Installeer vervolgens de redis-implementatie met de volgende opdracht:

kubectl apply -f redis-deployment.yaml

Vervolgens moeten we een service maken die verkeer naar onze pods kan leiden:

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

Maak een bestand redis-service.yaml en plak de inhoud hierboven. Installeer vervolgens de redis-service met het volgende commando:

kubectl apply -f redis-service.yaml

Om een ​​TCP-service aan de nginx ingress-controller toe te voegen, kun je de volgende opdracht uitvoeren:

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

Waar:

6379 :de poort waarnaar uw service moet luisteren van buiten de virtuele minikube-machine

default :de naamruimte waarin uw service is geïnstalleerd

redis-service :de naam van de dienst

We kunnen controleren of onze bron is gepatcht met het volgende commando:

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

We zouden zoiets als dit moeten zien:

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

De enige waarde die u hoeft te valideren, is dat er een waarde is onder de data-eigenschap die er als volgt uitziet:

"6379": default/redis-service:6379

Patch de ingress-nginx-controller

Er is nog een laatste stap die moet worden gedaan om connectiviteit van het externe cluster te verkrijgen. We moeten onze nginx-controller patchen zodat deze luistert op poort 6379 en verkeer naar uw service kan routeren. Om dit te doen, moeten we een patchbestand maken.

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

Maak een bestand met de naam ingress-nginx-controller-patch.yaml en plak de inhoud hierboven.

Pas vervolgens de wijzigingen toe met het volgende commando:

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



  1. Nauwkeurigheid van de opdracht redis dbsize

  2. Beperkt aantal records van een bepaald type retourneren, maar onbeperkt aantal andere records?

  3. hoe een sleutel van een kaart in REDIS laten verlopen?

  4. Creëer een uniek autoincrement-veld met mangoest