Обратный прокси-сервер 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-контроллером

0 ответов

Другие вопросы по тегам