怎么使用Istio 1.6管理多集群中的微服务

  

本篇内容介绍了“怎么使用Istio 1.6管理多集群中的微服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

假如你正在一家典型的企业里工作,需要与多个团队一起工作,并为客户提供一个独立的软件,组成一个应用程序。你的团队遵循微服务架构,并拥有由多个Kubernetes集群组成的广泛基础设施。

由于微服务分布在多个集群中,你需要设计一个解决方案来集中管理所有微服务。幸运的是,你正在使用Istio,提供这个解决方案只不过是另一个配置的变化。

像Istio这样的服务网格技术可以帮助你安全地发现和连接分布在多个集群和环境中的微服务。今天我们来讨论一下使用Istio管理托管在多个Kubernetes集群中的微服务。

架构说明

Istio使用以下组件提供跨集群服务发现:

  • Istio CoreDNS:每个Istio控制平面都有一个CoreDNS。Istio使用它来发现全局范围上定义的服务。例如,如果一个托管在集群1上的微服务需要连接到另一个托管在集群2上的微服务,你需要为运行在集群2上的微服务在Istio CoreDNS上做一个全局条目。

  • Root CA:由于Istio需要在不同集群上运行的服务之间建立mTLS连接,因此需要使用共享的Root CA为两个集群生成中间CA证书。这就在不同集群上运行的微服务之间建立了信任,因为中间CA共享同一个Root CA。

  • Istio Ingress网关:集群间的通信通过Ingress网关进行,服务之间没有直接连接。因此,你要确保Ingress网关是可发现的,并且所有集群都可以连接到它。

怎么使用Istio 1.6管理多集群中的微服务

服务发现

Istio使用以下步骤来促进服务发现:

  1. 集群上都有相同的控制平面,以促进高可用性。

  2. Kube DNS与Istio CoreDNS为支点,以提供全局服务发现。

  3. 用户通过Istio CoreDNS中的ServiceEntries定义远程服务的路由,格式为name.namespace.global。

  4. 源sidecar使用全局CoreDNS条目将流量路由到目标Istio Ingress网关。

  5. 目标 Istio Ingress 网关将流量路由到正确的微服务 pod。

前期准备

本文假设你已经对Kubernetes以及Istio的工作原理有一个基本的了解。如果你想了解Istio 1.5和1.6的详细内容,点击此处即可查看相关视频。为了能够跟上我们接下来的演示,请确保:

  • 你有至少两个Kubernetes集群,Kubernetes的版本为1.14、1.15或1.16

  • 你拥有在集群内安装和配置Istio的权限

  • 你在两个Kubernetes集群上都有集群管理权限。

  • Ingress网关可通过网络负载均衡器或类似配置连接到其他集群。扁平网络是不必要的。

安装Istio

在两个集群上,使用以下命令安装Istio 1.6.1:

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.1 sh -
  cd  istio-1.6.1=$ PWD export 路径/bin: $路径

由于我们需要用共享的根证书生成的中间证书来启动我们的Istio服务网格,所以使用中间证书创建一个秘密。

在这个例子中,我们使用提供的样本证书。但是,我不建议你在生产中使用这些证书,因为它们一般都是可轻松获取的,而且是众所周知的。最好是使用你的组织的根CA来生成中间CA证书。

在两个集群上运行以下命令来使用样本证书。如果你使用的是你的证书,请替换适用的文件路径。

 kubectl  create  namespace  istio-system
  kubectl  create  secret  generic  cacerts  -n  istio-system  \
  ,,,,从文件=样品/证书/ca-cert.pem  \
  ,,,,从文件=样品/证书/ca-key.pem  \
  ,,,,从文件=样品/证书/root-cert.pem  \
  ,,,,从文件/证书/cert-chain.pem=样品
  秘密/cacerts 创建

由于我们需要安装Istio进行多集群设置,所以在两个集群上使用提供的Istio多集群网关清单文件。

<>之前,美元istioctl  manifest  apply  -f 安装/kubernetes/运营商//multicluster/values-istio-multicluster-gateways.yaml例子   安康;Applying  manifest  for  component 基地……   ?,Finished  applying  manifest  for  component 基地。   安康;Applying  manifest  for  component 飞行员…   ?,Finished  applying  manifest  for  component 飞行员。   Waiting 才能;for  resources 用become 准备好了…   安康;Applying  manifest  for  component  AddonComponents…   安康;Applying  manifest  for  component  IngressGateways…   安康;Applying  manifest  for  component  EgressGateways…   ?,Finished  applying  manifest  for  component  EgressGateways。   ?,Finished  applying  manifest  for  component  IngressGateways。   ?,Finished  applying  manifest  for  component  AddonComponents。   ?,Installation 完整的

怎么使用Istio 1.6管理多集群中的微服务