У меня есть кластер GKE, на котором работает несколько балансировщиков нагрузки и десятки сайтов, каждый из которых работает в своем собственном развертывании в качестве clusterip.
То, что я хотел бы сделать, это ввести путь включения для включения различных конфигураций сайта для каждого балансировщика нагрузки (входной контроллер nginx).Я не использую вход kubernetes, скорее различные балансировщики нагрузки.У меня есть общий путь к данным, который смонтирован и содержит все настройки сервера {} nginx.
Все, что я не могу понять, это как заставить балансировщик нагрузки видеть их.Я почти уверен, что это связано с записью configmap, но я считаю, что мой синтаксис неправильный.
Просто чтобы подтвердить, что я знаю, что если я смогу получить это, то мое решение будет работать так, как если бы я вошел в систему балансировки нагрузки и перезагрузил nginx с другой конфигурацией, которая работает.
Мне просто нужно, чтобы это происходило само по себе в зависимости от другого пути для конфигурации nginx ingress controller.Я использую разные классы в каждом из nginx-ingress-контроллеров, как это
metadata:
annotations:
kubernetes.io/ingress.class: nginx-1
, и в соответствующей конфигурации я пытаюсь выяснить синтаксис, чтобы он мог видеть эти различные конфигурации
nginx.ingress.kubernetes.io / configuration-snippet: '{"http": "{include / data / nginx / sites-enabled / *;}"}'
Я даже пыталсявключить файл конфигурации более высокого уровня для nginx, внутри которого были строки http include.
Установка, которую я использовал, была helm from
https://kubernetes.github.io/ingress-nginx/deploy/
Вот примерКонфиг, который я пробовал
apiVersion: v1
data:
enable-vts-status: "false"
kind: ConfigMap
metadata:
annotations:
kubernetes.io/ingress.class: nginx-1
nginx.ingress.kubernetes.io/server-snippet: |
http{
include /data/nginx/sites-enabled/*;
}
creationTimestamp: 2018-12-13T21:00:53Z
labels:
app: nginx-ingress
chart: nginx-ingress-1.0.2
component: controller
heritage: Tiller
release: nginx-controller-1
name: nginx-controller-1-nginx-ingress-controller
namespace: default
resourceVersion: "312253"
selfLink: /api/v1/namespaces/default/configmaps/nginx-controller-1-nginx-ingress-controller
Я также пытался поместить его в раздел данных.
data:
enable-vts-status: "false"
nginx.conf: |
http{
include /data/nginx/sites-enabled/*;
}
Спасибо за любую помощь
Обновление:
Это не ответ, но позволяет мне продолжить и использовать эти множественные входы nginx в одном кластере kubernetes.Надеюсь, что это поможет кому-то еще в моих руках ..
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: mysite-ingress
annotations:
kubernetes.io/ingress.class: "nginx-2"
custom.nginx.org/rate-limiting: "on"
custom.nginx.org/rate-limiting-rate: "5r/s"
custom.nginx.org/rate-limiting-burst: "1"
spec:
rules:
- host: "mysite.com"
http:
paths:
- path: /
backend:
serviceName: mysiteservicename
servicePort: 8080
Выполнение вышеизложенного изменяет nginx.conf и, что еще лучше, автоматически обновляет конфигурацию, которую я считаю, не снимая контроллер.
Похоже, что аннотация класса ingress работает для нескольких контроллеров nginx-ingress.В конце мне понадобилась
- nginx-ingress-controller рабочая нагрузка (которая также создает внутреннюю рабочую нагрузку по умолчанию и службу балансировки нагрузки)
- рабочая нагрузка развертывания ядра asp.net (или что-то еще)ваша служба)
- служба IP-кластера (раскрытие вашего внутреннего развертывания)
- служба Ingress, которая связывает записи nginx.conf с соответствующим ingress-контроллером