--> 甲骨文云使用云Shell在OKE上部署OCI服务网格和微服务:快速、高效的云端解决方案
欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云使用云Shell在OKE上部署OCI服务网格和微服务:快速、高效的云端解决方案

2024-01-16 原创文章

您的应用程序可能在云上运行,但它是云原生的吗?新应用程序正趋向于使用微服务而非单体应用。微服务提供了一个较小、精细、颗粒化的服务,具有松散耦合的业务逻辑和轻量级通信协议。


在一个每个微服务都需要相互通信的微服务生态系统中,需要为微服务通信实现额外的业务逻辑或端点。这种集群内的微服务到微服务通信通常是不安全的,有时需要在每个微服务中添加重试逻辑以实现成功通信。您还需要监控微服务的性能如何。发生了什么错误?发送了多少请求?我的微服务响应需要多长时间?


甲骨文云基础设施(OCI)服务网格是一项免费服务,简化了云原生应用程序的开发和运营。服务网格在不需要更改应用程序的情况下启用安全性、可观察性和网络流量管理。服务网格自动加密微服务之间的所有通信,并收集遥测、指标和日志,用于应用程序性能和健康监控。微服务使您能够更快地吸纳新团队成员,通过使您能够隔离具有自己业务逻辑的服务。在微服务生态系统中,您也可以更快地修复、测试和部署错误修复。


架构

此架构旨在部署服务网格并将微服务通信重定向到一个边车代理。这里有两个微服务:Home和Price。服务网格用于定义在Home和Price之间分配流量的百分比。


  • Home微服务有两个虚拟部署:home v1和home v2。Home v1是一个Bootstrap静态网页,显示价格。Home v2是使用VueJS创建的动态网页,通过REST从Price微服务检索价格。Home部署了一个路由表,以将流量(来自入口网关)在v1和v2之间分配。默认的分配比例为20:80,最初大部分流量流向v2。Home使用端口3000。
  • Price微服务有一个部署,从甲骨文自治数据库和Node数据库库检索和更新价格。如果架构为空,Price将在第一次调用时在甲骨文自治数据库中创建架构和数据。Price还有一个后台管理用户界面,用于在网页上维护价格。Price使用端口3010。


应用程序容器与代理边车容器位于同一个Pod中。两个容器共享相同的网络命名空间和IP地址,允许容器通过localhost进行通信。边车与应用程序代码解耦,实现了流量、安全和连接管理,而无需任何应用程序代码更改。

这些微服务作为容器存储在甲骨文云基础设施注册表(OCIR)中。创建了入口网关,以便从互联网访问Home和Price管理页面。访问策略允许从入口网关到Home和Price的流量,以及从Home到Price的流量。允许Home和Price与外部服务之间的流量,以启用到甲骨文自治数据库的流量。

示例代码包含构建和部署服务网格和甲骨文自治数据库所需的Shell脚本,使用Kubernetes CLI工具kubectl。实现示例代码的前提条件是在甲骨文容器引擎Kubernetes(OKE)上运行一个Kubernetes集群,并且已经安装了甲骨文服务操作员Kubernetes,并具有kubectl访问权限。DNS和OCI监控样本是可选的,也只使用OCI命令行界面。或者,可以使用/etc/hosts文件配置在本地访问服务网格。OCI监控使用Grafana,并将

在安装过程中创建自己的入口(一个OCI负载均衡器)。脚本设计为从OCI云Shell运行,但也可以从本地环境运行。成功部署服务网格后,可以轻松测试首页流量的流量分配路由。最后,该示例还包含第三方工具Kubeshark,可用于查看服务网格内的组件和流量。


以下图表展示了此参考架构。

架构包含以下组件:

地区

甲骨文云基础设施区域是一个地理上的局部区域,包含一个或多个数据中心,称为可用性域。各个区域彼此独立,它们之间可能相隔很远(跨越国家甚至大洲)。


故障域

故障域是可用性域内硬件和基础设施的分组。每个可用性域有三个故障域,拥有独立的电力和硬件。当您将资源分布在多个故障域时,您的应用程序可以容忍物理服务器故障、系统维护和故障域内的电源故障。


虚拟云网络(VCN)和子网

VCN是您在甲骨文云基础设施区域中设置的可自定义的软件定义网络。与传统的数据中心网络一样,VCN使您能够完全控制网络环境。一个VCN可以有多个不重叠的CIDR块,您可以在创建VCN后更改这些块。您可以将VCN划分为子网,这些子网可以限定在一个区域或一个可用性域内。每个子网由一系列不与VCN中的其他子网重叠的地址组成。您可以在创建后更改子网的大小。子网可以是公共的或私有的。


路由表

虚拟路由表包含规则,用于将流量从子网路由到VCN外部的目的地,通常通过网关。


互联网网关

互联网网关允许VCN中的公共子网与公共互联网之间的流量。


动态路由网关(DRG)

DRG是一种虚拟路由器,为同一区域内VCN之间的私有网络流量提供路径,以及VCN与该区域外的网络(如另一个甲骨文云基础设施区域的VCN、本地网络或其他云提供商的网络)之间的流量。


网络地址转换(NAT)网关

NAT网关使VCN中的私有资源能够访问互联网上的主机,而无需将这些资源暴露给入站的互联网连接。


安全列表

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

DNS

甲骨文云基础设施域名系统(DNS)服务是一个高度可扩展的全球anycast域名系统(DNS)网络,提供增强的DNS性能、弹性和可扩展性,以便最终用户尽可能快地从任何地方连接到客户的应用程序。


容器引擎Kubernetes

甲骨文云基础设施容器引擎Kubernetes是一个完全管理、可扩展且高度可用的服务,您可以使用它将容器化应用程序部署到云端。您指定应用程序需要的计算资源,容器引擎Kubernetes会在现有租户的甲骨文云基础设施中为其配置资源。容器引擎Kubernetes使用Kubernetes自动部署、扩展和管理跨主机集群的容器化应用程序。


自治数据库

甲骨文云基础设施自治数据库是一个完全管理的、预先配置的数据库环境,您可以用于事务处理和数据仓库工作负载。您无需配置或管理任何硬件,也无需安装任何软件。甲骨文云基础设施负责创建数据库,以及数据库的备份、修补、升级和调优。


服务网格

甲骨文云基础设施(OCI)服务网格是由OCI管理的应用基础设施层,用于服务与服务之间的通信。它通过定义可观察性、安全性和流量管理的标准,简化了云原生应用的开发和部署。服务网格作为一系列轻量级代理实现,部署在客户的Pod中,与应用代码并行,无需应用程序知道它们的存在。


注册表

甲骨文云基础设施注册表是一个甲骨文管理的注册表,使您能够简化从开发到生产的工作流程。注册表使您能够轻松地存储、共享和管理开发工件,如Docker镜像。甲骨文云基础设施的高度可用和可扩展的架构确保您可以可靠地部署和管理应用程序。


本地网络

这是您的组织使用的本地网络。它是拓扑结构的一个分支。


部署

在GitHub上提供了用于部署OCI服务网格的Terraform代码。

  1. 访问GitHub。
  2. 将存储库克隆或下载到您的本地计算机。
  3. 按照README文档中的说明操作。 考虑事项 在实施这个服务网格示例代码时,请考虑这些功能。 CI/CD 使用GitHub中的脚本,添加CI/CD相对简单。OCI DevOps和GitHub Actions已成功用于构建和部署微服务。服务网格可以从CI/CD部署。


安全

作为代码示例的一部分,允许流量从互联网到价格管理员,但在现实场景中,应仅限于私有子网。还应考虑使访问策略更具体。


API规范

价格组件API是使用OCI API管理与swagger.json在price/api-docs/生成的。


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

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

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

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

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


如您想咨询 Oracle 的相关业务,可联系搜索微信号:lhh1843812463woshiwhw123

或者可以进入以下群组进行咨询:

微信公众号

微信技术交流社群: