使用 Oracle Cloud Infrastructure DevOps 构建连续部署管道

要有效地在云中运行应用,必须快速交付软件。Oracle Cloud Infrastructure (OCI) DevOps 为开发人员提供了端到端的连续部署体验。OCI DevOps 包括部署管道,以将持续软件部署流程 (CD) 自动化到 OCI 平台:Container Engine for Kubernetes (OKE)、函数和计算实例。

通过管道部署自动完成软件发行版,提高开发人员工作效率,并帮助您更频繁地发布特性,同时减少错误。它有助于避免部署期间的停机,并自动更新应用程序的复杂性。OCI DevOps 可以由从内部部署或其他云迁移负载到 OCI 的客户以及在 OCI 上开发新应用的客户使用。

体系结构

在此参考体系结构中,使用 OCI DevOps 部署了一个 Hello World 应用程序样例。Hello World 应用程序已构建,可以部署。应用程序部署到三个不同的目标环境 :OKE、计算实例和函数。为了简化流程,Terraform 用于基础设施自动化。

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

下面是 dev-ops-deployment-p pipeline.png 的说明
插图 dev-ops-deployment-p pipeline.png 的说明

deploy-pipeline-devops-arch-oracle.zip

此体系结构具有以下组件:
  • 区域

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

    该体系结构使用单个区域。

  • DevOps project(项目)

    DevOps 项目是实现连续集成和部署 (CI/CD) 负载所需资源的逻辑分组。DevOps 资源可以是工件、部署管道和环境。通过 DevOps 项目,可以轻松地为所有 DevOps 资源启用日志记录、监视和通知。

  • 部署管道

    部署管道满足向环境提供一组工件所必须满足的要求。管道包含阶段,这些阶段是管道的构建块。管道可以有串行或并行运行的阶段,因此您可以控制软件发行版的流和逻辑。

  • 部署阶段
    阶段是在运行管道期间执行的单个操作。DevOps 部署管道包括以下预定义的阶段类型,供您在发行版流程中使用:
    • 滚动部署:OKE、Functions 或实例组的增量发行版。
    • 等待:等待 N 秒。
    • 人工审批:如果提供了审批,则继续;如果拒绝审批,则停止。
    • 调用函数:通过调用函数和传递请求参数的 Artifact 来执行定制任务和集成。
  • DevOps 对象

    DevOps Artifact 是对构成应用程序的任何文件、二进制文件、程序包、清单或映像的引用或指针。创建对象时,必须向 Oracle DevOps 通知实际对象的源位置。DevOps 支持 OCI 容器映像注册表和 OCI Artifact 注册表资料档案库。

  • Artifact 资料档案库

    Artifact 资料档案库用于创建资料档案库以对类似 Artifact 进行分组。创建资料档案库后, 可以将 Artifact 上载到它们。这些工件是将传送到目标部署环境的文本文件、二进制文件和部署清单的集合。每个项目对象都有一个名称,由其路径:版本组成。路径是用于组织对象的字符串。

  • OCI 日志记录和通知服务

    OCI 日志记录服务存储与部署相关的日志。部署运行时输出和部署的最终结果显示为日志条目。通过 OCI 通知服务,您可以查看部署项目及其资源的最新状态,并采取任何必要的操作。例如,当重要事件(如部署管道中的阶段等待审批)时,会通知您。当收到通知消息时,您可以转至 DevOps 部署管道并审批该阶段。

  • 部署环境
    环境是部署对象时客户计算资源的集合。环境可以是功能、计算虚拟机 (VM) 或裸金属实例,也可以是 OKE 集群。
    • Oracle Kubernetes 集群 (OKE):Oracle Container Engine for Kubernetes 是完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云中。
    • 计算实例:OCI 计算服务允许您在云中预配和管理计算主机。您可以使用符合 CPU、内存、网络带宽和存储资源要求的配置来启动计算实例。
    • 函数:Oracle Functions 是一个完全托管的多租户、高度可扩展的按需功能即服务平台。它基于企业级 OCI,由 Fn 项目开源引擎提供支持。
    环境可以位于部署管道区域的不同 OCI 区域中。这允许开发人员使用相同的部署管道在多个 OCI 区域中部署。

建议

使用以下建议作为起点。您的要求可能与此处介绍的体系结构有所不同。
  • 计算配置

    此体系结构使用具有 E3 或 E4 灵活配置的 Oracle Linux OS 映像以及最小资源来托管 OKE 群集节点中的计算主机。如果您的应用需要更多的内存或核心,则可以选择不同的配置。

  • VCN

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

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

    此体系结构使用公共 VCN 来托管 Oracle Container Engine for Kubernetes。您还可以使用专用 VCN。在这种情况下,请使用 NAT 网关通过公共互联网授予群集访问权限。

  • OKE

    此体系结构将 OKE 群集部署为目标环境之一。Worker 节点部署在 E3 或 E4 Oracle Linux OS 上。此体系结构使用集群中的三个 worker 节点,但每个集群最多可创建 1,000 个节点。

  • 函数

    如果选择将体系结构部署到 OCI 功能,将在租户中创建新的函数应用程序和函数。

  • 实例组

    如果您选择将架构部署到实例组,您的租户中会创建您所选配置的新计算实例。

  • 容器映像注册表

    此体系结构将注册表部署为专用 Docker 注册表以供内部使用。Docker 映像将推送到注册表中并从中提取。您还可以将注册表用作公共 Docker 注册表,使具有互联网访问权限的任何用户以及相应 URL 的知识从 Oracle Cloud 中的公共资料档案库中提取映像。

  • Artifact 注册表

    此体系结构为实例组、OKE 和函数部署使用的软件和配置创建对象。该体系结构创建用于内部使用的 Artifact 注册表资料档案库。软件二进制文件、文本和部署配置将上载到 Artifact 注册表资料档案库并从中下载。

考虑事项

部署此引用体系结构时,请考虑以下几点。

  • DevOps 支持的部署

    DevOps 支持部署到 OKE、计算主机和函数。此体系结构部署至 OKE 群集。根据要求考虑部署到其他端点。

  • Linux 支持服务

    到计算实例的实例组部署只支持 Linux 主机。

  • 已部署 Artifact

    使用 DevOps 部署的对象需要位于 OCI 对象注册表或容器映像注册表资料档案库中。

  • 应用程序分组

    作为最佳做法,将每个应用程序及其所有微服务归入一个项目中。

部署

此参考体系结构的 Terraform 代码可用作 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈。您还可以从 GitHub 下载代码并对其进行定制以满足您的特定要求。

  • 使用 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈进行部署:
    1. 单击特定用例的部署按钮以访问资源管理器:

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

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

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

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

浏览更多

要了解有关 OCI DevOps 的更多信息,请参见以下资源:

更改日志

此日志列出了重大更改: