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

Multiple environment on single K8s cluster and Nginx controller

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

该应用程序是基于 tomcat 的遗留 Web 应用程序。

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

有 1 个限制,应用程序只需要 URL 中的应用程序名称。 即 example.com/username/appname 无法正常工作,因为该应用只需要 example.com/appname

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

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

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 上设置通配符域。因此,您不必每次都添加子域并构建环境。如果不需要 https,请跳过 tls 部分。