我运行一个裸机Kubernetes集群,希望将服务映射到url而不是端口(到目前为止我使用的是NodePort
)。
为了实现这一点,我尝试安装一个IngressController
,以便能够部署包含路由的入口对象。
我通过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
解决方案一样访问这些服务。
为了澄清这种情况,我将答案(来自评论区)发布在社区Wiki上。
这里的问题不是在配置中,而是在环境中——在Longhorn的部署期间,pod中运行了另一个入口。这种情况导致强制对两者进行基本身份验证。
为了解决这个问题,有必要清理所有的部署。