Istio + Kubernetes:网关不止一个 TLS 证书
Istio + Kubernetes: Gateway more than one TLS Certificate
我有一个包含多个租户(在不同命名空间中)的 Kubernetes 集群。我想为每个租户部署一个独立的 Istio Gateway 对象,我似乎可以做到。但是,设置 TLS 需要包含 TLS key/cert 的 K8s 秘密。文档表明 "secret must be named istio-ingressgateway-certs in the istio-system namespace"。这似乎表明每个集群只能有一个 TLS 机密。也许我没有正确阅读这个。有没有办法在他们自己的命名空间中配置独立的 Istio 网关,使用他们自己的 TLS 秘密?我该怎么做呢?
这是我引用的文档。
https://istio.io/docs/tasks/traffic-management/ingress/secure-ingress-mount/
非常感谢任何想法。
根据 istio documentation 上的规定,这是可能的。
In this section you will configure an ingress gateway for multiple hosts, httpbin.example.com and bookinfo.com.
因此您需要为 bookinfo and httbin 创建私钥,并更新 istio-ingressgateway。
我创建了它们并且它们都存在。
bookinfo 证书和网关
kubectl exec -it -n istio-system $(kubectl -n istio-system get pods -l istio=ingressgateway -o jsonpath='{.items[0].metadata.name}') -- ls -al /etc/istio/ingressgateway-bookinfo-certs
lrwxrwxrwx 1 root root 14 Jan 3 10:12 tls.crt -> ..data/tls.crt
lrwxrwxrwx 1 root root 14 Jan 3 10:12 tls.key -> ..data/tls.key
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # use istio default ingress gateway
servers:
- port:
number: 443
name: https-bookinfo
protocol: HTTPS
tls:
mode: SIMPLE
serverCertificate: /etc/istio/ingressgateway-bookinfo-certs/tls.crt
privateKey: /etc/istio/ingressgateway-bookinfo-certs/tls.key
hosts:
- "bookinfo.com"
httpbin 证书和网关
kubectl exec -it -n istio-system $(kubectl -n istio-system get pods -l istio=ingressgateway -o jsonpath='{.items[0].metadata.name}') -- ls -al /etc/istio/ingressgateway-certs
lrwxrwxrwx 1 root root 14 Jan 3 10:07 tls.crt -> ..data/tls.crt
lrwxrwxrwx 1 root root 14 Jan 3 10:07 tls.key -> ..data/tls.key
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: httpbin-gateway
spec:
selector:
istio: ingressgateway # use istio default ingress gateway
servers:
- port:
number: 443
name: https
protocol: HTTPS
tls:
mode: SIMPLE
serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
privateKey: /etc/istio/ingressgateway-certs/tls.key
hosts:
- "httpbin.example.com"
还没有制作完整的复制品来检查它们是否都有效,但如果这对你不起作用,我会尝试制作并更新问题。
这个 link 可能会有帮助。
我有一个包含多个租户(在不同命名空间中)的 Kubernetes 集群。我想为每个租户部署一个独立的 Istio Gateway 对象,我似乎可以做到。但是,设置 TLS 需要包含 TLS key/cert 的 K8s 秘密。文档表明 "secret must be named istio-ingressgateway-certs in the istio-system namespace"。这似乎表明每个集群只能有一个 TLS 机密。也许我没有正确阅读这个。有没有办法在他们自己的命名空间中配置独立的 Istio 网关,使用他们自己的 TLS 秘密?我该怎么做呢?
这是我引用的文档。
https://istio.io/docs/tasks/traffic-management/ingress/secure-ingress-mount/
非常感谢任何想法。
根据 istio documentation 上的规定,这是可能的。
In this section you will configure an ingress gateway for multiple hosts, httpbin.example.com and bookinfo.com.
因此您需要为 bookinfo and httbin 创建私钥,并更新 istio-ingressgateway。
我创建了它们并且它们都存在。
bookinfo 证书和网关
kubectl exec -it -n istio-system $(kubectl -n istio-system get pods -l istio=ingressgateway -o jsonpath='{.items[0].metadata.name}') -- ls -al /etc/istio/ingressgateway-bookinfo-certs
lrwxrwxrwx 1 root root 14 Jan 3 10:12 tls.crt -> ..data/tls.crt
lrwxrwxrwx 1 root root 14 Jan 3 10:12 tls.key -> ..data/tls.key
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # use istio default ingress gateway
servers:
- port:
number: 443
name: https-bookinfo
protocol: HTTPS
tls:
mode: SIMPLE
serverCertificate: /etc/istio/ingressgateway-bookinfo-certs/tls.crt
privateKey: /etc/istio/ingressgateway-bookinfo-certs/tls.key
hosts:
- "bookinfo.com"
httpbin 证书和网关
kubectl exec -it -n istio-system $(kubectl -n istio-system get pods -l istio=ingressgateway -o jsonpath='{.items[0].metadata.name}') -- ls -al /etc/istio/ingressgateway-certs
lrwxrwxrwx 1 root root 14 Jan 3 10:07 tls.crt -> ..data/tls.crt
lrwxrwxrwx 1 root root 14 Jan 3 10:07 tls.key -> ..data/tls.key
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: httpbin-gateway
spec:
selector:
istio: ingressgateway # use istio default ingress gateway
servers:
- port:
number: 443
name: https
protocol: HTTPS
tls:
mode: SIMPLE
serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
privateKey: /etc/istio/ingressgateway-certs/tls.key
hosts:
- "httpbin.example.com"
还没有制作完整的复制品来检查它们是否都有效,但如果这对你不起作用,我会尝试制作并更新问题。
这个 link 可能会有帮助。