Як виконати Brownfield-деплоймент Ingress Controller для Azure Application Gateway
У цьому матеріалі розглянемо Brownfield-деплоймент Ingress Controller для Azure Application Gateway у кластері AKS. Якщо ви не знайомі з поняттями Greenfield та Brownfield деплойменту, радимо ознайомитися з частиною першою, де надано детальні пояснення обох підходів.
Що таке Brownfield-деплоймент?
У випадку Brownfield-деплойменту ми маємо:
- Вже існуючий кластер AKS.
- Вже створений Application Gateway.
Мета — інтегрувати існуючу інфраструктуру, включивши Ingress Controller Add-on у вже розгорнутий кластер AKS.
Крок 1: Створення ресурсної групи та кластера AKS
Якщо ви ще не маєте існуючих ресурсів, почніть із створення інфраструктури, яку надалі інтегруєте.
1. Увійдіть до Azure Portal.
2. Створіть Resource Group з ім’ям demo у регіоні Central India.
3. Створіть кластер AKS:
- Назва: demoAKS
- Розмір вузлів: Standard_D2s_v3
- Кількість вузлів: зменшити (наприклад, до 1 для демонстрації)
- Мережева модель: Azure CNI
- Вимкнути: Monitoring (Prometheus)
Після успішної валідації — натисніть Create.
Крок 2: Деплоймент тестового застосунку
Після створення кластеру:
1. Підключіться до кластера через Azure CLI:
az aks get-credentials —resource-group demo —name demoAKS
2. Перевірте доступність:
kubectl get pods
Результат: No resources found, що очікувано.
1. Створіть простий deployment + service:
- Тип сервісу: LoadBalancer (для публічного IP)
- Наприклад:
apiVersion: v1 kind: Service metadata: name: demo-service spec: type: LoadBalancer ports: — port: 80 selector: app: demo-app
2. Застосуйте маніфест:
kubectl apply -f demo-app.yaml
3. Дочекайтесь зовнішнього IP:
kubectl get services
4. Перевірте роботу в браузері за отриманою IP-адресою.
Крок 3: Створення Application Gateway
1. У порталі Azure створіть Application Gateway:
- Назва: appGatewayOne
- Tier: Standard v2 або WAF v2 (обов’язково для інтеграції з AKS)
- Публічна IP-адреса: Standard
- Створіть окремий subnet для Application Gateway (наприклад, appGatewaySubnet)
- Виберіть існуючий VNet, у якому знаходиться AKS.
У реальному середовищі рекомендовано використовувати окремі VNet для AKS та App Gateway з увімкненим peering.
2. Для створення необхідно задати:
- Тимчасовий backend pool
- Тимчасові backend settings
- Frontend listener
- Routing rule
Після валідації — натисніть Create.
Крок 4: Інтеграція AKS із Application Gateway
- Перейдіть до свого кластеру AKS → Networking → Application Gateway Ingress Controller.
- Натисніть Enable.
- Виберіть Existing Application Gateway.
- Виберіть створений App Gateway appGatewayOne та збережіть.
Після цього Azure автоматично:
- Розгорне Ingress Controller Pod у kube-system.
- Встановить зв’язок між API Server та App Gateway.
- Оновить конфігурацію backend, frontend, pools тощо.
Крок 5: Додавання ресурсу типу Ingress
1. Створіть новий YAML-файл з ресурсом Ingress, наприклад:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-ingress annotations: kubernetes.io/ingress.class: azure/application-gateway spec: rules: — http: paths: — path: / pathType: Prefix backend: service: name: demo-service port: number: 80
2. Застосуйте файл:
kubectl apply -f ingress.yaml
3. Перевірте:
kubectl get ingress
Ви побачите призначену публічну IP-адресу з Application Gateway.
Крок 6: Перевірка конфігурації App Gateway
1. У App Gateway перевірте:
- Backend pools
- HTTP settings
- Listeners
- Routing rules
Всі тимчасові значення були замінені на актуальні, отримані з Ingress ресурсу.
2. Для перевірки логів Ingress Controller:
kubectl get pods -n kube-system kubectl logs <pod-name> -n kube-system
Ви побачите журнали з деталями: IP-конфігурація, порти, маршрути.
Висновок
Таким чином, у Brownfield-деплойменті:
- Ви не створюєте все з нуля, а інтегруєте існуючу інфраструктуру.
- Ingress Controller автоматично конфігурує App Gateway.
- Можна легко масштабувати або змінювати маршрутизацію без ручного втручання в App Gateway.
Для порівняння з Greenfield-деплойментом — перегляньте першу частину нашого гайду.
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів