有没有办法在Kubernetes中进行基于名称的路由

时间:2019-04-02 11:17:47

标签: kubernetes

我们正在尝试对以HA(节点1和节点2)配置托管的JBoss Wildfly服务器上托管的一组Web应用程序进行docker化。 JBoss服务器前面有一个F5负载平衡器服务器,用于执行基于粘性会话的负载平衡。因此,就F5而言,它仅侦听一个端口(443)并将请求转发到JBoss节点1或节点2。因此,F5不需要具有有关单独应用程序的任何信息(例如{ {3}}和https://domain.name/app1)托管在JBoss服务器上。

现在,我们将每个Web应用程序码头化到其自己的容器中,并包装为Kubernettes吊舱。在Kubernettes服务层上,每个应用程序(/ app1和/ app2)都托管在单独的端口上。因此,每个应用程序都有自己的端口。

我有哪些负载平衡体系结构选择,您能否指出一些相关的阅读材料? 1)F5是否可以以某种方式使用有关哪个URL上下文路径(/ app1或/ app2)的元数据,并将其路由到Kubernettes服务层上的适当端口? 2)如果F5无法在F5上进行任何基于上下文路径的路由,那么可以通过一些Kuberneetes配置来完成一些此应用程序到端口的路由吗?

1 个答案:

答案 0 :(得分:2)

您可能需要一个入口控制器。您可以通过https://kubernetes.io/docs/concepts/services-networking/ingress/

获取有关入口控制器的详细信息

Typical Ingress looks like this

“在Kubernetes服务层上,每个应用程序(/ app1和/ app2)都托管在单独的端口上。因此,每个应用程序都有自己的端口。” 下面的给定示例适用于入口控制器,考虑您的服务名称为app1为app1-svc,app2为app2-svc

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: foo-https
  annotations:
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/secure-backends: "true"
spec:
  tls:
   - hosts:
     - domain.name
  rules:
  - host: domain.name 
    http:
      paths:
      - path: /app1
        backend:
          serviceName: app1-svc
          servicePort: 443
      - path: /app2
        backend:
          serviceName: app2-svc
          servicePort: 443