欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云在Kubernetes应用中启用OCI服务网格,让云计算更智能、更高效

2024-03-05 原创文章

Oracle云基础设施(OCI)的客户越来越多地转向微服务架构,这种架构虽然带来了许多好处,但也引入了新的挑战。在微服务架构中,原本单体的应用被拆分成多个较小的微服务,这些微服务通过API在网络上进行通信。这导致网络流量激增,并增加了架构的复杂性和整体攻击面。


在微服务中添加服务网格能够缓解微服务架构带来的许多挑战,并提供以下好处:

  • 允许您控制微服务的流量流向。
  • 提供对您应用程序的可见性。
  • 使微服务能够在不更改应用程序代码的情况下安全连接。


通过OCI服务网格,您可以将托管的服务网格架构部署到您的Kubernetes容器引擎(OKE)集群。此参考架构提供了在OKE集群中部署的OCI服务网格架构的详细示例。



OCI服务网格能力 安全性

执行与安全相关的策略

  • OCI服务网格使用访问策略来定义访问规则。访问策略强制执行微服务之间的通信,并且只允许验证后的请求,这些请求来自应用内部和外部。访问策略还用于定义对外部服务的允许通信。
零信任
  • OCI服务网格在所有微服务中自动实现零信任安全架构。微服务之间的数据被加密。在通信开始时需要进行微服务间的身份验证。双方必须交换带有身份信息的凭据。这使得服务能够相互识别,以确定它们是否有权进行交互。这是通过使用OCI证书服务和OCI密钥管理服务自动进行证书和密钥轮换来实现的,该服务用于管理证书和密钥,并实现了相互TLS。
流量管理
  • 流量转移
  • OCI服务网格允许您进行金丝雀部署。当您将新版本的代码发布到生产环境时,您只允许一部分流量到达它。该功能使您能够快速部署,并对您的应用造成最小的干扰。您可以定义控制网格内所有微服务间通信的路由规则。您可能会将一部分流量路由到服务的某个特定版本。
可观察性
  • 监控和日志
  • OCI服务网格由于所有微服务间的通信必须通过它,因此独特地定位于提供遥测信息。这使得服务网格能够捕获诸如来源、目的地、协议、URL、持续时间、状态码、延迟、日志记录和其他详细统计数据等遥测数据。您可以将日志信息导出到OCI日志服务。OCI服务网格提供两种类型的日志:错误日志和流量日志。您可以使用这些日志来调试404或505问题或生成基于日志的统计信息。度量和遥测数据可以导出到Prometheus,并通过Grafana进行可视化。这两者都可以直接部署到OKE集群中。



架构

OCI服务网格采用边车模型。这种架构将实现网络功能的代码封装进网络代理中,然后依赖来自服务并转向服务的流量重定向进入边车代理。之所以称之为边车,是因为代理附加在每个应用程序上,就像边车附加在摩托车上一样。在OKE中,应用容器与代理边车容器位于同一个pod中。由于它们位于同一个pod中,它们共享相同的网络命名空间和IP地址,允许容器通过“localhost”进行通信。


OCI服务网格具有以下两个主要组件:

控制平面

  • OCI服务网格控制平面管理和配置整个代理集合以路由流量。它处理转发、健康检查、负载均衡、认证、授权以及遥测的聚合。控制平面与OCI证书服务和OCI密钥管理服务交互,为每个代理提供其证书。

数据平面

  • 数据平面由部署在环境中的边车代理集合组成,负责应用程序的安全性、网络功能和可观察性。它们还收集并报告所有网格流量的遥测数据。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)

  • 提供高可用、可扩展的生产就绪Kubernetes集群,用于在云中部署您的容器化应用程序。


负载均衡器

  • 为OKE集群中的入口网关提供访问。入口将流量引导至OKE集群中请求的服务。


证书授权机构

  • 管理OCI服务网格服务的TLS证书。


密钥管理

  • 管理证书授权服务使用的密钥。



此架构包含以下组件:

区域

  • Oracle云基础设施区域是一个包含一个或多个数据中心的地理区域,这些数据中心被称为可用性域。区域彼此独立,相距甚远(跨越国家甚至洲际)。


虚拟云网络(VCN)和子网

  • VCN是您在Oracle云基础设施区域中设置的可定制的、软件定义的网络。就像传统数据中心网络一样,VCN使您能够完全控制您的网络环境。VCN可以具有多个不重叠的CIDR块,您可以在创建VCN后更改这些块。您可以将VCN分割成子网,这些子网可以被限定在一个区域或一个可用性域。每个子网包含一个连续的地址范围,这些地址不与VCN中的其他子网重叠。您可以在创建后更改子网的大小。子网可以是公共的或私有的。


安全列表

  • 对于每个子网,您可以创建安全规则,指定必须允许进出子网的流量的来源、目的地和类型。


OCI服务网格资源

在配置部署在OKE集群中的OCI服务网格时,定义了几个Kubernetes资源,这些资源映射到您应用程序的关键组件。          


以下图表描述了配置的OCI服务网格资源:访问策略、入口网关、虚拟服务和虚拟部署如何映射到您的应用程序资源:K8s服务、K8s服务负载均衡器、部署和Pod。


建议

使用以下建议作为起点。您的需求可能与这里描述的架构不同。

VCN

  • 创建VCN时,根据您计划附加到VCN子网中的资源数量来确定所需的CIDR块数量及每个块的大小。使用标准私有IP地址空间内的CIDR块。
  • 选择与您打算设置私有连接的任何其他网络(在Oracle云基础设施、您的本地数据中心或其他云提供商中)不重叠的CIDR块。
  • 创建VCN后,您可以更改、添加和删除其CIDR块。
  • 设计子网时,考虑您的流量流向和安全要求。将特定层或角色内的所有资源附加到同一子网,这可以作为安全边界。

负载均衡器带宽

  • 在创建负载均衡器时,您可以选择一个预定义的形状,提供固定带宽,或指定一个自定义(灵活)形状,您在其中设置带宽范围,并让服务根据流量模式自动扩展带宽。无论采用哪种方法,您都可以在创建负载均衡器后随时更改形状。



考虑因素

在部署此参考架构时,请考虑以下选项。


成本

  • 在OKE集群上,OCI服务网格的控制平面不收费。客户需为服务网格数据平面的代理容器的资源利用付费。然而,在实践中,客户已经为OKE集群中的节点池资源支付了费用,除非代理容器的利用率将节点池的利用率推高到100%以上,否则为您的微服务架构添加OCI服务网格不会产生额外费用。

可用性

  • OCI服务网格的控制平面始终部署为高可用。



开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。