当前位置: 首页 > 知识库问答 >
问题:

Kubernetes子域配置

施飞雨
2023-03-14

我正在开发一个将在Kubernetes运行的SaaS应用程序。我们使用了一个将所有组件部署到集群中的Helm图表(为了简单起见,我们假设它是一个前端服务、一个后端和一个数据库)。应用程序架构是多租户的(我们有每个服务的一个实例,由所有租户共享),我们希望保持这种方式。我目前正在苦苦思索并想征求建议/最佳实践的是,如何为租户自动提供自定义子域?

    null

共有1个答案

姜玮
2023-03-14

注:由于这是一个更多的理论问题,我会给你一些Kubernetes工程师的观点,我把你的问题分块,以方便理解。

  • 关于您的多租户架构:保持“那样”是可以实现的。它简化了Kubernetes的结构,另一方面它更依赖于您的应用程序。

问题1:

    null
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: <ingress-name>
spec:
  rules:
  - host: client1.exampleapp.com
    http:
      paths:
      - path: /client1
        backend:
          serviceName: <main-service>
          servicePort: <main-service-port>

  - host: client2.exampleapp.com
    http:
      paths:
      - path: /client2
        backend:
          serviceName: <main-service>
          servicePort: <main-service-port>
    null
kubectl patch ingress demo-ingress --type "json" -p '[{"op":"add","path":"/spec/rules/-","value":{"host":"client3.exampleapp.com","http":{"paths":[{"path":"/client3","backend":{"serviceName":"main-service","servicePort":80}}]}}}]'

PoC:

$ kubectl get ingress
NAME           HOSTS                                           ADDRESS         PORTS   AGE
demo-ingress   client1.exampleapp.com,client2.exampleapp.com   192.168.39.39   80      15m

$ kubectl patch ingress demo-ingress --type "json" -p '[{"op":"add","path":"/spec/rules/-","value":{"host":"client3.exampleapp.com","http":{"paths":[{"path":"/client3","backend":{"serviceName":"main-service","servicePort":80}}]}}}]'
ingress.extensions/demo-ingress patched

$ kubectl describe ingress demo-ingress
Rules:
  Host                    Path  Backends
  ----                    ----  --------
  client1.exampleapp.com  
                          /client1   main-service:80 (<none>)
  client2.exampleapp.com  
                          /client2   main-service:80 (<none>)
  client3.exampleapp.com  
                          /client3   main-service:80 (<none>)

此规则将从子域传入的流量重定向到主应用程序内的子路径。

  • 此外,要添加TLS处理,请参阅:Nginx Ingress TLS Guide
    null
  • 我看不出有什么主要原因会成为一个问题。您只需要再一次使您的应用程序能够处理缩放,因为我相信从长远来看,您会希望您的应用程序能够缩放到多pod结构,以提供弹性可用性。

以上是我的2美分给你的问题,希望对你有所帮助!

 类似资料:
  • 以下是每个部署的潜在工作流: 创建feature-api-deployment.yml 创建feature-api-service.yml 使用新的子域规则更新ingress.yml:指定 但是枚举和维护所有的子域->服务映射将会因为分解部署而变得混乱,并且会创建大量的GCE后端(默认配额是5...)所以不太理想。

  • 我正在尝试设置K8s部署,ingress的控制器可以将服务定义为子域。i、 e.

  • 本文向大家介绍kubernetes作用领域总结,包括了kubernetes作用领域总结的使用技巧和注意事项,需要的朋友参考一下 kubernetes在容器编排大战中由于应用的可移植性以及支持混合云/多云部署方式上的灵活性。加上开放可扩展的理念,使得周边社区非常活跃。从既有调研结果看,kubernetes已成为容器编排领域的标准。但是它并不成熟,很多方面都大有可为,下面就是列举了一些方面: 1.集群

  • 问题内容: 我正在一个具有多个子域的站点上,其中一些应该具有自己的会话。 我想我已经解决了,但是注意到了一些我不理解的关于cookie处理的信息。我在文档中看不到有任何解释它的内容,因此我想我可以看看这里是否有人对此问题有所了解。 如果我只是这样做: 我最终得到了这样的会话cookie: subdomain.example.net 但是,如果我尝试自己设置Cookie域,无论是 或喜欢 我最终获得

  • 主要内容:示例子域是域名的扩展名,可以转发到URL或指向主机帐户或不同服务器中的IP地址和目录。 子域功能与主域名分开。 我们可以使用子域创建网站的区域。 示例 可以在网站上创建一个名为“移动端”的博客子域,例如:除了已经存在的 www.yiibai.com/m 之外,还可以通过URL - http://m.yiibai.com 访问该移动端网站。 理论上,我们可以为每个域名添加无限的子域名。 也可以添加多个子