Kubernetes 如何将网关绑定到特定的命名空间?
我有以下情况:Kubernetes 如何将网关绑定到特定的命名空间?,kubernetes,istio,Kubernetes,Istio,我有以下情况: 当用户A在中输入地址foo.example1.example.com 浏览器,则应调用命名空间中的服务FOO 示例1 当用户B在中输入地址foo.example1.example.com 浏览器,则应调用命名空间中的服务FOO 示例2 我使用的是istio,问题是,如何配置特定于命名空间的绑定网关: 查看istio网关配置的示例: $ kubectl apply -f - <<EOF apiVersion: networking.istio.io/v1a
- 当用户A在中输入地址foo.example1.example.com 浏览器,则应调用命名空间中的服务FOO 示例1
- 当用户B在中输入地址foo.example1.example.com 浏览器,则应调用命名空间中的服务FOO 示例2
$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: ns_example1
spec:
selector:
istio: ingressgateway # use Istio default gateway implementation
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "example1.example.com"
EOF
$kubectl apply-f-我想这应该能回答你的问题
有很多东西您不需要,但有一个想法您想应用到您的istio集群
因此,您需要1个网关和2个虚拟服务
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: foocorp-gateway
namespace: default
spec:
selector:
istio: ingressgateway # use istio default ingress gateway
servers:
- port:
number: 80
name: http-example1
protocol: HTTP
hosts:
- "example1.example.com"
- port:
number: 80
name: http-example2
protocol: HTTP
hosts:
- "example2.example.com"
编辑
您可以在命名空间ex1和ex2中创建网关,然后只需更改虚拟服务中的网关字段,它就可以工作了
记住添加名称空间/网关,而不仅仅是网关名称,如
如果这对您有帮助,请告诉我。那么在我的情况下不可能设置两个网关?@zero\u编码我回答了您的问题,请检查编辑。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: example1
namespace: ex1
spec:
hosts:
- "example1.example.com"
gateways:
- foocorp-gateway
http:
- match:
- uri:
exact: /
route:
- destination:
host: example1.ex1.svc.cluster.local
port:
number: 80
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: example2
namespace: ex2
spec:
hosts:
- "example2.example.com"
gateways:
- foocorp-gateway
http:
- match:
- uri:
exact: /
route:
- destination:
host: example2.ex2.svc.cluster.local
port:
number: 80
gateways:
- some-config-namespace/gateway-name