- Работа
- Linux
- Kubernetes
- ingress-nginx
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
Применяем изменения. И пробуем подключиться.
[ Править ]