向 Kubernetes 集群部署微服务

在微服务架构中,每个微服务都使用轻量级机制(如 REST API 请求)执行简单的任务并与客户或其他微服务进行通信。可以使用最适合所执行任务的编程语言对每个微服务进行编码。基于微服务的应用更易于部署和维护。

体系结构

此参考体系结构显示 Oracle Cloud Infrastructure 中 Kubernetes 集群中作为 Docker 容器部署的 Python Flask 和 Redis 微服务。容器从 Oracle Cloud Infrastructure Registry 中提取 Docker 映像。

下图说明了此参考体系结构。

下面介绍了微服务 -oci.png
插图微服务的说明 -oci.png

microservices-oci-oracle.zip

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

  • 区域

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

  • 可用性域

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

  • 故障域

    故障域是可用性域内一组硬件和基础设施。每个可用性域都有三个容错域,具有独立电源和硬件。在多个容错域之间分配资源时,您的应用可以在容错域内承受物理服务器故障、系统维护和电源故障。

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

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

  • Container Engine for Kubernetes

    Oracle Cloud Infrastructure Container Engine for Kubernetes 是完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云中。您可以指定应用所需的计算资源,Container Engine for Kubernetes 将它们预配到现有租户中的 Oracle Cloud Infrastructure。Container Engine for Kubernetes 使用 Kubernetes 在主机集群之间自动部署、扩展和管理容器化应用。

  • 注册表

    Oracle Cloud Infrastructure Registry 是由 Oracle 管理的注册表,可帮助您简化“开发到生产”工作流。通过注册,您可以轻松存储、共享和管理开发对象,例如 Docker 映像。Oracle Cloud Infrastructure 的高可用性和可扩展架构可确保您可以可靠地部署和管理应用。

建议

您的要求可能与此处介绍的体系结构有所不同。可将以下建议作为起点。

  • VCN

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

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

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

    设计子网时,请考虑您的流量和安全性要求。将特定层或角色中的所有资源连接到可充当安全边界的同一子网。

    使用区域子网。

    为简单起见,此体系结构使用公共子网来托管 Container Engine for Kubernetes。您还可以使用专用子网。在这种情况下,请使用 NAT 网关允许从集群访问公共互联网。

  • Container Engine for Kubernetes

    在此体系结构中, worker 节点使用 VM.Standard2.1 配置,并在 Oracle Linux 上运行。两个 worker 节点用于托管两个不同的微服务,但每个集群最多可以创建 1000 个节点。

  • 注册表

    我们将 Oracle Cloud Infrastructure Registry 用作内部使用的专用 Docker 注册表,将 Docker 映像推送到注册表中并从中提取这些映像。您还可以将其用作公共 Docker 注册表,使任何具有 Internet 访问权限的用户和相应的 URL 从注册表中的公共资料档案库中提取映像。

考虑事项

  • 可扩展性

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

  • 应用程序可用性

    容错域在一个可用性域内提供出色的弹性。还可以在多个可用性域中部署执行相同任务的实例或节点。此设计通过引入冗余来消除单点故障。

  • 可管理性

    此体系结构使用两个微服务。一个是 Python Flask 微服务,它是一个执行 CRUD 操作的简单 Web 应用程序。另一个微服务是 Redis 内存中数据库。Python-Flask 微服务与 Redis 微服务进行通信以检索数据。

  • 安全性

    使用策略来限制谁可以访问公司拥有的 Oracle Cloud Infrastructure 资源以及访问方式。

    Container Engine for Kubernetes 与 Oracle Cloud Infrastructure Identity and Access Management (IAM) 集成。IAM 通过原生 Oracle Cloud Infrastructure 身份功能提供简单的验证。

部署

GitHub 中提供了部署 OKE 群集所需的代码。此代码不部署微服务。

您只需单击一下即可将代码拉入 Oracle Cloud Infrastructure Resource Manager ,创建堆栈并进行部署。或者,也可以将代码从 GitHub 下载到计算机,定制代码,然后使用 Terraform CLI 部署体系结构。

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

      如果尚未登录,请输入租户和用户身份证明。

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

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

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

更改日志

此日志列出了重大更改: