Oracle 云基础设施 (OCI) 客户越来越多地转向微服务架构,该架构不仅带来了许多好处,但也带来了新的挑战。 在微服务架构中,整体式应用程序被拆分为多个较小的微服务,这些微服务通过 API 通过网络进行通信。 这导致网络流量激增,并增加了架构和整体攻击面的复杂性。 将服务网格添加到微服务可以缓解微服务架构带来的许多挑战,并允许您控制流量流向微服务的位置。
提供对应用程序的可见性。
使微服务能够在不更改应用程序的情况下安全连接。
借助 OCI Service Mesh,您可以将托管的 Service Mesh 架构部署到 Kubernetes 容器引擎 (OKE) 集群。 此参考架构提供了在 OKE 集群中部署的 OCI 服务网格架构的详细示例。 OCI 服务网格使用访问策略来定义访问规则。 访问策略强制执行微服务之间的通信,并且仅允许来自应用内部和外部的经过身份验证的请求。 访问策略还用于定义允许与外部服务的通信。
零信任OCI 服务网格可在所有微服务中自动实施零信任安全架构。 微服务之间的数据是加密的。 在通信开始时,需要在微服务之间进行身份验证。 双方必须交换带有身份信息的凭据。 这使服务能够相互识别,以确定它们是否具有交互权限。 这是通过使用 OCI 证书服务和 OCI 密钥管理服务(用于管理证书和密钥)并实施双向 TLS 来自动执行证书和密钥轮换来实现的。
交通管理交通转移。
OCI 服务网格支持您进行金丝雀部署。 当您将新版本的 ** 发布到生产环境时,您只允许一部分流量到达它。 此功能使您能够快速部署,同时将对应用程序的中断降至最低。 您可以定义路由规则来控制网格内所有微服务之间的通信。 您可以将流量的子集路由到服务的特定版本。
可观察性监视和日志记录。
OCI 服务网格在提供遥测信息方面具有独特的优势,因为微服务之间的所有通信都必须通过它。 这使服务网格能够捕获遥测数据,例如**、目标、协议、URL、持续时间、状态代码、延迟、日志记录和其他详细统计信息。 您可以将日志信息导出到日志服务。 OCI 服务网格提供两种类型的日志:错误日志和流量日志。 您可以使用这些日志来调试 404 或 505 问题或生成基于日志的统计信息。 指标和遥测数据可以导出到 Prometheus,并通过 Grafana 进行可视化。 这两者都可以直接部署到 OKE 群集中。
OCI 服务网格使用 sidecar 模型。 此架构将网络功能封装到网络中,然后依赖于来自和流向服务的流量,以重定向到sidecar。 它之所以被称为 sidecar,是因为它附加到每个应用程序,就像 sidecar 连接到摩托车一样。 在 OKE 中,应用程序容器与 sidecar 容器位于同一 pod 中。 由于它们位于同一个 Pod 中,因此它们共享相同的网络命名空间和 IP 地址,从而允许容器通过“localhost”进行通信。 OCI 服务网格有两个主要组件:OCI 服务网格控制平面管理和配置整个集合以路由流量。 它处理运行状况、运行状况检查、负载均衡、身份验证、授权和遥测的聚合。 控制平面与 OCI 证书服务和 OCI 密钥管理服务交互,以提供其每个证书。
数据平面由部署在环境中的 sidecar** 集合组成,负责应用程序的安全性、网络功能和可观测性。 它们还收集和报告所有网格流量的遥测数据。 Envoy 用作 OCI 服务网格的数据平面。 下图演示了此参考体系结构。
此参考体系结构显示了在具有三个服务的 OKE 群集中部署的应用程序。 部署应用程序的命名空间已“网格化”。 “网格化”命名空间意味着部署在该命名空间中的服务将成为服务网格的一部分,并且每个新部署的 Pod 都将注入一个 envoy** 容器。 部署每个 Pod 后,OCI 服务网格控制平面会将配置和证书发送到每个容器。 OCI 服务网格控制平面与 OCI 证书服务和密钥管理服务进行通信,以获取每个 ** 的证书。 部署入口网关以提供对应用程序的外部访问。 入口网关是 OCI 服务网格数据平面的一部分,也是从 OCI 服务网格控制平面接收配置和证书的 Envoy。 容器的职责是对目标服务执行服务发现、流量加密和身份验证。 容器还应用网络策略,例如不同服务版本之间的流量分配,并强制执行访问策略。 入口网关对来自服务网格外部的流量执行相同的功能。 Prometheus 和 Grafana 部署在 OKE 集群中的单独命名空间中,该命名空间不属于服务网格。 服务网格数据平面将关键操作统计信息(如延迟、故障、请求和遥测)发送到 Prometheus 部署。 Grafana 从 Prometheus 部署中提取数据,这些数据可用于创建可视化仪表板。 OCI 服务网格与 OCI 日志服务集成,可以在创建服务网格时启用日志记录。 OCI 服务网格提供两种类型的日志:错误日志和流量日志。 这些日志可用于调试 404 或 505 问题或生成基于日志的统计信息。 此架构包括以下 OCI 服务: 提供高度可用、可扩展、生产就绪的 Kubernetes 集群,以便在云中部署容器化应用。
提供对 OKE 群集中的入口网关的访问。 Ingress 将流量定向到 OKE 集群中请求的服务。
管理 OCI Service Mesh 服务的 TLS 证书。
管理证书颁发机构服务使用的密钥。
此体系结构由以下组件组成: Oracle Cloud Infrastructure 区域是包含一个或多个数据中心(称为可用性域)的地理区域。 区域彼此独立且相距甚远(跨国家甚至跨大陆)。
VCN 是在 Oracle Cloud Infrastructure 区域中设置的可定制的软件定义网络。 就像传统的数据中心网络一样,VCN 可让您完全控制网络环境。 一个 VCN 可以有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些 CIDR 块。 您可以将 VCN 拆分为多个子网,这些子网可以限制为一个区域或一个可用性域。 每个子网都包含一个连续的地址范围,这些地址不与 VCN 中的其他子网重叠。 您可以在创建子网后更改子网的大小。 子网可以是公有子网,也可以是私有子网。
对于每个子网,您可以创建安全规则,以指定必须允许进出子网的流量、目标和流量类型。
在配置部署在 OKE 集群中的 OCI 服务网格时,会定义多个 Kubernetes 资源,这些资源映射到应用的关键组件。
下图描述了配置的 OCI 服务网格资源:访问策略、入口网关、虚拟服务和虚拟部署如何映射到您的应用资源:K8S 服务、K8S 服务负载均衡器、部署和 Pod。
使用以下建议作为起点。 您的需求可能与此处描述的体系结构不同。 创建 VCN 时,请根据计划附加到 VCN 子网的资源数量确定所需的 CIDR 块数和每个块的大小。 使用标准专用 IP 地址空间中的 CIDR 块。
选择与您打算设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure、内部部署数据中心或其他云提供商中)不重叠的 CIDR 块。
创建 VCN 后,您可以更改、添加和删除其 CIDR 块。
在设计子网时,请考虑流量的去向和安全要求。 将特定层或角色中的所有资源附加到同一子网,该子网可以充当安全边界。
创建负载均衡器时,可以选择提供固定带宽的预定义配置,也可以选择自定义(灵活)配置,在其中设置带宽范围并让服务根据流量模式自动缩放带宽。 无论采用哪种方式,您都可以在创建负载均衡器后随时更改负载均衡器的形状。
部署此参考体系结构时,请考虑以下选项。 在 OKE 集群上,OCI 服务网格的控制平面不收取任何费用。 客户需要为提供网格数据平面的容器的资源利用率付费。 但是,在实践中,客户已经为 OKE 集群中的节点池资源付费,除非容器的利用率将节点池的利用率推高到 100% 以上,否则将 OCI 服务网格添加到微服务架构不会产生额外费用。
OCI 服务网格的控制平面始终部署为高可用性。
作为甲骨文标准合作伙伴,Agilewing正在重新定义企业体验甲骨文云服务的方式。 凭借其简化的开户流程和一流的技术支持,雅居翼将复杂的开户和操作流程转变为简单、直观的体验。 借助我们的一站式服务,您可以快速启动并运行全套 Oracle 云服务,从而无缝集成到云中。 Agilewing 的 AgileCDN 服务与 OCI 基于云的服务相结合,可提供一流的全球内容加速解决方案。 由2,800多个全球POP节点和7,000个直接连接点组成的强大网络可确保您的业务扩展到全球的任何地方,都能确保高效稳定的运营。 利用 Oracle 云的先进技术,Agilewing 致力于简化云服务构建、云迁移和业务走出去的流程。 “我们的合作模式为客户提供了经济高效的解决方案,使他们能够更专注于核心业务,同时享受 Oracle 云的高性能和安全性。” Oracle 云服务是一个前景广阔的领域,凭借其高性能、安全性和全球一致的服务标准,为企业打开了通往新机遇的大门。 通过雅乐之翼的专业服务,无论是个人用户还是企业,都能轻松进入这个充满技术创新和高性能的新时代。 让 Agilewing 开始探索 Oracle 云服务,打开通往全新世界的大门。