使用 Oracle Cloud Infrastructure DevOps 和 OCI 实例构建 CI/CD 管道
体系结构
此参考架构展示了如何构建现代应用,然后将其部署到 OCI 计算实例。本演示使用基于 Graal Enterprise/Micronaut 的 Java 应用程序的应用程序。应用通过 OCI 负载平衡器公开,确保在活动部署期间顺利转移流量。
下图展示了此体系结构。
插图 instance-group-deploy-arch.png 的说明
- 区域
OCI 区域是一个本地化地理区域,其中包含一个或多个数据中心(称为可用性域)。地区独立于其他地区,广阔的距离可以分隔它们(在各国甚至大陆)。该体系结构使用单个区域。
- DevOps 项目
实施 CI/CD 工作流所需的 DevOps 资源的逻辑分组。DevOps 资源可以是构件、构建管道、部署管道、外部连接、触发器和环境。通过 DevOps 项目,可以轻松地为所有 DevOps 资源启用日志记录、监视和通知。
- 工作版本管道
构建管道从源代码资料档案库获取提交 ID,并使用该源代码运行构建指令。构建管道定义构建过程的一组阶段:构建、测试和编译软件对象,将对象交付到 OCI 资料档案库,以及(可选)触发部署。您可以在构建规范文件中定义构建运行的流和指令。
- 构建阶段
阶段是在管道运行期间发生的各个操作。此处提到的各种构建阶段包括:
- 托管构建阶段 - 用于构建和测试源代码的托管构建阶段。
- “传送对象”阶段 - 将构建阶段的输出推送到各种资料档案库的阶段。与容器映像一样,容器资料档案库和到构件注册表的部署清单。
- 调用部署 - 完成构建阶段后调用部署管道的阶段,以及将导出的变量从管理的构建阶段解析为部署管道阶段。
- 代码存储库
由 DevOps 服务托管的专用 Git 资源库。您可以使用我们的 DevOps 代码资料档案库存储、管理和发展源代码。
- 部署管道
用于将一组对象传送并部署到目标环境的一系列步骤。可以通过定义可以串行或并行运行的阶段来控制软件发行版的流和逻辑。
- 部署阶段
阶段是在管道运行期间发生的各个操作。在此过程中,我们在部署管道中使用计算实例组滚动阶段,部署管道将相应地将应用程序安装到 OCI 计算实例。
- DevOps 对象
DevOps Artifact 是对构成应用程序的任何文件、二进制文件、程序包、清单或映像的引用或指针。创建对象时,请通知 Oracle DevOps 实际对象的源位置。DevOps 支持 OCI 容器映像注册表和 OCI 构件注册表资料档案库。
- 构件资料档案库
构件资料档案库创建用于对类似构件进行分组的资料档案库。创建资料档案库后,您可以将对象上载到其中。这些对象是交付到目标部署环境的文本文件、二进制文件和部署清单的集合。每个对象都有一个名称,由其路径组成:版本。路径是用于组织对象的字符串。
- OCI 日志记录和通知服务
OCI 日志记录服务存储与部署相关的日志。部署运行时输出和部署的最终结果显示为日志条目。OCI 通知服务提供对部署项目及其资源的最新状态的可见性并采取任何必要的操作。例如,当重要事件(例如部署管道中的阶段等待审批)时,您将收到通知。收到通知消息时,可以转到 DevOps 部署管道并批准阶段。
- 部署环境
环境是客户在其中部署构件的计算资源的集合。环境可以是函数、计算虚拟机 (VM) 或裸金属实例,也可以是 OKE 集群。蓝绿色部署仅适用于 OKE 集群和计算虚拟机。
- OCI 计算实例
Oracle Cloud Infrastructure 提供快速、灵活且经济实惠的计算能力,可满足从高性能裸金属服务器和 VM 到轻量级容器的各种负载需求。OCI 计算提供灵活的 VM 和裸金属实例,以实现卓越的性价比。此架构使用 OCI Compute 和 Oracle Linux 作为 OS 映像。
- OCI 负载平衡器
Oracle Cloud Infrastructure Load Balancing 服务可以将一个入口点的自动流量分配到可从虚拟云网络 (VCN) 访问的多台服务器。该服务提供了一个负载平衡器,您可以选择公共或专用 IP 地址并预配带宽。
建议
- 计算配置
此体系结构使用具有 E3 或 E4 弹性配置的 Oracle Linux OS 映像(资源最少),以托管 OKE 群集节点中的计算主机。如果您的应用需要更多内存或核心,您可以选择其他配置。
- VCN
创建 VCN 时,根据您计划附加到 VCN 中子网的资源数,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。
创建 VCN 后,您可以更改、添加和删除其 CIDR 块。
此体系结构使用公共 VCN 来托管 Oracle Container Engine for Kubernetes。您还可以使用专用 VCN。在这种情况下,请使用 NAT 网关通过公共互联网授予集群访问权限。
- 实例组
如果您选择要部署到实例组的体系结构,则会在您的租户中创建所选配置的新计算实例。
- Artifact 注册表
此体系结构为实例组、OKE 和函数部署使用的软件和配置创建构件。体系结构创建供内部使用的构件注册表资料档案库。软件二进制文件、文本和部署配置将上载到 Artifact 注册表资料档案库并从中下载。
考虑事项
部署此引用体系结构时,请考虑以下几点。
- DevOps 支持的部署
DevOps 支持部署到 OKE、计算主机和函数。此体系结构部署到 OKE 群集。根据需求考虑部署到其他端点。
- Linux 支持
计算实例的实例组部署仅支持 Linux 主机。
- 部署的对象
要使用 DevOps 部署的构件需要在 OCI 构件注册表或容器映像注册表资料档案库中。
- 分组应用程序
最佳做法是将每个应用程序及其所有微服务分组到一个项目中。
部署
此引用体系结构的 Terraform 代码在 Oracle Cloud Infrastructure Resource Manager 中作为示例堆栈提供。您还可以从 GitHub 下载代码并对其进行定制以满足您的特定需求。
- 使用 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈进行部署:
- 使用 GitHub 中的 Terraform 代码部署:
- 转到 GitHub 。
- 将系统信息库克隆或下载到本地计算机。
- 按照
README
文档中的说明进行操作。