Kubernetes Serenety 测试 Ingress 不适用于本地主机

Kubernetes Serenety Tests Ingress does not work with localhost

我目前正在进行本地端到端测试。

设置:

为了清楚起见,并且因为我们将使用不同的阶段,我们希望在我们所有的 e2e 项目中将重定向 url 结尾从“testing”更改为“localhost”。

主机文件条目

当前

[MY IP ADDRESS] e2e.myproject.testing

成为

[MY IP ADDRESS] e2e.myproject.localhost

那个

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  labels:
    app: my-webclient
  name: my-webclient
  namespace: somenamespace
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "100m"
    nginx.ingress.kubernetes.io/app-root: "/app/"
spec:
  rules:
  - host: e2e.myproject.localhost
    http:
      paths:
      - backend:
          serviceName: my-myproject
          servicePort: 8080
        pathType: ImplementationSpecific

status:
  loadBalancer:
    ingress:
    - hostname: localhost

有趣的事实: 如果我 运行 我的测试在 url 和部署文件中带有后缀“testing”、“foobar”、“deadbeef”,一切正常。如果我用“本地主机”替换它,它就不起作用。我收到连接错误。

理论: 在主机文件中使用“localhost”以外的任何东西作为重定向 uris,入口指向我机器的 ip。但是,如果我使用本地主机,则入口或部署指向虚拟机的 ip,它们 运行ning in.

任何人都可以验证并知道解决方案吗?或许还能解决我们的一些相关问题^^'

为了澄清,我发布了社区 Wiki 答案。

为了解决该问题,您使用了 internal 而不是 localhost

正如您在评论部分所写:

It seems Docker uses "internal" as they top level domain-naming for local stuff, instead of localhost. So we thought we follow that workaround.

this documentation 中,可以在 Docker Desktop for Windows 中找到有关网络功能的信息。

另请参阅 this documentation 关于服务的 DNS 和 Pods。