Вот мой пример использования: у нас есть клиент, где каждая из его услуг должна быть доступна на выделенном поддомене.Соглашение об именах должно быть service-name.customerdomain.com
, где service-name
- развернутая служба, а customerdomain.com
- домен клиента.Когда создается новая служба, она должна быть доступна автоматически , т. Е. После развертывания службы service-name
в кластере она должна быть доступна на service-name.customerdomain.com
.
Я знаю,это можно сделать вручную , выполнив следующие действия:
Добавить входящий контроллер в кластер
Создать подстановочный знак DNS *.customerdomain.com
и укажите его для контроллера Ingress
- Сопоставьте поддомен для каждой работающей службы.Для каждой существующей службы из кластера создайте отдельный раздел в файле ресурсов Ingress
ingress.yaml
, например,
Spec:
rules:
- host: helloworld.awesome-customer.com
http:
paths:
- path: /*
backend:
serviceName: helloworld
servicePort: 8080
- host: nextfineapp.awesome-customer.com
http:
paths:
- path: /*
backend:
serviceName: nextfineapp
servicePort: 8080
- [...]
Добавить файл ресурсов Ingress новый раздел
-host
для каждой вновь развернутой службы Удалить файл ресурсов Ingress
-host
раздел для каждой удаленной службы
В основном - я бы хотелавтоматизировать шаги 4 и 5. Я знаю, что Ingress не может справиться с этим сам, однако, прибегая к помощи, кажется, что обновление файла ingress.yaml
при каждом развертывании новой службы / удалении существующей может быть достигнуто с помощью Helm и файлы его значений.
Я был бы признателен, если бы можно было указать / описать пример решения.