欢迎访问深圳敏捷云计算科技有限公司!

使用甲骨文云 OCI DevOps 部署基于 Helm 的应用程序:云开发的创新之旅

2024-03-05 原创文章

软件的快速交付对于在云中高效运行您的应用程序至关重要。通过管道部署自动化软件发布,可以提高开发人员的生产力,并允许您更频繁、更少错误地发布功能。它有助于避免部署期间的停机时间,并自动化更新应用程序的复杂性。


Oracle Cloud Infrastructure DevOps 服务为开发人员提供端到端的持续部署体验。Oracle Cloud Infrastructure DevOps 服务包括部署管道,以自动化您的持续软件交付和部署过程(CD)到 Oracle Cloud Infrastructure (OCI) 平台:Oracle Cloud Infrastructure 容器引擎 Kubernetes、Oracle Functions 和 Oracle Cloud Infrastructure 计算实例。从本地或其他云迁移工作负载到 OCI 的客户,以及在 OCI 上开发新应用程序的客户,都可以使用 Oracle Cloud Infrastructure。


架构

这一架构展示了一个使用 Oracle Cloud Infrastructure (OCI) DevOps 服务从代码仓库部署的 NodeJS 应用程序示例。该应用程序部署到 Oracle Cloud Infrastructure 容器引擎 Kubernetes (OKE) 集群。为了简化流程,我们使用 Terraform 进行基础设施自动化。以下图表展示了这一参考架构。

此架构包含以下组件:


区域(Region)

  • 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 资源启用日志记录、监控和通知。


构建管道(Build Pipeline)

  • 构建管道从您的源代码仓库获取提交 ID,并使用该源代码运行您的构建指令。构建管道定义了构建过程的一系列阶段:构建、测试和编译软件制品,将制品交付给 OCI 仓库,以及可选地触发部署。您在构建规范文件中定义构建运行的流程和指令。


构建阶段(Build Stages)

  • 构建阶段是构建管道运行期间发生的单个操作。OCI DevOps 构建管道包括三个阶段:构建容器:执行 build_spec.yaml 指令以编译、构建并准备必要的制品。上传制品:上传所有准备好的制品,如 docker 镜像被推送到配置的 Oracle Cloud Infrastructure Registry 仓库。触发部署:触发部署管道以将更改应用于配置的 OKE。


部署管道(Deployment Pipeline)

  • 部署管道包含了将一组制品交付到环境中所需满足的要求。管道包含阶段,这些阶段是管道的构建块。管道可以有串行或并行运行的阶段,因此您可以控制软件发布的流程和逻辑。


部署阶段(Deployment Stages)

  • 阶段是管道运行期间发生的单个操作。OCI DevOps 部署管道只包括一个预定义的阶段,称为“部署 Helm”,用于使用 Helm Chart 部署 Kubernetes 应用程序。Helm Chart URL 和可选的 values.yaml 文件作为 OCI DevOps 制品被发送到部署 Helm 阶段。执行期间,部署 Helm 阶段从 Oracle Cloud Infrastructure Registry 获取 Helm 图表,并将其应用于配置的 OKE OCI DevOps 环境,可以选择提供 values.yaml 文件。


DevOps 制品(DevOps Artifact)

  • OCI DevOps 制品是指向任何文件、二进制文件、包、清单或构成您的应用程序的镜像的引用或指针。创建制品时,您必须通知 OCI DevOps 实际制品的源位置。OCI DevOps 支持 OCI 容器注册表和 OCI 制品注册表存储库。


制品仓库(Artifact Repository)

  • 制品仓库用于创建用于分组相似制品的仓库。在创建仓库后,您可以上传制品。这些制品是文本文件、二进制文件和部署清单的集合,将被交付到目标部署环境。每个制品都有一个名称,由其路径:版本组成。路径是用于组织制品的字符串。


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 通知服务存储与部署相关的日志。部署运行时输出和部署的最终结果显示为日志条目。OCI 通知服务提供部署项目及其资源的最新状态的可见性,并采取必要的行动。


部署环境

  • 环境是客户的计算资源的集合,制品在其中部署。环境可以是函数、计算虚拟机(VM)或裸机实例,或者是 OKE 集群。Oracle Kubernetes 集群(OKE):OCI 容器引擎为 Kubernetes 是一个完全托管、可伸缩且高度可用的服务,您可以使用它将容器化应用程序部署到云中。
  • 计算实例:OCI 计算服务使您能够在云中预配和管理计算主机。您可以启动满足您的 CPU、内存、网络带宽和存储资源需求的计算实例。
  • 函数:Oracle Functions 是一个完全托管、多租户、高度可伸缩、按需的函数即服务(FaaS)平台。它基于企业级 OCI 构建,并由 Fn Project 开源引擎提供支持。
  • 本架构使用 OKE 集群作为环境。环境可以与部署管道的区域不同,位于不同的 OCI 区域。这允许开发者使用相同的部署管道在多个 OCI 区域进行部署。



推荐方案

使用以下建议作为起点。您的需求可能与此处描述的架构不同。


虚拟云网络(VCN)

  • 创建 VCN 时,根据您计划连接到 VCN 子网的资源数量,确定所需的 CIDR 块数量和每个块的大小。使用标准私有 IP 地址空间内的 CIDR 块。
  • 创建 VCN 后,您可以更改、添加和移除其 CIDR 块。
  • 本架构使用公共 VCN 托管 OKE 集群。您也可以使用私有 VCN。在这种情况下,请使用 NAT 网关以使集群能够通过公共互联网访问。


计算形状(Compute Shapes)

  • 本架构使用带有 E4 弹性形状的 Oracle Linux OS 镜像,以最小资源托管 OKE 集群节点中的计算主机。如果您的应用程序需要更多内存或核心,您可以选择不同的形状。


Kubernetes(OKE)

  • 本架构部署到 OKE 集群作为目标端点。工作节点部署在 E4 Oracle Linux OS 上。本架构在集群中使用三个工作节点,但您可以在每个集群上创建多达 1000 个节点。


容器镜像注册表(Container Image Registry)

  • 本架构部署注册表作为内部使用的私有 Docker 注册表。Docker 镜像被推送到注册表并从中拉取。您也可以将注册表用作公共 Docker 注册表,使任何具有互联网访问权限和知道适当 URL 的用户能够从 Oracle Cloud 中的公共仓库拉取镜像。在本架构中,同一容器注册表也用于存储 Helm 图表。


制品注册表(Artifact Registry)

  • 本架构为 OKE 集群使用的软件和配置创建了一个制品。架构为内部使用创建了一个制品注册表仓库。软件二进制文件、文本和部署配置被上传到制品注册表仓库并从中下载。



考虑因素

部署此参考架构时,请考虑以下几点。

Oracle Cloud Infrastructure DevOps 支持的部署

  • DevOps 支持部署到 Kubernetes(OKE)、计算主机和 Oracle Functions。本架构使用 Helm Chart 部署到 OKE 集群。根据需求考虑部署到其他端点。

支持的主机

  • 仅支持将实例组部署到 Oracle Cloud Infrastructure 计算实例的 Linux 主机。

制品

  • 使用 Oracle Cloud Infrastructure DevOps 部署的制品必须位于 Oracle Cloud Infrastructure 制品注册表或容器镜像注册表仓库中。

项目

  • 最佳实践是将每个应用程序及其所有微服务分组到单个项目中。


部署

此参考架构的 Terraform 代码在 GitHub 上可用。

  • 使用 Oracle Cloud Infrastructure 资源管理器中的示例堆栈进行部署:点击,如果您尚未登录,请输入租户和用户凭证。选择您希望部署堆栈的区域。按照屏幕上的提示和指示创建堆栈。创建堆栈后,点击 Terraform 操作,并选择 Plan。等待作业完成,并审阅计划。如需进行任何更改,请返回到堆栈详情页面,点击编辑堆栈,并进行必要的更改。然后,再次运行 Plan 操作。如果不需要进一步更改,返回到堆栈详情页面,点击 Terraform 操作,并选择 Apply。




使用 GitHub 中的 Terraform 代码进行部署:


  1. 访问 GitHub。
  2. 克隆或下载仓库到您的本地计算机。
  3. 按照 README 文档中的指示操作。




开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。