在连接到 Autonomous Database 的 Kubernetes 中部署基于微服务的应用程序

作为开发人员或应用管理员,在设计和管理云原生应用时,您需要易于预配和维护的基础设施,并让您专注于设计和业务目标。OCI Kubernetes 引擎 (OKE) 支持您在云中部署和运行高可用性和可扩展的基于微服务的应用。

体系结构

在微服务体系结构中,每个微服务执行一个简单的任务,并使用轻量级机制(如 REST API 请求)与客户端或其他微服务进行通信。

此参考架构适用于电子商务应用程序,该应用程序由部署为 Kubernetes 集群中 Docker 容器的多个多语言微服务组成。使用 Oracle Autonomous Transaction Processing 数据库实现数据持久性。电子商务应用的媒体和映像文件存储在 Oracle Cloud Infrastructure Object Storage 中。

下图展示了体系结构。



mushop- 基础设施 -oracle.zip

该体系结构包含以下组件:

  • 区域

    Oracle Cloud Infrastructure 区域是一个本地化地理区域,其中包含一个或多个数据中心,托管可用性域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。

  • 可用性域

    可用性域是区域中的独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供容错能力。可用性域不共用电源、冷却设施或内部可用性域网络等基础设施。因此,一个可用性域出现故障不会影响区域中的其他可用性域。

  • 容错域

    容错域是可用性域内的一组硬件和基础设施。每个可用性域具有三个容错域,它们具有独立的电源和硬件。OCI Kubernetes Engine 可跨多个容错域处理集群中节点的分布。因此,容器化的应用可以防止在容错域中出现物理服务器故障、系统维护和电源故障。

  • 虚拟云网络 (VCN) 和子网

    VCN 是一个可定制的软件定义网络,您可以在 Oracle Cloud Infrastructure 区域中设置。与传统的数据中心网络一样,VCN 允许您控制您的网络环境。VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 划分为子网,子网可以限定为区域或可用性域。每个子网都包含一系列不与 VCN 中的其他子网重叠的连续地址。可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。

  • 服务网关

    通过服务网关,您可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量通过 Oracle 网络结构传输,不会通过互联网传输。

  • 网络地址转换 (NAT) 网关

    NAT 网关允许 VCN 中的专用资源访问互联网中的主机,同时不会向传入的互联网连接公开这些资源。

  • Internet 网关

    通过互联网网关,可以在 VCN 中的公共子网与公共互联网之间进行流量传输。

  • 自治事务处理

    Oracle Autonomous Transaction Processing 是一个自我驱动、自我保护和自我修复的数据库服务,针对事务处理工作负载进行了优化。您不需要配置或管理任何硬件,或者安装任何软件。Oracle Cloud Infrastructure 负责创建、备份、打补丁、升级和优化数据库。

  • 对象存储

    通过 OCI Object Storage ,您可以访问任何内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据和丰富的内容,例如图像和视频。您可以直接从互联网或云平台安全地存储数据。您可以在不降低性能或服务可靠性的情况下扩展存储。

    在此架构中,应用的介质资产存储在标准存储类的存储桶中的 Oracle Cloud Infrastructure Object Storage 中。

  • Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes EngineOCI Kubernetes 引擎OKE )是一项全托管式、可扩展的高可用性服务,您可以使用它将容器化应用程序部署到云中。您可以指定应用所需的计算资源,Kubernetes Engine 在现有租户的 Oracle Cloud Infrastructure 上预配这些资源。OKE 使用 Kubernetes 跨主机集群自动部署、扩展和管理容器化应用。

    下图显示了此体系结构中容器化微服务之间的交互:



    mushop-infrastructure-expand-oracle.zip

    来自公共互联网的流量由 DNS 服务通过 Web 应用防火墙 (Web Application Firewall,WAF) 路由到负载平衡器,负载平衡器会将传入请求转发到入站 (Ingress,Nginx) 微服务。Ingress 微服务将流量发送到路由器 (Traefik) 微服务。根据请求的性质,路由器微服务将它们路由到应用程序中的相应微服务。除了与其他微服务交互外,许多微服务还与 Oracle Cloud Infrastructure 服务进行交互: OCI Object StorageOCI API GatewayOCI FunctionsOCI Email DeliveryOCI StreamingOracle Autonomous Database

推荐

使用以下建议作为起点。您的要求可能与此处所述的体系结构不同。
  • VCN

    创建 VCN 时,请根据您计划附加到 VCN 中子网的资源数量,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    选择不与要设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure 、您的内部部署数据中心或其他云提供商中)重叠的 CIDR 块。

    创建 VCN 后,您可以更改、添加和删除其 CIDR 块。

    设计子网时,请考虑流量和安全要求。将特定层或角色中的所有资源附加到可以用作安全边界的同一子网。

    使用区域子网。

    注意:

    实施此架构的 Terraform 代码预配了 Oracle 服务网络中的 Oracle Autonomous Transaction Processing 数据库。如果您希望仅公开数据库的专用端点,则可以调整 Terraform 代码以将数据库附加到专用子网,如体系结构图中所示。
  • OCI Kubernetes 引擎

    在此架构中,Kubernetes 集群中的 worker 节点使用 VM.Standard2.1 配置,并在 Oracle Linux 上运行。在集群中至多可以创建 1000 个节点。

注意事项

实施此体系结构时,请考虑您对以下参数的要求:

  • 可扩展性

    您可以通过更新 Kubernetes 集群中的 worker 节点数来扩展应用,具体取决于负载。同样,您可以通过减少集群中的 worker 节点数来进行扩展。在 Kubernetes 集群上创建服务时,可以创建负载平衡器以在分配给服务的节点之间分配服务流量。此架构使用负载平衡器处理传入请求。

  • 应用程序可用性

    容错域在单个可用性域内提供可恢复性。您还可以部署在多个可用性域中执行相同任务的实例或节点。此设计通过引入冗余来消除单点故障。在此架构中,Oracle Cloud Infrastructure Kubernetes Engine 负责在可用性域内的容错域之间分布节点,并负责管理微服务在 Kubernetes 集群内的可用节点之间的分布。

  • 可管理性

    所有微服务都使用 Docker 进行容器化。这些映像存储在 Oracle Cloud Infrastructure Registry 服务中。部署使用 Terraform 自动完成,该服务还部署了其他常见服务,例如 Grafana、Prometheus 和 Helm 图表。

    您可以使用其他 Oracle Cloud Infrastructure 服务(例如 OCI API GatewayOCI FunctionsOCI Email Delivery )来管理后端 API 并订阅与产品相关的新闻通讯或电子邮件。

  • 安全

    OCI Kubernetes EngineOracle Cloud Infrastructure Identity and Access Management (IAM) 集成,通过原生身份功能提供轻松的身份验证。使用 IAM 策略控制谁可以访问资源及其可以执行的操作。

    考虑使用 Oracle Cloud Infrastructure Web Application Firewall (WAF) 保护应用免受来自公共互联网的恶意流量攻击。

    您可以使用 Oracle Cloud Infrastructure Streaming 服务来流式传输和记录应用级事件。

    为了保护 Kubernetes 密钥,您可以将密钥存储在 Vault 中,也可以使用您在 Oracle Cloud Infrastructure Vault 服务中维护的密钥来加密密钥。Kubernetes 集群可以通过 VCN 的服务网关私下访问 Vault、密钥和密钥,而不会向公共互联网公开访问请求。在 Oracle Cloud Infrastructure Identity and Access Management 中定义的策略用于控制对 Vault 的访问。通过 Oracle Cloud Infrastructure Audit 服务,您可以监视和跟踪受 Vault 保护的密钥和密钥的使用情况。

部署

部署此参考体系结构所需的代码位于 GitHub 中。您只需单击一下即可将代码提取到 Oracle Cloud Infrastructure Resource Manager 中,创建堆栈并部署堆栈。或者,将代码从 GitHub 下载到您的计算机,定制代码并使用 Terraform CLI 部署体系结构。

  • 使用 Oracle Cloud Infrastructure Resource Manager 部署:
    1. Click 部署到 Oracle Cloud

      如果您尚未登录,请输入租户和用户凭据。

    2. 查看并接受条款和条件。
    3. 选择要部署堆栈的区域。
    4. 按照屏幕上的提示和说明创建堆栈。
    5. 创建堆栈后,单击 Terraform 操作,然后选择计划
    6. 等待作业完成,然后查看计划。

      要进行任何更改,请返回到“堆栈详细信息”页,单击编辑堆栈,然后进行所需的更改。然后,再次运行计划操作。

    7. 如果不需要进一步更改,请返回“堆栈详细信息”页面,单击 Terraform 操作,然后选择应用
  • 使用 Terraform CLI 部署:
    1. 转至 GitHub
    2. 将代码下载或克隆到本地计算机。
    3. 请遵循 deploy/complete/README.md 中的说明。

更改日志

此日志仅列出重大更改: