ingress-nginx

Немного заметок.

Официальная дока по установке https://kubernetes.github.io/ingress-nginx/deploy/
Для меня пока самый простой путь это скачать yaml файл, сделать там нужные правки и задеплоить его. Так и буду описывать.

Добавляем ресурс

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rabbit-control
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    # Разрешаем доступ только с определнных адресов     
    nginx.ingress.kubernetes.io/whitelist-source-range: 49.36.0.1/32
spec:
  # если не надо, убираем
  tls
  - hosts:
    - my.site.ru
    secretName: my-sert
  rules:
  - host: my.site.ru
    http:
      paths:
      - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: service-name
            port:
              number: 8080

Увеличиваем количество реплик

Ищем строку kind: Deployment
Далее spec и после него добавляем строчку

replicas: 3

Что бы nginx не запускался на одном и том же хосте добавляем конфиг в spec.template.spec

      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
                - key: app.kubernetes.io/name
                  operator: In
                  values:
                  - ingress-nginx
            topologyKey: kubernetes.io/hostname

Делаем проброс tcp портов в сервис

Настраиваем по доке https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/

После первой секции по созданию неймспейса добавляем конфиг

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  55671: "default/rabbitmq-cluster-prod:5671"
  55672: "default/rabbitmq-cluster-prod:5672"

Далее в kind: Service name: ingress-nginx-controller в секции ports добавляем порты

  - name: rabbit-tls
    port: 45671
    protocol: TCP
    targetPort: 45671
  - name: rabbit
    port: 45672
    protocol: TCP
    targetPort: 45672

В kind: Deployment в секции args добавляем еще один параметр

  - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services

Применяем изменения. И пробуем подключиться.

[ Править ]

@kiranananda