使用 Oracle Cloud Infrastructure DevOps 部署基于 Helm 的应用
快速交付软件对于在云中高效运行应用至关重要。通过管道部署自动完成软件发行版可以提高开发人员的工作效率,并且可以更频繁地发布功能并且减少错误。它有助于避免在部署期间停机,并自动完成应用程序的更新复杂性。
Oracle Cloud Infrastructure DevOps 服务为开发人员提供端到端连续部署体验。Oracle Cloud Infrastructure DevOps 服务包括用于自动执行连续软件交付和部署过程 (CD) 到 Oracle Cloud Infrastructure (OCI) 平台的部署管道:Oracle Cloud Infrastructure Container Engine for Kubernetes、Oracle Functions 和 Oracle Cloud Infrastructure Compute 实例。
将工作负载从内部部署或其他云迁移到 OCI 的客户和在 OCI 上开发新应用的客户可以使用 Oracle Cloud Infrastructure。
体系结构
此体系结构显示使用 Oracle Cloud Infrastructure (OCI) DevOps 服务通过代码资料档案库中的 Helm 图表部署的示例 NodeJS 应用程序。应用程序已部署到 Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) 集群。为了简化流程,我们使用 Terraform 来实现基础设施自动化。
下图说明了此引用体系结构。

插图 deploy-helm-based-app.png 的说明
deploy-helm-based-app-oracle.zip
该体系结构具有以下组成部分:
- 区域
Oracle Cloud Infrastructure 区域是一个局部地理区域,其中包含一个或多个数据中心,称为可用性域。区域独立于其他区域,而广阔的距离可以分离它们(跨国家甚至大陆)。
- 虚拟云网络 (VCN) 和子网
VCN 是可在 Oracle Cloud Infrastructure 区域中设置的可定制的软件定义网络。与传统的数据中心网络一样,VCN 允许您完全控制您的网络环境。VCN 可以具有多个不可重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 分段到子网,这些子网可以限定到区域或可用性域。每个子网包含一个连续的地址范围,这些地址与 VCN 中的其他子网不重叠。您可以在创建子网后更改其大小。子网可以是公共子网,也可以是专用子网。
- OCI DevOps 项目
OCI DevOps 项目是实施连续集成和部署 (CI/CD) 负载所需的资源的逻辑分组。OCI DevOps 资源可以是构件、部署管道和环境。通过 OCI DevOps 项目,可以轻松地为 OCI DevOps 资源启用日志记录、监视和通知。
- 构建管道
构建管道从源代码资料档案库获取提交 ID,并使用该源代码运行构建指令。构建管道为构建流程定义了一组阶段:构建、测试和编译软件构件,将构件传送到 OCI 系统信息库,以及(可选)触发部署。您可以在构建规范文件中定义构建运行的流和说明。
-
构建阶段
构建阶段是在构建管道运行期间发生的单个操作。OCI DevOps 构建管道包括三个阶段:- 构建容器:执行
build_spec.yaml指令以编译、构建和准备必要的构件。 - 上载构件:将所有已准备好的构件(如 docker 映像)推送到已配置的 Oracle Cloud Infrastructure Registry 资料档案库。
- 触发部署:触发部署管道以将更改应用于配置的 OKE。
- 构建容器:执行
- 部署管道
部署管道包含向环境提供一组对象时必须满足的要求。管道包含阶段,这些阶段是管道的构建块。管道可以有串行或并行运行的阶段,因此您可以控制软件发行版的流和逻辑。
- 部署阶段
阶段是在运行管道期间发生的单个操作。OCI DevOps 部署管道仅包括一个名为
Deploy Helm的预定义阶段,用于使用 Helm 图表部署 Kubernetes 应用程序。Helm 图表 URL 和可选的values.yaml文件 OCI DevOps 对象作为参数发送到部署 Helm 阶段。在执行过程中,部署 Helm 阶段会从 Oracle Cloud Infrastructure Registry 中提取 Helm 图表,并将该图表应用到配置的 OKE OCI DevOps 环境,其中包含可选提供的values.yaml文件。 - DevOps 对象
OCI DevOps 对象是构成应用程序的任何文件、二进制文件、程序包、清单或映像的引用或指针。创建构件时,必须将实际构件的源位置通知 OCI DevOps。OCI DevOps 支持 OCI 容器注册表和 OCI Artifact 注册表资料档案库。
- 构件资料档案库
Artifact 资料档案库创建用于对相似 Artifact 进行分组的资料档案库。您可以在创建构件后将其上载到资料档案库。这些构件是将传送到目标部署环境的文本文件、二进制文件和部署清单的集合。每个构件都有一个名称,该名称由其路径组成:版本。路径是用于组织对象的字符串。
- Helm
Helm 是 Kubernetes 的软件包管理器,它以一组 Helm 图表的形式管理应用程序部署,您可以轻松管理各种单独的服务及其生命周期。
适用于 Oracle Linux 的 Helm 模块将 Helm 安装到 Kubernetes 模块(群集)。
- Helm 图表
Kubernetes YAML 清单组合为一个可部署到 Kubernetes 集群的程序包。Helm 图表包含 Kubernetes YAML 清单文件的模板以及用于提供默认模板值的
values.yaml文件。使用 Helm 图表部署应用程序或大型应用程序的一个组件。 - OCI 日志记录和 OCI 通知服务
Oracle Cloud Infrastructure 日志记录和 Oracle Cloud Infrastructure Notifications 服务存储与部署相关的日志。部署运行时输出和部署的最终结果显示为日志条目。OCI 通知服务提供对部署项目及其资源的最新状态的可见性,并执行任何必要的操作。
- 部署环境
环境是部署构件的客户计算资源的集合。环境可以是函数、计算虚拟机 (VM) 或裸金属实例,也可以是 OKE 集群。
-
Oracle Kubernetes 集群 (OKE):OCI Container Engine for Kubernetes 是一种完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云中。
-
计算实例:OCI 计算服务允许您在云中预配和管理计算主机。您可以启动计算实例,其中包含满足 CPU、内存、网络带宽和存储资源需求的配置。
-
功能:Oracle Functions 是一个完全托管、多租户、高度可扩展、按需提供函数即服务平台。它基于企业级 OCI 构建,由 Fn 项目开源引擎提供支持。
-
建议
- VCN
创建 VCN 时,根据计划连接到 VCN 中的子网的资源数量,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。
创建 VCN 后,您可以更改、添加和删除其 CIDR 块。
此体系结构使用公共 VCN 来托管 OKE 集群。您还可以使用专用 VCN。在这种情况下,请使用 NAT 网关通过公共 Internet 访问集群。
- 计算配置
此体系结构使用具有 E4 弹性配置的 Oracle Linux OS 映像,最低资源用于托管 OKE 群集节点中的计算主机。如果您的应用需要更多内存或核心,您可以选择其他配置。
- Kubernetes (Oke)
此体系结构将部署到 OKE 集群作为目标端点。worker 节点部署在 E4 Oracle Linux OS 上。此体系结构在群集中使用三个 worker 节点,但在每个集群上最多可以创建 1,000 个节点。
- 容器映像注册表
此体系结构将注册表部署为供内部使用的专用 Docker 注册表。Docker 映像推送到注册表并从注册表提取。您还可以使用注册表作为公共 Docker 注册表,允许任何具有 Internet 访问权限的用户和相关 URL 的知识的用户从 Oracle Cloud 的公共存储库中提取映像。在此体系结构中,相同的容器注册表也用于存储 Helm 图表。
- 构件注册表
此体系结构为 OKE 群集使用的软件和配置创建构件。体系结构创建构件注册表资料档案库供内部使用。软件二进制文件、文本和部署配置将上载到 Artifact 注册表资料档案库并从中下载。
考虑事项
部署此引用体系结构时,请考虑以下几点。
- Oracle Cloud Infrastructure DevOps 支持的部署
DevOps 支持部署到 Kubernetes (OKE)、计算主机和 Oracle Functions。此体系结构使用 Helm 图表部署到 OKE 群集。考虑根据需求部署到其他端点。
- 支持的主机
Oracle Cloud Infrastructure Compute 实例的实例组部署仅支持 Linux 主机。
- Artifact
要使用 Oracle Cloud Infrastructure DevOps 部署的构件必须位于 Oracle Cloud Infrastructure Artifact 注册表或容器映像注册表资料档案库中。
- 项目
最佳做法是将每个应用程序及其所有微服务组合到一个项目中。
部署
GitHub 中提供了此参考体系结构的 Terraform 代码。
- 使用 Oracle Cloud Infrastructure Resource Manager 中的示例堆栈进行部署:
- 在 GitHub 中使用 Terraform 代码进行部署:
- 转至 GitHub。
- 将存储库克隆或下载到本地计算机。
- 按照
README文档中的说明进行操作。