单个K8s集群和Nginx控制器上的多个环境

时间:2020-04-20 13:14:48

标签: nginx kubernetes nginx-ingress

我们希望拥有1个k8s集群,并通过将开发人员的环境与URI“ / developerName”分开来使每个开发人员能够部署其环境,以及一个NS,其中应用程序的每次部署都将部署在不同的NS上。

该应用程序是基于旧版tomcat的网络应用程序。

我正在寻找一种好的方法,可以根据URL将每个开发人员的流量路由到不同的部署。

有1个限制,其中应用程序仅期望URL中的应用程序名称。 即example.com/username/appname无法正常运行,因为该应用仅要求example.com/appname

我已经成功部署了Nginx入口控制器,并在不使用路径中的“ / developername”时检查了它是否正常工作

1 个答案:

答案 0 :(得分:2)

您可以使用入口资源。为每个环境配置不同的主机名:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: developer1
spec:
  rules:
    - host: developer1.mytestdomain.com
      http:
        paths:
          - backend:
              serviceName: my-tomcat-service
              servicePort: 8080
            path: /
  tls:
    - hosts:
        - developer1.mytestdomain.com
      secretName: mysslsecret

然后在*.mytestdomai.com上设置一个通配符域。因此,您不必在每次构建环境时都添加一个子域。如果不需要tls,则跳过https部分。