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

在甲骨文云基础设施Kubernetes容器引擎上实现Jenkins的高效扩展与优化

2024-01-15 原创文章

开发者们常用Jenkins这一CI/CD系统来自动验证、构建和部署代码,让他们专注于新功能的交付。随着Kubernetes的发布,分布式和无共享架构逐渐成为常态,新近的CI/CD系统都部署在Kubernetes上。Jenkins的控制器/代理架构对于大型组织和开发团队来说可能扩展性不足,但得益于社区的努力,现在可以将Jenkins容器化,并以云原生方式部署。

您可以在Oracle Cloud Infrastructure Container Engine for Kubernetes(OKE)上托管Jenkins,集中构建自动化并随着软件项目的增长而扩展。通过在OKE上实施可扩展的Jenkins,开发人员将能够敏捷地开发新服务,并轻松扩展其CI/CD管道。

在这里,云服务的优势显而易见:成本效益高、灵活扩展,且无需实名认证。选择我们的云服务,您将获得高性价比的解决方案,同时减少潜在风险,保障业务的敏感信息。对于预算有限、注重隐私保护的小型团队和初创公司而言,这是一个理想的选择。我们的服务让您轻松上云,助力企业发展,无论是国内市场还是品牌出海,都能提供稳定可靠的支持。

架构

这一高层次的参考架构展示了在OKE上部署多个Jenkins实例的示例。将Jenkins作为服务部署在OKE上,可以根据需要进行扩展。

每个Jenkins控制器Pod都附带了一个持久化存储卷,用于保留流水线历史和团队安装的额外插件。每当触发流水线作业时,都会创建Jenkins代理,并在作业结束后自动销毁。

每个Jenkins实例都可以通过负载均衡器单独暴露,或者使用Kubernetes Ingress。

下图展示了这一参考架构。


架构包括以下组件:

区域

Oracle Cloud Infrastructure的一个区域是一个地理区域,包含一个或多个数据中心,称为可用性域。各个区域彼此独立,相距甚远(跨越国家甚至大陆)。

可用性域

可用性域是区域内独立的数据中心。每个可用性域中的物理资源与其他可用性域隔离,提供故障容忍能力。可用性域不共享基础设施,如电力或冷却系统,或内部可用性域网络。因此,一个可用性域的故障不太可能影响该区域内的其他可用性域。

虚拟云网络(VCN)和子网

VCN是您在Oracle Cloud Infrastructure区域中设置的可自定义的软件定义网络。像传统的数据中心网络一样,VCN让您完全控制网络环境。VCN可以有多个不重叠的CIDR块,您可以在创建VCN后更改它们。您可以将VCN分割成子网,这些子网可以限定在一个区域或一个可用性域。每个子网由不与VCN中其他子网重叠的连续地址范围组成。您可以在创建后更改子网的大小。子网可以是公共的或私有的。

负载均衡器

Oracle Cloud Infrastructure负载均衡服务提供从单一入口点到后端多个服务器的自动化流量分配。

安全列表

对于每个子网,您可以创建安全规则,指定必须允许进出子网的流量的来源、目的地和类型。

Kubernetes的容器引擎

Oracle Cloud Infrastructure容器引擎为Kubernetes提供了一个完全托管、可扩展且高度可用的服务,您可以用它将容器化应用程序部署到云端。您指定应用程序所需的计算资源,容器引擎为Kubernetes在Oracle Cloud Infrastructure的现有租户中预配这些资源。容器引擎使用Kubernetes自动化部署、扩展和管理跨主机集群的容器化应用程序。

建议

以下建议可作为您的起点。您的需求可能与这里描述的架构不同。

VCN

创建VCN时,根据您计划连接到VCN子网的资源数量来确定CIDR块的数量和每个块的大小。使用标准私有IP地址空间内的CIDR块。

选择不与任何其他网络(Oracle Cloud Infrastructure、您的本地数据中心或其他云提供商)重叠的CIDR块,以便您打算建立私有连接。创建VCN后,您可以更改、添加和移除其CIDR块。

设计子网时,考虑您的流量流和安全需求。将特定层或角色内的所有资源附加到同一子网,这可以作为安全边界。

安全

使用Oracle Cloud Guard主动监控和维护您在Oracle Cloud Infrastructure的OCI资源的安全。Cloud Guard使用您可以定义的检测器配方检查资源的安全弱点,并监控操作员和用户的高风险活动。当检测到任何配置错误或不安全活动时,Cloud Guard会推荐纠正措施,并协助采取这些措施,这是基于您可以定义的响应者配方的。

对于需要最高安全级别的资源,Oracle建议您使用安全区。安全区是与基于最佳实践的Oracle定义的安全策略配方相关联的区域。例如,安全区内的资源必须不可从公共互联网访问,并且必须使用客户管理的密钥进行加密。在安全区创建和更新资源时,OCI会根据安全区配方中的策略验证操作,并拒绝违反任何策略的操作。

负载均衡器带宽

创建负载均衡器时,您可以选择提供固定带宽的预定义形状,或者指定自定义(灵活)形状,在这里您设置带宽范围,并根据流量模式让服务自动扩展带宽。采用任何一种方法,您都可以在创建负载均衡器后随时更改形状。

Kubernetes的容器引擎和计算形状

在Kubernetes的容器引擎上至少部署了两个节点池:一个用于Jenkins控制器,另一个用于Jenkins代理。

为了节省成本并优化整体解决方案,建议使用VM.Standard.A1.Flex实例作为Jenkins控制器,因为Jenkins与ARM实例完全兼容。对于代理节点池,建议使用抢占式实例,因为通常流水线作业短暂且容错。

Oracle Cloud Infrastructure Registry

Oracle Cloud Infrastructure Registry是一个私有OCI兼容的容器存储库,用于托管镜像。在这种架构中,它是可选的,可以用来托管您自己的Jenkins自定义镜像,这些镜像安装了所有必要的插件。建议创建自定义Jenkins控制器镜像,以加强安全性,并将所有常用插件打包到一个单一容器镜像中。

考虑因素

在部署这一参考架构时,请考虑以下几点。

性能和可扩展性

通过使用Kubernetes,可以轻松地根据开发团队的增长或缩减来扩展Jenkins控制器和代理。此外,由于每次运行流水线作业时都会创建代理Pod,因此可以根据每个流水线的基础来自定义这些Pod使用的资源。

可用性

为了最大化可用性,建议在不同的可用性或故障域中配置多个OKE节点。此外,为了保护Jenkins免受自愿和非自愿的中断,可以使用标准的Kubernetes机制,如Pod中断预算和Pod反亲和性。

成本

这种架构的目的也是在使用Jenkins on OKE时最小化成本。可以使用ARM节点作为Jenkins控制器,其成本为灵活计算实例的四分之一。对于Jenkins代理,使用抢占式实例节点可以让客户节省一半的预算。


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

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

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

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

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

如您想咨询 Oracle 的相关业务,可联系搜索微信号:lhh1843812463woshiwhw123

或者可以进入以下群组进行咨询:

微信公众号

微信技术交流社群: