实用指南:在OpenStack上部署Istio

什么是Istio?

Istio是一个开源服务网格,提供了连接、管理和保护微服务的统一方式。它充当应用程序和网络之间的一层,提供流量管理、安全性和可观察性。

无需修改应用程序代码,Istio使管理流量、强制执行访问策略和收集遥测数据变得更容易。它支持多个平台,并可与Kubernetes、Mesos和Nomad等各种容器编排系统配合使用。

Istio提供了断路、负载均衡、双向TLS身份验证和分布式跟踪等功能。它还允许金丝雀部署和A/B测试,从而更容易推出新功能和更新。

Istio的工作原理

Istio的工作原理是在应用程序和网络之间添加一个服务网格层。它提供了一个数据平面和控制平面来处理微服务的流量管理、安全性和可观察性。

数据平面由一组智能代理(Envoy)组成,这些代理作为sidecar部署到每个微服务实例。这些代理拦截微服务的所有入站和出站流量,并提供负载均衡、断路和服务发现等功能。它们还加密服务之间的通信,强制执行访问控制策略,并收集遥测数据用于监视和跟踪。

控制平面管理和配置数据平面代理。如今,Istiod结合了过去四个独立的组件:

——Pilot:服务发现和流量管理组件,用于使用路由规则和负载均衡策略配置Envoy代理。Pilot还提供了诸如故障注入和金丝雀测试之类的功能,以便在新服务或更改推出到生产之前对其进行测试。

——Citadel:用于管理服务到服务通信的证书颁发、轮换和吊销的安全组件。Citadel提供服务之间的双向TLS身份验证,确保只有经过授权的服务才能相互通信。

——Mixer:策略执行和遥测收集组件,用于执行访问控制策略、收集遥测数据并报告服务级别目标(SLO)。Mixer还可以根据事件触发操作,例如向服务发送警报或阻止流量。

——Galley:配置验证和管理组件,用于验证控制平面使用的配置文件,并更新Envoy代理上正在运行的配置。

在OpenStack上部署Istio有什么好处?

在OpenStack上部署Istio可以为运行基于微服务的应用程序的组织提供一些好处。以下是一些关键好处:

——简化的管理:OpenStack提供了一个统一的平台来管理基础设施资源,包括计算、存储和网络。通过在OpenStack上部署Istio,组织可以通过自动化基础设施资源的配置和扩展来简化基于微服务的应用程序的管理。

——提高了安全性:OpenStack提供了一系列安全功能,包括网络分割、加密和基于角色的访问控制。通过在OpenStack上部署Istio,组织可以通过使用Istio的安全功能,如双向TLS身份验证和服务通信加密,进一步提高其基于微服务的应用程序的安全性。

——增强的可见性:OpenStack提供了一系列监控和日志记录功能,可以帮助组织深入了解其基础设施和应用程序的行为。通过在OpenStack上部署Istio,组织可以通过使用Istio的可观察性功能,如分布式跟踪、度量收集和日志记录,进一步增强其可见性。更好的可见性还可以促进敏捷实践,如持续文档。

——提高性能:OpenStack提供了一系列性能优化功能,包括网络虚拟化、负载均衡和自动扩展。通过在OpenStack上部署Istio,组织可以通过使用Istio的流量管理和负载均衡功能,如智能路由和金丝雀发布,进一步提高其基于微服务的应用程序的性能。

如何在OpenStack上部署Istio?

以下是在OpenStack上部署Istio的一般步骤:

1.准备好OpenStack环境:确保OpenStock环境设置正确,拥有必要的计算、存储和网络资源,以支持基于微服务的应用程序。

2.安装Kubernetes:使用Kubernete发行版(如OpenShift或Kubesray)在OpenStack上安装Kubernet。这将提供一个容器编排平台来管理微服务。

3.安装Istio:使用Istio operator或Helm charts将Istio安装在Kubernetes之上。Istio operator是在Kubernetes上安装Istio的推荐方式,因为它提供了更精简和自动化的安装过程。可以使用以下命令安装Istio operator:

在Linux上,使用以下命令安装Istio:

curl -L https://istio.io/downloadIstio | sh -

If current version is istio-1.17.1:

然后使用以下命令更改到该文件夹:

cd istio-1.17.1

你会在里面看到一个bin文件夹——这个文件夹包含istioctl的二进制文件。切换到bin文件夹,然后设置PATH环境变量,这样istioctl就可以在服务器上通用访问了。

export PATH=$PWD/bin:$PATH

4.配置Istio:安装Istio后,将其配置为与基于微服务的应用程序一起工作。这包括定义服务网格、设置入口和出口网关以及配置流量管理策略。可以使用以下命令使用Istioctl命令行工具配置Istio:

Istioctl install --set profile=demo -y

输出如下所示:

47c785093907063869582964d5c73757.png

5.测试和部署微服务:使用Istio测试微服务,以确保它们按预期工作。将微服务部署到Kubernetes集群,并将其配置为使用Istio进行流量管理和安全。可以使用istioctl将Istio sidecar手动注入到微服务中,或者将其自动应用于整个命名空间。

当在命名空间上设置istio-injection=enabled标签,并且启用了injection-webhook时,在该命名空间中创建的任何新pod都将自动添加一个sidecar。

请注意,与手动注入不同,自动注入发生在pod级别。你不会看到部署本身有任何更改。相反,你需要检查各个pod(通过kubectl描述),以查看注入的代理。

以下命令将显示Istio是否正确应用于你的pod:

kubectl describe pod -l app=sleep

输出将如下所示:

c02d8ddabf033ba46e0d4b4a8c27e567.png

6.监控和管理Istio:使用Istio的可观察性功能来监控微服务的行为,并识别任何问题或性能瓶颈。使用Istio的管理功能来管理新微服务的部署,以及更新和扩展现有的微服务。可以使用Istio仪表板来监控和管理Istio。

需要先安装一些附加组件才能看到Kiali仪表板。浏览下载Istio的文件夹,Kiali是位于samples文件夹中的一个插件。

可以使用以下命令进行安装:

Kubectl apply -f samples/addons

47deaefecd42b97eafbeedd4e15a0ff2.png

然后,可以使用以下命令运行仪表板:

istioctl dashboard kiali

bbcd463f578e75796be80782a272da0b.png

结论

在OpenStack上部署Istio可以为管理和保护微服务提供强大的解决方案。Istio的服务网格架构可以帮助简化复杂微服务架构的管理,提供流量管理、安全性和可观察性等高级功能。OpenStack作为一个用于构建私有和公共云的开源平台,为运行Istio提供了灵活且可扩展的基础设施。

然而,在OpenStack上部署Istio可能是一个复杂的过程,需要仔细规划和执行。确保OpenStack环境正确配置以支持Istio的需求,并考虑Istio对应用程序性能和延迟的影响以及潜在的安全风险,这一点至关重要。

原文链接:

https://superuser.openinfra.dev/articles/deploying-istio-on-openstack-a-practical-guide/

190160be88fecdf2e9260d1932eff772.jpeg

3804b4f9e8de47d053e1f4579e46cf26.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值