0

我正在尝试通过配置文件将 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
  }

这是目前使用 containerPort 80 的普通 nginx pod。

我会以正确的方式解决这个问题吗?

4

1 回答 1

0

将流量路由到应用程序不同部分的最佳方法是使用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-controller 是基于 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 路由流量并将其公开,但最佳实践是在 Kubernetes 中使用 Ingress。

于 2018-04-06T15:22:18.057 回答