Хостинг-провайдеры Kubernetes обычно не предоставляют вам прямой доступ к поддержке etcd
, поэтому вам лучше всего выбрать API Kubernetes для ресурсов, которые вас интересуют, и сгенерировать вашу конфигурацию.
Именно это и делает входной контроллер - отслеживает изменения в ресурсах Kubernetes и генерирует конфигурацию для балансировщика нагрузки, такого как nginx.
Один из контроллеров nginx позволяет вам полностью заменить используемый шаблон на свой собственный.
Шаблон NGINX находится в файле /etc / nginx / template / nginx.tmpl.
Используя том, можно использовать пользовательский шаблон.Это включает в себя использование Configmap в качестве источника шаблона
volumeMounts:
- mountPath: /etc/nginx/template
name: nginx-template-volume
readOnly: true
volumes:
- name: nginx-template-volume
configMap:
name: nginx-template
items:
- key: nginx.tmpl
path: nginx.tmpl
Вы можете развернуть версию входного контроллера nginx в пользовательском классе , например nginx-legacy
, так что это не так.не пытайтесь выставлять сервисы, ожидающие нормального входа nginx.
Для этого параметр --ingress-class должен быть изменен на уникальное для кластера значение в определении контроллера репликации.
spec:
template:
spec:
containers:
- name: nginx-ingress-legacy-controller
args:
- /nginx-ingress-controller
- '--election-id=ingress-controller-leader-internal'
- '--ingress-class=nginx-legacy'
- '--configmap=ingress/nginx-ingress-internal-controller'
А затем аннотируйте устаревшие сервисы для назначения ресурсов этому входу, используя:
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "nginx-legacy"