如何在Kubernetes的Ingress中引用其他Namespace的Service?
解决Ingress跨命名空间关联Service的问题
要让部署在default命名空间的Ingress关联app命名空间的api-svc,只需在Ingress配置的backend.service节点下添加namespace: app字段即可。Kubernetes默认会优先查找Ingress自身所在命名空间的Service,显式指定namespace就能实现跨命名空间关联目标服务。
修改后的完整YAML配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: / name: api-ingress namespace: default # 显式指定Ingress所在命名空间,不指定默认也是default spec: rules: - http: paths: - path: /api pathType: Prefix backend: service: name: api-svc namespace: app # 新增该行,指定Service所属的命名空间 port: number: 8100
补充说明
- 若Ingress未指定
metadata.namespace,会默认部署到当前操作上下文的命名空间(此处为default),显式声明更清晰。 - 需确保
app命名空间下的api-svc已正常运行,同时Ingress Controller具备访问该命名空间Service的权限(默认RBAC规则下Ingress Controller通常拥有跨命名空间访问权限,若出现访问问题需检查RBAC配置)。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

