Ingress-контроллерін TCP-балансировщикпен жайып орналастыру
Ingress-контроллерін VK Cloud платформасының TCP жүктеме балансировщигімен бірге жайып орналастыруға болады. Төменде мысал ретінде контроллердің жұмысқа қабілеттілігін тексеру үшін қарапайым демо-қосымшалар мен Ingress ресурсы жасалады. Төменде NGINX Ingress Controller жайып орналастырылады деп болжанады. Алайда ұсынылған тәсілдерді басқа Ingress-контроллерлерге, мысалы, Traefik-ке де бейімдеуге болады.
-
Жасаңыз Kubernetes кластерін өзекті нұсқада, егер бұл әлі жасалмаған болса.
Кластерді жасаған кезде Сыртқы IP тағайындау опциясын таңдаңыз.
Кластердің қалған параметрлерін өз қалауыңыз бойынша таңдаңыз.
-
Тексеріңіз, кластерде NGINX Ingress (
ingress-nginx) аддоны орнатылмаған болуы керек. Көрсету мақсатында Ingress-контроллері қолмен орнатылады. -
Тексеріңіз,
kubectlкөмегімен кластерге қосыла алуыңыз керек. -
Утилита әлі орнатылмаған болса, Helm орнатыңыз.
-
Утилита әлі орнатылмаған болса, curl орнатыңыз.
Осы қосымшаларға қолжетімділік Ingress-контроллері арқылы Ingress ресурсының көмегімен ұйымдастырылады.
Көрсету үшін NGINX-тен Cafe мысалындағы tea және coffee қосымшалары пайдаланылады. Әр қосымша ReplicaSet-тен, Deployment-тен және осы Deployment-ке сәйкес келетін Service-тен тұрады.
Демо-қосымшаларды жайып орналастыру үшін:
-
cafe.yaml манифесін жүктеп алыңыз.
-
Осы манифесті кластерде қолданыңыз:
kubectl apply -f ./cafe.yaml
Қосымшалар компоненттерінің күйін тексеру үшін команданы орындаңыз:
kubectl get svc,rs,deployment -n default
Команданың шығысы мынаған ұқсас болуы керек:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/coffee-svc ClusterIP ... <none> 80/TCP ...service/tea-svc ClusterIP ... <none> 80/TCP ...NAME DESIRED CURRENT READY AGEreplicaset.apps/coffee-7c86d7d67c 2 2 2 ...replicaset.apps/tea-5c457db9 3 3 3 ...NAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/coffee 2/2 2 2 ...deployment.apps/tea 3/3 3 3 ...
Орнату кезінде PROXY протоколын пайдалану режимін таңдаңыз, өйткені бұл TCP жүктеме балансировщигімен толыққанды өзара әрекеттесу үшін қажет. Егер Ingress-контроллерін осы протоколды қолдамай орнатсаңыз, онда контроллер сұраулардың тікелей көзі туралы ақпаратты қамтитын тақырыптарды өңдей алмайды.
PROXY протоколын қолдайтын NGINX Ingress Controller орнату үшін:
-
NGINX үшін Helm-репозиторийін қосыңыз:
Linux/macOSWindowshelm repo add nginx-stable https://helm.nginx.com/stablehelm repo update -
Команданы орындап, PROXY протоколын қолдайтын Ingress-контроллерін орнатыңыз:
helm install nginx-ingress-tcp nginx-stable/nginx-ingress --set-string 'controller.config.entries.use-proxy-protocol=true' --create-namespace --namespace example-nginx-ingress-tcp -
Ingress-контроллерінің орнатылуы аяқталғанын және контроллердің сыртқы IP-мекенжай алғанын күтіңіз.
Ingress-контроллерінің күйін тексеру үшін команданы орындаңыз:
kubectl get svc -n example-nginx-ingress-tcpКоманданың шығысы мынаған ұқсас болуы керек:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-ingress-tcp-nginx-ingress LoadBalancer ... <балансировщикке тағайындалған IP-мекенжай> ... ...
Браузерде http://<балансировщикке тағайындалған IP-мекенжай> адресіне өтіп, Ingress-контроллерінің жұмысын тексеріңіз. Егер контроллер дұрыс бапталса, HTTP 404 күйі бар бет көрсетіледі.
Ingress ресурсы coffee-svc және tea-svc сервистерін Ingress-контроллері арқылы жариялап, осылайша қосымшаларға қолжетімділік ұсынады.
Төменде Ingress-контроллерінде SSL/TLS-сессияларды терминирлей отырып Ingress ресурсын қалай жасау керегі көрсетіледі.
Ingress ресурсін жасау үшін:
-
Сертификат туралы деректерді қамтитын Kubernetes секретін жасаңыз. Ол HTTPS-трафикпен жұмыс істеген кезде Ingress-контроллері тарапынан пайдаланылады.
Бұл секретте
cafe.example.comдоменінде жарияланған қосымшаларға қол жеткізу үшін пайдаланылатын NGINX өздігінен қол қойылған сертификатының жария және жабық бөліктері бар. -
cafe-secret.yaml манифесін жүктеп алыңыз.
-
Осы манифесті кластерде қолданыңыз:
kubectl apply -f ./cafe-secret.yamlcafe-secretсекреті жасалады. -
Келесі команданы орындап, секреттің сәтті жасалғанын тексеріңіз:
kubectl describe secret cafe-secretСекрет туралы негізгі ақпарат шығарылады.
-
cafe.example.comхостына келетін сұрауларды өңдейтін Ingress ресурсін жасаңыз:-
cafe-ingress.yaml манифесін жүктеп алыңыз.
-
Осы манифесті кластерде қолданыңыз:
kubectl apply -f ./cafe-ingress.yamlcafe-ingressIngress ресурсы жасалады.
Келесі команданы орындап, ресурс сәтті жасалғанын тексеріңіз:
kubectl describe ingress cafe-ingressКоманданың шығысы мынаған ұқсас болуы керек:
Name: cafe-ingressLabels: <none>Namespace: defaultAddress: <балансировщикке тағайындалған IP-мекенжай>Ingress Class: nginxDefault backend: <default>TLS:cafe-secret terminates cafe.example.comRules:Host Path Backends---- ---- --------cafe.example.com/tea tea-svc:80 (...)/coffee coffee-svc:80 (...)Балансировщикке тағайындалған Ingress IP-мекенжайы Ingress-контроллеріне тағайындалған IP-мекенжаймен сәйкес келуі керек екеніне назар аударыңыз. Бұл мекенжай VK Cloud платформасының TCP-балансировщигіне тиесілі, ол кіріс трафикті Ingress-контроллеріне бағыттайды.
-
-
defaultаттар кеңістігіндегі барлық подтар тізімін алып,teaжәнеcoffeeатаулары бар подтардың бар екеніне көз жеткізіңіз:kubectl get pods -
Команданы орындаңыз:
CoffeeTeacurl -k --resolve cafe.example.com:443:<Ingress IP-мекенжайы> https://cafe.example.com/coffeeСұрауға
coffeeішіндегі екі подтың бірі жауап беруі керек. Жауапта жауап берген подтың атауы (Server name) болады, мысалы:Server address: ...:8080Server name: coffee-7c86d7d67c-zsmwzDate: ...URI: /coffeeRequest ID: ...Осындай жауаптардың алынуы Ingress-контроллерінің дұрыс бапталғанын білдіреді:
- VK Cloud TCP жүктеме балансировщигімен өзара әрекеттеседі;
- SSL/TLS-сессияларын терминирлейді;
- жайып орналастырылған қосымшаларға сәйкес келетін сервистерге қолжетімділік береді.
Жұмыс істеп тұрған кластер тарифтеледі және есептеу ресурстарын тұтынады. Егер Ingress-контроллерінің жұмысын тексеру үшін жасалған Kubernetes ресурстары сізге енді қажет болмаса, оларды жойыңыз:
-
Манифест файлдарында сипатталған ресурстарды,
example-nginx-ingress-tcpқосымшасын, сондай-ақexample-nginx-ingress-tcpаттар кеңістігін және онымен байланысты ресурстарды жойыңыз:Linux/macOSWindowskubectl delete -f ./cafe-ingress.yamlkubectl delete -f ./cafe-secret.yamlkubectl delete -f ./cafe.yamlhelm uninstall nginx-ingress-tcp -n example-nginx-ingress-tcpkubectl delete namespace example-nginx-ingress-tcp -
Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.