Обратный прокси-сервер Kubernetes Nginx включает путь в configmap
У меня есть кластер GKE, на котором работает несколько балансировщиков нагрузки и десятки сайтов, каждый из которых работает в своем собственном развертывании в виде кластера.
То, что я хотел бы сделать, это ввести путь включения для включения различных конфигураций сайта для каждого балансировщика нагрузки (контроллер входа 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-контроллером