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