如何在本地k8s中使用本地子域进行跨命名空间通信

问题描述 投票:0回答:1

我想让我的身份验证服务可以使用本地域

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)。

Here is an image of two service running in separate namespace in k8s. One service needs to communicate with the other

身份验证服务(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: []
kubernetes kubernetes-ingress
1个回答
0
投票

这里的问题是 Ingress 对象是 namespaced 这意味着它与 相同的命名空间 内的服务进行交互。此外,每个主机/域仅允许一个入口对象。

但是,您有两个不同的名称空间...我想,您设法使入口正常工作,我回到您的主要问题:

Kubernetes 集群中

网络可以通过不同方式完成,但推荐且最常见的方法是使用其内置 DNS 名称

Pod 拥有自己的 DNS 名称,但建议您通过服务的 DNS 名称访问集群中的另一个应用程序。

要将请求从

development

 命名空间发送到不同命名空间 
fusionauth
 中的应用程序,请使用内置域名服务的命名空间部分,即 
<app-service-name>.fusionauth.svc.cluster.local:<port>

    

© www.soinside.com 2019 - 2024. All rights reserved.