在本文中,看看如何使用YugabyteDB和Istio构建现代应用。
微服务架构正在成为开发人员考虑如何构建应用程序的事实方式。但是安全仍然是许多组织最关心的问题。鉴于生产网络中威胁扩散的总体趋势和特权访问点的增加,越来越有必要对微服务架构采用零信任网络安全方法。
最常见的安全方法之一是设置mTLS。虽然这是一个重要的安全工具,但管理起来往往既困难又耗时。首先,您必须创建、分发和轮换大量服务的密钥和证书。然后,您需要确保在所有客户端和服务器上正确实现mTLS。Istio的一个引人注目的特性是能够在不牺牲开发人员生产力的情况下为您的所有服务统一管理mTLS。虽然YugabyteDB确实提供了自己的TLS加密,但通过拥有像Istio服务网格这样的中央工具,您可以建立一个简单一致的策略,Istio自动管理证书轮换。
本教程侧重于如何使用Istio mTLS部署YugabyteDB以保护服务之间的通信。
虽然您可以在本地机器上的mini kube上运行此设置,但我们将在此博客中使用Google Cloud和Google Kubernetes Engine(GKE)。
Yugabyte DB Helm图表已通过以下软件版本进行了测试:
舵手3.0或更高版本。
YugabyteDB Docker映像(yugabytedb/yugabyte) 2.3.0或更高版本。
为了获得最佳性能,请确保您已经在Kubernetes群集的每个节点上使用ulim it设置了适当的系统限制。
Istio 1.6或更高版本。
转到Istio版本页面下载您的操作系统的安装文件,或自动下载并提取最新版本(Linux或mac OS):
对于此安装,我们使用演示配置文件。它被选择为有一组很好的默认值进行测试。
安装Kiali以可视化网格流量。
使用舵图安装Yugabyte DB。
确保所有豆荚处于健康和准备状态。
Peer验证策略用于通过自动化证书和密钥的生成、分发和轮换过程来保护服务到服务的通信。
在Istio中,对等认证策略有三个级别的粒度,通过这些粒度我们可以定义mTLS设置。对于每个服务,Istio应用最窄的匹配策略。顺序是服务特定的、命名空间范围的、网格范围的。在本演示中,我们将使用命名空间范围的策略。
命名空间范围的Peer验证策略会影响命名空间中的所有服务。以下Mesh Policy将所有服务的mTLS模式设置为STRICT(工作负载仅接受相互的TLS流量)。
为yb-demo命名空间创建Peer验证以强制执行mTLS。
您可以将mTLS设置为PERMISSIVE,它可以接受加密和纯文本流量。
在迁移到Istio时,当仍然存在Istio(或mTLS)不管理的服务时,PERMISSIVE模式特别有用。通过允许设置,这些网格外服务还可以与已经在网格中的服务通信,帮助Istio迁移过程。
使用Des tina tonR ue对象指示客户端服务使用所需的证书与目标服务建立相互TLS连接。目标规则对象配置给定目标或目标服务的流量会发生什么。
我们将为yb-master和yb-t server服务创建具有ISTIO_MUTUAL模式的目标规则对象。
验证策略和目标规则是否已设置。
此时,我们的集群正在运行一个示例工作负载,并且为该命名空间启用了mTLS,所以现在让我们使用Kiali UI来可视化网格流量。在不同的终端窗口中键入以下命令以启动Kia li。
进入Kiali UI后,请浏览导航窗格中的可视化效果。本教程的重点是图形视图,您可以在其中看到Yugabyte DB微服务的拓扑。
打开图形视图,并在命名空间字段中选择yb-demo,该字段与本教程中使用的Kubernetes命名空间相匹配。启用显示下拉列表中的选项,选择安全徽章和交通动画。您应该看到一个类似于此示例的视图:
Kia li在图中有一个有用的安全层,其中边缘显示了mTLS连接的锁定图标,一目了然,我可以确认在内部YugabyteDB主服务和t server服务之间以及连接到yb-t server-service的示例应用程序之间启用了mTLS。
本教程讨论了Istio服务网格环境中YugabyteDB的相互TLS身份验证是如何工作的。YugabyteDB的云原生和开发者友好架构通过在Kubernetes生态系统中无缝集成,使其非常适合基于Kubernetes的编排。现在,您可以专注于构建由分布式数据库支持的现代应用,同时将安全问题转移到Istio。
主题:
is tio,服务网格, api,开源,微服务, kubernetes, yugabytedb, postgres, postgres ql,数据库
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26692020/viewspace-3136319/ ,如需转载,请注明出处,否则将追究法律责任。