如何指向与入口不同的 ns 中的服务
How to point to a service in a different ns than the ingress
我正在考虑使用 https://github.com/kubernetes-sigs/aws-load-balancer-controller
创建白蛋白
假设我有两个命名空间 kubernetes-dashboard
和 otherns
。
在第一个命名空间中,我有一个名为 kubernetes-dashboard
的服务,在第二个命名空间中,我有一个名为 otherservice
的服务
下面的入口是否有效?
ingress.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
命名空间是安全边界。命名空间中的 Ingress 资源无法将流量定向到不同命名空间中的服务。如果这可能的话,用户就可以劫持服务的流量。
In the first namespace i have a service called kubernetes-dashboard and in the second namespace i have a service called otherservice
在这种情况下您需要做的是使用两种不同的 Ingress
-资源。您仍然可以使用相同的应用程序负载均衡器。
我发现这个问题有两个解决方案。
第二种解决方案对我不起作用,因为我使用的库不支持它。 https://github.com/kubernetes-sigs/aws-load-balancer-controller
- 创建多个声明相同的入口文件group.name。
IngressGroup feature enables you to group multiple Ingress resources
together. The controller will automatically merge Ingress rules for
all Ingresses within IngressGroup and support them with a single ALB.
In addition, most annotations defined on a Ingress only applies to the
paths defined by that Ingress.
- 使用外部名称服务
https://kubernetes.io/docs/concepts/services-networking/service/#externalname
您可以在与入口相同的命名空间中创建一个 ExternalName
服务,然后您的入口将指向这个特殊的 ExternalName
服务
我正在考虑使用 https://github.com/kubernetes-sigs/aws-load-balancer-controller
创建白蛋白假设我有两个命名空间 kubernetes-dashboard
和 otherns
。
在第一个命名空间中,我有一个名为 kubernetes-dashboard
的服务,在第二个命名空间中,我有一个名为 otherservice
下面的入口是否有效?
ingress.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
命名空间是安全边界。命名空间中的 Ingress 资源无法将流量定向到不同命名空间中的服务。如果这可能的话,用户就可以劫持服务的流量。
In the first namespace i have a service called kubernetes-dashboard and in the second namespace i have a service called otherservice
在这种情况下您需要做的是使用两种不同的 Ingress
-资源。您仍然可以使用相同的应用程序负载均衡器。
我发现这个问题有两个解决方案。
第二种解决方案对我不起作用,因为我使用的库不支持它。 https://github.com/kubernetes-sigs/aws-load-balancer-controller
- 创建多个声明相同的入口文件group.name。
IngressGroup feature enables you to group multiple Ingress resources together. The controller will automatically merge Ingress rules for all Ingresses within IngressGroup and support them with a single ALB. In addition, most annotations defined on a Ingress only applies to the paths defined by that Ingress.
- 使用外部名称服务
https://kubernetes.io/docs/concepts/services-networking/service/#externalname
您可以在与入口相同的命名空间中创建一个 ExternalName
服务,然后您的入口将指向这个特殊的 ExternalName
服务