Kubernetes Services Architecture
Я пытаюсь подключить прямой трафик NGINX к различным частям моего приложения через файл конфигурации, но я не могу понять это на всю жизнь. Вот моя текущая настройка:
http-service (loadbalancer)
NGINX (port 80)
website-service (10.27.246.107, port 8000, targetPort 8000, selector 'run: website')
website (label 'run: website', containerPort 8000)
NGINX Conf
upstream website{
server 10.27.246.107:8000
}
На данный момент это обычный модуль nginx, использующий containerPort 80.
Я иду об этом правильным путем?
1 ответ
Лучший способ направить трафик в другую часть вашего приложения - использовать Ingress. В Ingress вы можете описать все ваши пути во все части вашего приложения. Это будет выглядеть так:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /foo
backend:
serviceName: website1
servicePort: 80
- path: /bar
backend:
serviceName: website2
servicePort: 3368
На самом деле Ingress-контроллер основан на Nginx, но в любом случае вы можете выбрать другой движок, например, HAproxy. Ingress был разработан для использования в Kubernetes и имеет больше возможностей в Kubernetes. Например, ваш сайт вверх по течению должен быть описан как услуга в Kubernetes:
kind: Service
apiVersion: v1
metadata:
name: website1
spec:
selector:
app: python-web-site
ports:
- protocol: TCP
port: 80
targetPort: 8080
В любом случае, вы можете направлять трафик по Nginx и показывать его всему миру, но лучше всего использовать Ingress в Kubernetes.