当前位置: 首页 > 知识库问答 >
问题:

Istio+Kubernetes:网关多个TLS证书

钦海荣
2023-03-14

我有一个Kubernetes集群,它有多个租户(在不同的名称空间中)。我想在每个租户中部署一个独立的Istio网关对象,我似乎能够做到这一点。但是,设置TLS需要包含TLS密钥/证书的K8s秘密。文档指出“secret必须在istio-system命名空间中命名为istio-ingressgateway-certs”。这似乎表明每个集群只能有一个TLS秘密。也许我读错了。有没有一种方法可以在它们自己的名称空间中配置独立的Istio网关,并使用它们自己的TLS秘密?我该怎么做呢?

共有1个答案

盖嘉珍
2023-03-14

正如istio文档中提供的那样,这是可能的。

在本节中,您将为多个主机配置入口网关httpbin.example.com和bookinfo.com。

因此您需要为bookinfo和Httpin创建私钥,并更新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"

还没有做一个完整的复制,以检查他们是否都工作,但如果这对你不起作用,我会尝试使它和更新的问题。

这个链接可能会有帮助。

 类似资料:
  • 我有一个在kubernetes pod中运行的应用程序(在我的本地docker桌面上,启用kubernetes),监听端口8080。然后我有以下kubernetes配置 这个很好用。但我想把443端口改成其他端口,比如8443(因为我将有多个网关)。当我有这个,我不能再访问应用程序了。是否有一些配置我遗漏了?我猜我需要配置Istio来接受8443端口?我使用以下命令安装了istio: 编辑:我读了

  • 我知道10.254.0.1:443实际上提供来自主节点(端口6443上的api)(192.168.0.200)的证书,但如何解析,10.254.0.1提供其有效证书。 以下是clusterip API的描述:[root@master01 dns]#kubectl description service kubernetes namespace:default labels:component=ap

  • 通过本任务,将学习如何: 验证Istio双向TLS认证配置 手动测试认证 开始之前 本任务假设已有一个Kubernetes集群: 已根据Istio安装任务安装Istio并支持双向TLS认证。 注意,要在”Installation steps“中的第5步选择”enable Istio mutual TLS Authentication feature”。 验证Istio双向TLS认证配置 以下命令假

  • 从外部客户端到库伯内特斯集群内的服务器的TLS握手失败。这是关于理解为什么。 我已经配置了一个Istio入口网关,以通过端口15433上接收的TLS,并将其路由到端口433上的服务器。 当客户端尝试TLS握手时,入口网关日志显示活动,但不显示服务器日志,也不显示istio代理日志。 TLS客户端: 日志 Istio入口网关日志: 其中192.168.101.136是myservice pod的IP

  • 我有一个kubernetes cluster 1.6.1运行在kuberentes dashboard(gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.1)上,我无法更新我们域的tls证书,该站点显示为不安全。 它使用的是使用KOPS设置集群时创建的kubernetes-master证书。 在其他部署/吊舱上,我能够使用具有正确tl

  • 服务器{ } 服务器{ curl-v-hhost:subdomain.mydomain.com https://subdomain.mydomain.com:30588 curl-v-hhost:subdomain.mydomain.com--解析subdomain.mydomain.com:30588:ip-address--cacert/opt/psa/var/certificates/scf