Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Odsłanianie Redisa za pomocą kontrolera Ingress Nginx

Redis działa na 6379, który nie jest portem HTTP (80,443). Musisz więc włączyć obsługę TCP/UDP w kontrolerze nginx. Dokumentacja minikube tutaj pokazuje, jak to zrobić dla redis.

Zaktualizuj mapy konfiguracji usług TCP i/lub UDP

Zapożyczając się z samouczka na temat konfigurowania usług TCP i UDP za pomocą kontrolera Ingress Nginx, będziemy musieli edytować mapę konfiguracji, która jest domyślnie instalowana po włączeniu dodatku minikube Ingress.

Istnieją 2 mapy konfiguracji, 1 dla usług TCP i 1 dla usług UDP. Domyślnie wyglądają tak:

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

Ponieważ te mapy konfiguracji są scentralizowane i mogą zawierać konfiguracje, najlepiej jest je tylko załatać, a nie całkowicie je nadpisać.

Użyjmy tego wdrożenia redis jako przykładu:

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

Utwórz plik redis-deployment.yaml i wklej powyższą zawartość. Następnie zainstaluj wdrożenie redis za pomocą następującego polecenia:

kubectl apply -f redis-deployment.yaml

Następnie musimy stworzyć usługę, która może kierować ruch do naszych podów:

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

Utwórz plik redis-service.yaml i wklej powyższą zawartość. Następnie zainstaluj usługę redis za pomocą następującego polecenia:

kubectl apply -f redis-service.yaml

Aby dodać usługę TCP do kontrolera ruchu przychodzącego nginx, możesz uruchomić następujące polecenie:

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

Gdzie:

6379 :port, którego usługa powinna nasłuchiwać spoza maszyny wirtualnej minikube

default :przestrzeń nazw, w której zainstalowana jest Twoja usługa

redis-service :nazwa usługi

Możemy zweryfikować, czy nasz zasób został załatany za pomocą następującego polecenia:

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

Powinniśmy zobaczyć coś takiego:

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

Jedyną wartością, którą musisz sprawdzić, jest to, że pod właściwością danych znajduje się wartość, która wygląda tak:

"6379": default/redis-service:6379

Popraw kontroler Ingress-nginx

Jest jeszcze jeden ostatni krok, który należy wykonać, aby uzyskać łączność z zewnętrznego klastra. Musimy załatać nasz kontroler nginx, aby nasłuchiwał na porcie 6379 i mógł kierować ruch do Twojej usługi. Aby to zrobić, musimy utworzyć plik poprawki.

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

Utwórz plik o nazwie ingress-nginx-controller-patch.yaml i wklej powyższą zawartość.

Następnie zastosuj zmiany za pomocą następującego polecenia:

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. Jak uzyskać wartości z Redis za pomocą kluczy zawierających spacje?

  2. redis:resetuj licznik każdego dnia

  3. Jak poznać typ danych wartości danego klucza?

  4. Uzyskaj dostęp do redis lokalnie w dockerze — docker compose

  5. Strażnik Redis