【问题标题】:How to deploy multiple frontend application on same kubernetes cluster with only one hostname如何在同一个 kubernetes 集群上部署多个前端应用程序,只有一个主机名
【发布时间】:2019-11-06 06:53:47
【问题描述】:

我有 3 个 Angular 应用程序部署在 Kubernetes 上。我正在尝试仅使用一个主机名和不同的路径来运行所有 3 个。这是我的入口。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  name: test-ingress-deployment
  namespace: my-namespace
spec:
  tls:
  - hosts:
    - dns-name.eastus.cloudapp.azure.com
    secretName: aks-ingress-tls
  rules:
  - host: dns-name.eastus.cloudapp.azure.com
    http:
      paths:
      - backend:
          serviceName: ui-svc
          servicePort: 80
        path: /(.*)
      - backend:
          serviceName: ui-svc-one
          servicePort: 80
        path: /one/?(.*)
      - backend:
          serviceName: ui-svc-two
          servicePort: 80
        path: /two/?(.*)

所有这 3 个服务都位于不同的命名空间中。在应用入口后,我尝试命中的每个端点都得到 503。

【问题讨论】:

    标签: kubernetes kubernetes-ingress azure-aks


    【解决方案1】:

    关于这方面的文档很少,至少我找不到任何东西,除了 Github 问题对这个问题有所了解。但据我所知,K8s 有意避免跨命名空间访问,这将是权限提升攻击的主要来源。

    据我所知,您确实有两种选择:

    1. 您可以在kube-system 命名空间内运行您的入口和入口控制器。但不建议这样做,因为kube-system 仅适用于 K8s 组件,而且很可能会产生安全问题。
    2. 您可以在服务所在的命名空间中拥有入口。但是您需要一个入口控制器,它允许合并并非全部支持 afaik 的规则。

    可能还有更多的解决方案,也许有更深入的 K8s 知识的人可以更深入地了解它。

    【讨论】:

      猜你喜欢
      • 2019-02-17
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 2020-07-13
      • 1970-01-01
      • 2019-09-14
      相关资源
      最近更新 更多