【问题标题】:How to expose multiple application in kubernetes with same host via ingress如何通过入口在具有相同主机的 Kubernetes 中公开多个应用程序
【发布时间】:2020-06-11 05:20:38
【问题描述】:

我有两个独立的应用程序,我通过 helm 部署并拥有不同的 SCM 存储库。我想使用 Openstack Loadbalancer DNS 通过入口公开它们。我的目标是访问两个应用程序,例如应用程序 1 的主机名:8000 和应用程序2 的主机名:8080。

有没有办法通过 traefik 或 kubernetes 来处理这个问题?

应用 1

service:
  type: NodePort
  port: 8000

networkPolicy:
  enabled: true

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: traefik
  hosts:
    - host: hostname -> just for example
      paths: [/]
  tls: []

应用 2

service:
  type: NodePort
  port: 8080

networkPolicy:
  enabled: true

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: traefik
  hosts:
    - host: hostname -> just for example
      paths: [/]
  tls: []

【问题讨论】:

    标签: kubernetes kubernetes-ingress traefik traefik-ingress


    【解决方案1】:
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: samehostexample
      annotations:
        kubernetes.io/ingress.class: traefik
        traefik.frontend.rule.type: PathPrefixStrip
    spec:
      rules:
      - host: hostname.com
        http:
          paths:
          - path: /service1path
            backend:
              serviceName: service1
              servicePort: 8000
          - path: /service2path
            backend:
              serviceName: service2
              servicePort: 8080
    

    【讨论】:

      【解决方案2】:

      如果你有一个主机

      apiVersion: extensions/v1beta1
          kind: Ingress
          metadata:
            name: staging-ingress
            annotations:
              kubernetes.io/ingress.class: "nginx"
          spec:
            rules:
            - host: test.example.com
              http:
                paths:
                - path: /
                  backend:service-1
                    servicePort: 80
                - path: /api
                  backend:
                    serviceName: service-2
                    servicePort: 80
      

      多个主机

      spec:
        rules:
        - host: test-webapp-example.com
          http:
            paths:
              - path: /
                backend:
                  serviceName: test-webapp-example
                  servicePort: 80
        - host: test-another-example.com
          http:
            paths:
              - path: /
                backend:
                  serviceName: test-webapp-somethingelse
                  servicePort: 80
      

      【讨论】:

      • 我有两个值和两个不同的 ingress.yaml.. 那么我应该为两者指定第一个示例吗?
      • @semural 如果您有相同的主机,您可以使用相同的示例,但是如果不同的主机 url,您可以使用第二个示例。
      猜你喜欢
      • 2019-04-09
      • 2019-06-18
      • 2020-03-09
      • 1970-01-01
      • 2016-05-13
      • 2017-06-27
      • 1970-01-01
      • 2020-06-15
      • 2020-01-23
      相关资源
      最近更新 更多