我想让我的身份验证服务可以使用本地域
auth.ticketing.dev
访问在“development”命名空间中运行的 Next.js Web 客户端。该服务当前正在“fusionauth”命名空间中运行,并通过 auth.ticketing.dev
的入口暴露给我的系统。我正在使用 ranhcer 桌面和 ingress-nginx 运行 kubernetes。 Pod 可以使用 http://service.namespace.svc.cluster.local:9011
url 访问服务,但不能使用子域。 NextAuthJS 库用于连接到身份验证服务器(FusionAuth)。
身份验证服务(FusionAuth)具有以下入口 helm 值
ingress:
enabled: true
annotations:
nginx.ingress.kubernetes.io/use-regex: 'true'
ingressClassName: nginx
paths:
- path: /?(.*)
pathType: ImplementationSpecific
extraPaths: []
hosts:
- auth.ticketing.dev
tls: []
这里的问题是 Ingress 对象是 namespaced 这意味着它与 相同的命名空间 内的服务进行交互。此外,每个主机/域仅允许一个入口对象。
但是,您有两个不同的名称空间...我想,您设法使入口正常工作,我回到您的主要问题:
Kubernetes 集群中网络可以通过不同方式完成,但推荐且最常见的方法是使用其内置 DNS 名称。
Pod 拥有自己的 DNS 名称,但建议您通过服务的 DNS 名称访问集群中的另一个应用程序。要将请求从
development
命名空间发送到不同命名空间
fusionauth
中的应用程序,请使用内置域名服务的命名空间部分,即
<app-service-name>.fusionauth.svc.cluster.local:<port>