Ceea ce aș dori să evit este să înființez un pod separat, cum ar fi HAProxy, care rutează pe port.
Nu trebuie să configurați un astfel de Pod separat.
Kubernetes Ingress în mod implicit nu acceptă serviciile TCP sau UDP. Dar de exemplu, ingress-nginx
controlerul oferă un mecanism pentru a suporta TCP sau UDP pe diferite porturi. Puteți expune porturile TCP sau UDP modificând ConfigMaps.
Din acest motiv, acest controler Ingress folosește steagurile „--tcp-services-configmap” și „--udp-services-configmap” pentru a indica o hartă de configurare existentă unde cheia este portul extern de utilizat și valoarea indică serviciu de expunere folosind formatul:
<spațiu de nume/nume serviciu>:<port serviciu>:[PROXY]:[PROXY]
Verificați informații suplimentare Aici.
Un astfel de ConfigMap ar trebui să fie deja disponibil inainte de implementarea controlerului de intrare.
Deci, încercați să:
1. Creați un ConfigMap cu următoarea configurație a serviciului TCP.
$ cat ingress-nginx-tcp.yml
apiVersion: v1
fel: ConfigMap
metadate:
nume: ingress-nginx-tcp
spatiu de nume: implicit
date:
„22”: targetnamespace/target-service:22
2. Îndreptați controlerul Ingress către această ConfigMap folosind --tcp-services-configmap
marcați în configurație astfel:
$ kubectl obține implementarea ingress-nginx-controller -o yaml
apiVersion: apps/v1
fel: Desfăşurare
metadate:
nume: ingress-nginx-controller
spatiu de nume: implicit
specificație:
...
șablon:
...
specificație:
containere:
- argumente:
- /nginx-ingress-controller
- --tcp-services-configmap=$(POD_NAMESPACE)/ingress-nginx-tcp
...
3. Expuneți portul 22 în Serviciul definit pentru Intrare astfel:
$ kubectl obține svc ingress-nginx-controller -o yaml
apiVersion: v1
fel: Serviciu
metadate:
nume: ingress-nginx-controller
spatiu de nume: implicit
specificație:
porturi:
- nume: tcp-22
nodePort: 30957
port: 22
protocol: TCP
targetPort: 22
...
tip: LoadBalancer
...
Puteți defini orice număr de porturi care pot fi expuse folosind această metodă.
Există o altă opțiune pentru cei care folosesc un ingress-nginx helm chart. Cea mai mare parte a configurației este deja făcută și trebuie doar să specificați porturile tcp sectiune ca aceasta:
tcp:
2222: „default/example-tcp-svc:22”
Unde 2222
este portul expus şi 22
este portul de serviciu.