kubernetes - 如何指向与入口不同的 ns 中的服务
问题描述
我正在考虑使用https://github.com/kubernetes-sigs/aws-load-balancer-controller创建一个 alb
假设我有两个命名空间kubernetes-dashboard
和otherns
.
在第一个命名空间中,我有一个名为的服务kubernetes-dashboard
,在第二个命名空间中,我有一个名为的服务otherservice
下面的入口会起作用吗?
入口.yml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: general-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS": 443}]'
alb.ingress.kubernetes.io/certificate-arn: <redacted>
alb.ingress.kubernetes.io/tags: Environment=staging,Team=dev
alb.ingress.kubernetes.io/healthcheck-path: /health
alb.ingress.kubernetes.io/healthcheck-interval-seconds: '300'
spec:
rules:
- host: k8s.acme.com
http:
paths:
- path: /*
backend:
serviceName: kubernetes-dashboard.kubernetes-dashboard
servicePort: 8080
- host: otherservice.acme.com
http:
paths:
- path: /*
backend:
serviceName: otherservice.otherns
servicePort: 80
解决方案
我发现这个问题有两种解决方案。
第二种解决方案对我不起作用,因为我使用的库不支持它。https://github.com/kubernetes-sigs/aws-load-balancer-controller
- 创建多个使用相同 group.name 的入口文件。
IngressGroup 功能使您可以将多个 Ingress 资源组合在一起。控制器将自动合并 IngressGroup 中所有 Ingress 的 Ingress 规则,并通过单个 ALB 支持它们。此外,在 Ingress 上定义的大多数注解仅适用于该 Ingress 定义的路径。
- 使用 externalName 服务
https://kubernetes.io/docs/concepts/services-networking/service/#externalname
您可以在与 ingress 相同的命名空间中创建ExternalName
服务,然后您的 ingress 将指向此特殊ExternalName
服务
推荐阅读
- git - 如何格式化我的整个 git 历史记录?
- javascript - 从 localStorage 中检索数据并将其显示在表中
- ios - 查看控制器关闭问题
- python - 调用加载数据函数Python后存储数据集
- c++ - 为什么即使输入相等 v3 也不返回任何内容
- javascript - React - 如何避免这种内联样式
- reactjs - 如何用嵌套的孩子填充状态
- dask - 将新的 Xarray DataArray 添加到现有的 Zarr 存储而不重写整个数据集?
- javascript - 角度选项卡列表数组保持正确排序
- json - 您能否在符合 JSON 模式的 JSON 文档上指定模式 URI?