开源技术 * IBM 微讲堂:Kubeflow 系列(观看回放 | 下载讲义) 了解详情

使用 OpenShift Service Mesh 的微服务

摘要

本 Code Pattern 展示了如何使用 Red Hat® OpenShift® Service Mesh 为模拟的交互式手机应用程序部署服务网格。在 Red Hat OpenShift on IBM Cloud™ 中展示了一些示例。

概览

构建安全的应用程序以确保在部署到云环境时的数据隐私性和安全性,这对于收集客户数据的企业来说至关重要,尤其是对于金融、零售和银行等受监管行业而言。随着向微服务架构和容器化的转变,像服务网格这样的技术在数据隐私服务环境中可能会很有用。

OpenShift Service Mesh 是在 Istio 上构建的层,它基于 Maistra Istio Operator。本 Code Pattern 展示了如何修改部署脚本、Dockerfile 和网络策略,以允许基于微服务的移动银行应用程序与 Istio 服务网格配合使用。虽然主要目标是在服务之间通过 mTLS 以及通过 Istio Ingress Gateway 来提供安全性,但是在配置 Istio 之后,可以灵活地管理其流量和实现安全策略。在此示例中,您将安装 OpenShift Service Mesh,并将 Example Bank 项目配置为在服务之间使用双向 TLS。进入 Istio 网格后,您还可以利用其流量管理、遥测和可观察性功能。

流程

下图展示了 Example Bank 移动应用程序的服务网格的架构流程,其中包括几个用于处理用户身份验证和事务机制的微服务。

服务网格架构流程图

  1. 用户通过 HTTPS 连接到 OpenShift 路由器,该路由器将请求转发到 Istio Ingress Gateway(一个 Envoy 实例)。
  2. Envoy 使用网关和虚拟服务规则将请求转发到 Node.js 服务,然后该服务会使用应用程序 ID 验证用户帐户。
  3. 设置服务网格内部的流量规则,使所有流量都被 Istio 代理拦截,从而增强服务之间的安全性。Node.js 服务、Java Transaction 服务和 Java User Management 服务是通过 Envoy 所代理的 mTLS 连接进行通信的。
  4. 用户、事??务和清理服务都会与集群内的 PostgreSQL 数据库进行通信。由于该数据库本身也在带有代理容器的 pod 内运行,因此可以使用安全性和过滤规则来访问数据库。
  5. Java 擦除服务每 24 小时运行一次,用于从应用程序 ID 移除用户。在 Istio 环境中,像这样的作业需要延迟一段时间,直至 Envoy 代理启动并接收流量。详细了解如何实现这一点。

操作说明

参阅 GitHub 代码库中的详细技术步骤来试用本 Code Pattern。

  1. 使用 Example Bank Code Pattern 来部署服务。
  2. 安装 OpenShift Service Mesh Operator。
  3. 创建 Control Plane 和 Member Roll 实例。
  4. 检出启用了服务网格的分支。
  5. 复查并应用更改。

后续步骤

通过以下内容中的开源代码和操作说明来了解使用 OpenShift 4.3 构建 Example Bank 应用程序时执行的步骤:

本文翻译自:Microservices with the OpenShift Service Mesh(2020-09-17)