Как развернуть контроллер nginx-ingress с Helm на k8s с балансировкой нагрузки TCP / UDP - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь развернуть контроллер nginx-ingress в Kubernetes с помощью Helm.

Я также хочу настроить его для привязки определенных портов службы nginx-ingress-controller к конкретным портам узла на виртуальной машине [Я запускаю его внутри Vagrant].

Например, я хочу:

10000 портов узла -> 8080 nginx-ingress controller -> 10000 портов udp моей серверной службы

Развертывание моего Хелма следующее:

release_name=tcp-udp-nginx-ic
http_nodePort=30080
https_nodePort=30443

echo
echo "- Installing -${release_name}- into cluster ..." | cowsay

helm del --purge ${release_name}
helm upgrade --install ${release_name} \
--set controller.service.type=NodePort \
--set controller.service.nodePorts.http=${http_nodePort} \
--set controller.service.nodePorts.https=${https_nodePort} \
--set rbac.create=true \
--set controller.replicaCount=1 \
--set controller.resources.requests."memory"=300Mi \
--set controller.resources.requests."cpu"=300m \
--set controller.resources.limits."memory"=300Mi \
--set controller.resources.limits."cpu"=300m \
--set controller.ingressClass=nginx \
--set controller.tcp.configMapNamespace=default \
--set controller.udp.configMapNamespace=default \
--set udp."8080"="default/the-backend-service:10000" \
--set service.nodePorts.udp."8080"=10000 \
stable/nginx-ingress

Мой вопрос: в каком формате я должен ввести часть --set service.nodePorts.udp, чтобы выполнить вышеуказанное?

Используемый формат:упоминается в документации Helm об ограничениях --set .

Я знаю, что я близок, потому что, когда я клонирую диаграмму локально и в файле values.yml задаю следующее, воспроизводитсяхорошо.

    nodePorts:
      http: ""
      https: ""
      tcp: {}
#      udp: {}
      udp:
        8080: 10000
        8081: 10001

Когда я разверну его таким образом и desscribe Служба входного контроллера, я получу:

Name:                     tcp-udp-nginx-ic-nginx-ingress-controller
Namespace:                default
Labels:                   app=nginx-ingress
                          chart=nginx-ingress-1.24.3
                          component=controller
                          heritage=Tiller
                          release=tcp-udp-nginx-ic
Annotations:              <none>
Selector:                 app=nginx-ingress,component=controller,release=tcp-udp-nginx-ic
Type:                     NodePort
IP:                       10.109.1.182
Port:                     http  80/TCP
TargetPort:               http/TCP
NodePort:                 http  30080/TCP
Endpoints:
Port:                     https  443/TCP
TargetPort:               https/TCP
NodePort:                 https  30443/TCP
Endpoints:
Port:                     8080-udp  8080/UDP
TargetPort:               8080-udp/UDP
NodePort:                 8080-udp  10000/UDP
Endpoints:

Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
...