Ingress-контроллерін HTTP-балансировщикпен жайып орналастыру
Ingress-контроллерін VK Cloud платформасының HTTP жүктеме балансировщигімен бірге жайып орналастыруға болады. Төменде мысал ретінде контроллердің жұмысқа қабілеттілігін тексеру үшін қарапайым демо-қосымшалар мен Ingress ресурсы жасалады.
Төменде NGINX Ingress Controller жайып орналастырылады деп болжанады. Алайда ұсынылған тәсілдерді басқа Ingress-контроллерлерге, мысалы, Traefik-ке де бейімдеуге болады. Мұндай жайып орналастыру кезінде Ingress үшін жүктеме балансировщигінің ережелеріне worker-түйіндерді қолмен қосу қажет. Бұл worker-топ өлшемін қолмен өзгерткенде де, автомасштабтауды қосқанда да дұрыс.
-
Жасаңыз 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 ...
-
NGINX үшін Helm-репозиторийін қосыңыз:
Linux/macOSWindowshelm repo add nginx-stable https://helm.nginx.com/stablehelm repo update -
Команданы орындап,
NodePortсервисімен Ingress-контроллерін орнатыңыз:Linux/macOSWindowshelm install nginx-ingress-http nginx-stable/nginx-ingress \--create-namespace --namespace example-nginx-ingress-http \--set controller.service.type=NodePort \--set controller.service.httpsPort.enable=false \--set controller.service.externalTrafficPolicy=Local -
Ingress-контроллерінің орнатылуы аяқталғанын және контроллерге порт тағайындалғанын күтіңіз.
Ingress-контроллерінің күйін тексеру үшін команданы орындаңыз:
kubectl get svc -n example-nginx-ingress-httpКоманданың шығысы мынаған ұқсас болуы керек:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEnginx-ingress-http-nginx-ingress NodePort ... <none> 80:<тағайындалған порт>/TCP ...
HTTP жүктеме балансировщигі SSL/TLS қосылыстарын терминирлейді және тек HTTP-трафикті Ingress-контроллеріне қайта бағыттайды.
Балансировщикті баптау үшін:
-
Қажетті деректерді жинаңыз:
- Кластер түйіндері орналасқан желі мен ішкі желінің атаулары.
- Кластердің master-түйіндері мен worker-түйіндеріне сәйкес келетін Cloud Servers сервисі инстанстарының атаулары.
- Алдыңғы қадамда Ingress-контроллеріне тағайындалған порт нөмірі.
-
Балансировщик жасаңыз:
- VK Cloud жеке кабинетіне өтіңіз.
- Қажетті кластер орналасқан жобаны таңдаңыз.
- Виртуалды желілер → Жүктеме балансировщиктері бөліміне өтіңіз.
- Қосу батырмасын басыңыз.
- Ашылған терезеде:
-
балансировщик атауын орнатыңыз (кез келген).
-
Кластердегілермен бірдей желі мен ішкі желіні таңдаңыз.
-
DNS атауын орнатыңыз (кез келген).
-
Сыртқы IP тағайындау опциясының қосулы екеніне көз жеткізіңіз.
-
Әрбір трафик түрі үшін өңдеу параметрлерін орнатыңыз:
HTTP-трафик үшінHTTPS-трафик үшін-
Балансировка ережелері блогында + Ереже қосу сілтемесін басыңыз.
-
Тағайындау протоколы ретінде
HTTPтаңдаңыз, оған Ingress-контроллеріне тағайындалған портты орнатыңыз. -
Рұқсат етілген CIDR блогында + Мекенжай қосу сілтемесін басыңыз.
0.0.0.0/0енгізіңіз. -
X-Forwarded-For тақырыбын жіберу опциясын таңдаңыз.
-
Келесі инстанстарға қолдану блогында кластердің master-түйіндері мен worker-түйіндеріне сәйкес келетін барлық Cloud Servers сервисі инстанстарын қосыңыз.
Барлық инстанстар үшін
1мәніне тең бірдей салмақтарды орнатыңыз. -
Келесі қадам батырмасын басыңыз.
-
Қосу батырмасын басыңыз.
-
-
Балансировщикті жасау операциясы басталады, ол біраз уақыт алады.
-
Балансировщик жасалғаннан кейін оның жария IP-мекенжайын көшіріп алыңыз, ол Ingress арқылы жарияланған ресурстарға қол жеткізу үшін қажет болады.
Ingress ресурсы coffee-svc және tea-svc сервистерін cafe.example.com доменінде Ingress-контроллері арқылы жариялап, осылайша қосымшаларға қолжетімділік ұсынады.
Төменде бұған дейін бапталған HTTP жүктеме балансировщигінен келетін тек HTTP-трафикпен жұмыс істейтін Ingress ресурсын қалай жасау керегі көрсетіледі:
-
cafe-ingress.yamlманифест файлын келесі мазмұнмен жасаңыз: -
Осы манифесті кластерде қолданыңыз:
kubectl apply -f ./cafe-ingress.yamlcafe-ingressIngress ресурсы жасалады. -
Келесі команданы орындап, ресурс сәтті жасалғанын тексеріңіз:
kubectl describe ingress cafe-ingressКоманданың шығысы мынаған ұқсас болуы керек:
Name: cafe-ingress-httpLabels: <none>Namespace: defaultAddress:Ingress Class: nginxDefault backend: <default>Rules:Host Path Backends---- ---- --------cafe.example.com/tea tea-svc:80 (10.100.54.15:8080,10.100.54.16:8080,10.100.54.17:8080)/coffee coffee-svc:80 (10.100.54.13:8080,10.100.54.14:8080)
-
defaultаттар кеңістігіндегі барлық подтар тізімін алып,teaжәнеcoffeeатаулары бар подтардың бар екеніне көз жеткізіңіз:kubectl get pods -
Команданы орындаңыз:
CoffeeTeacurl -k --resolve cafe.example.com:443:<HTTP-балансировщиктің жария IP-мекенжайы> https://cafe.example.com/coffeeСұрауға
coffeeішіндегі екі подтың бірі жауап беруі керек. Жауапта жауап берген подтың атауы (Server name) болады, мысалы:Server address: ...:8080Server name: coffee-7c86d7d67c-zsmwzDate: ...URI: /coffeeRequest ID: ...Осындай жауаптардың алынуы Ingress-контроллерінің дұрыс бапталғанын білдіреді:
- VK Cloud HTTP жүктеме балансировщигімен өзара әрекеттеседі (ол SSL/TLS-сессияларын терминирлейді);
- жайып орналастырылған қосымшаларға сәйкес келетін сервистерге қолжетімділік береді.
Жұмыс істеп тұрған кластер тарифтеледі және есептеу ресурстарын тұтынады. Егер Ingress-контроллерінің жұмысын тексеру үшін жасалған Kubernetes ресурстары сізге енді қажет болмаса, оларды жойыңыз:
-
Манифест файлдарында сипатталған ресурстарды,
example-nginx-ingress-httpқосымшасын, сондай-ақexample-nginx-ingress-httpаттар кеңістігін және онымен байланысты ресурстарды жойыңыз:Linux/macOSWindowskubectl delete -f ./cafe-ingress.yamlkubectl delete -f ./cafe.yamlhelm uninstall nginx-ingress-http -n example-nginx-ingress-httpkubectl delete namespace example-nginx-ingress-http -
Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.