【问题标题】:Using ingress to access external service with contextPath使用 ingress 通过 contextPath 访问外部服务
【发布时间】:2020-09-03 06:06:10
【问题描述】:

我有一个 Wildfly,其中包含一组应用程序,而不是在 kubernetes 集群中运行。 假设一个是 http://wildfly-external/FOO/

从集群内部,我希望我的集群应用程序可以在不知道 wildfly 上的 contextPath 的情况下到达 FOO。

我们的方法是为这个包含路径的服务生成一个 Endpint、Service 和一个 Ingress

service.yaml

apiVersion: v1
kind: Service
metadata:
    annotations:
        meta.helm.sh/release-name: dns
        meta.helm.sh/release-namespace: test
    creationTimestamp: "2020-08-31T17:32:08Z"
    labels:
        app.kubernetes.io/instance: dns
        app.kubernetes.io/managed-by: Helm
        app.kubernetes.io/name: foo
        helm.sh/chart: dns-1.0.0-snapshot
    name: foo
    namespace: test
    resourceVersion: "151848872"
    selfLink: /api/v1/namespaces/test/services/foo
    uid: e5607cd4-ebaf-11ea-9f17-005056a7cff9
spec:
    clusterIP: 10.200.149.146
    ports:
        - name: foo
          port: 80
          protocol: TCP
          targetPort: 13000
    sessionAffinity: None
    type: ClusterIP
status:
    loadBalancer: {}

ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    annotations:
        meta.helm.sh/release-name: dns
        meta.helm.sh/release-namespace: test
    creationTimestamp: "2020-08-31T17:32:08Z"
    generation: 1
    labels:
        app.kubernetes.io/instance: dns
        app.kubernetes.io/managed-by: Helm
        app.kubernetes.io/name: foo
        helm.sh/chart: dns-1.0.0-snapshot
    name: foo
    namespace: test
    resourceVersion: "151848901"
    selfLink: /apis/extensions/v1beta1/namespaces/test/ingresses/foo
    uid: e56cc8c9-ebaf-11ea-9f17-005056a7cff9
spec:
    rules:
        - http:
              paths:
                  - backend:
                        serviceName: foo
                        servicePort: http
                    path: /FOO
status:
    loadBalancer:
        ingress:
            - ip: 10.6.1.1

不幸的是,当在 pod 中 curl http//foo/ 时,我到达 http://wildfly 的 Wildfly 起始页,而不是 http://wildfly/FOO 的应用程序。 这看起来像我通过 http://foo/ 访问服务而不是通过入口。

有可能做,我想做什么?有什么提示吗?

【问题讨论】:

    标签: kubernetes ibm-cloud kubernetes-helm kubernetes-ingress


    【解决方案1】:

    在我看来,入口在服务之上。 顺序是浏览器->入口(应用负载均衡)->服务。现在 url http//foo/ 是访问服务而不是入口。您可以使用入口将上下文映射到ingress rewrite 的服务,但您需要使用入口的完整主机名访问 url。 谢谢,

    【讨论】:

    • 我是否理解正确,foo 将始终访问该服务。要访问 Ingress,我需要访问完整的 url,例如 foo.cluster.xy.com ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多