【问题标题】:Disable external authentication on Kubernetes Ingress在 Kubernetes Ingress 上禁用外部身份验证
【发布时间】:2021-10-21 21:45:23
【问题描述】:

我运行一个裸机 Kubernetes 集群,并希望将服务映射到 URL 而不是端口(目前我使用的是 NodePort)。

为了实现这一点,我尝试安装 IngressController 以便能够部署包含路由的 Ingress 对象。

我通过 helm 安装了IngressController

helm install my-ingress helm install my-ingress stable/nginx-ingress

到目前为止,部署工作正常。为了只使用节点的域名,我在nginx-ingress-controller 中启用了hostNetwork: true

然后,我使用以下定义创建了一个 Ingress 部署:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

这也部署得很好。最后,当我尝试访问http://my-url.com/testpath 时,我得到一个登录提示。我没有在任何地方设置登录凭据,也不打算这样做,因为这些服务应该是公开可用的和/或自己处理身份验证。

如何禁用此行为?我想像使用NodePort 解决方案一样访问这些服务。

【问题讨论】:

  • 这种行为不是来自入口。可以对入口进行基本身份验证,但您需要明确配置您没有的。
  • 你知道它的来源吗?当我卸载 Helm 部署时它不会发生
  • 最有可能来自my-service
  • 这里有更新吗?
  • 事实证明,在我部署 Longhorn 期间已经启动了另一个 Ingress,这也强制对另一个 Ingress 进行基本身份验证。我清理了所有部署,它现在可以工作了:)

标签: nginx kubernetes kubernetes-ingress


【解决方案1】:

为了澄清我将答案(来自 cmets 区域)作为社区 Wiki 发布的情况。

这里的问题不在于配置,而在于环境 - 在 Longhorn 部署期间,Pod 中运行了另一个入口。这种情况导致对两者都强制进行基本身份验证。

要解决该问题,必须清理所有部署。

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2019-10-08
    • 2020-11-30
    • 2010-12-25
    相关资源
    最近更新 更多