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

甲骨文云使用Argo CD和甲骨文容器引擎实现Kubernetes的GitOps部署:高效、自动化的云原生管理

2024-02-29 原创文章

本文描述了使用Argo CD和甲骨文容器引擎为Kubernetes(OKE)部署GitOps的基本架构。


GitOps是CI/CD的一种形式,它使用Git仓库作为交付基础设施代码的唯一真理来源。它主张将应用程序的全部内容,从源代码到应用程序的配置,以声明式方式放在Git仓库中。这为部署对应用程序配置的更改提供了一致的方法,并通过使用众所周知的Git工作流程(如拉取请求和合并请求)提供版本控制。


采用GitOps原则确保:

  • 应用程序开发的标准工作流程。
  • 为设置应用程序要求提前增加安全性。
  • 通过Git提高可见性和版本控制,增加可靠性。
  • 在任何集群、任何云和任何本地环境中的一致性。


Argo CD是为Kubernetes量身打造的声明式持续交付工具。使用Argo CD时,Kubernetes配置通过更改Github仓库统一创建。这允许Git仓库成为Kubernetes集群中所有应用程序配置的唯一真理来源。Argo CD采用拉取模型,无论更改的来源如何,都会检查Git仓库中的更改。这些更改可以来自CI管道,也可以是开发者或管理员的手动配置。这允许CI/CD管道的分离。由于CI用于构建代码,更适合由开发者维护,而CD则是运维团队的关注点。两者之间的分离允许每个团队独立于彼此对CI/CD管道进行修改。


最佳实践是为应用程序源代码和配置分别有单独的Git仓库,因为应用程序的配置更改通常不需要更改应用程序源代码。拥有不同的仓库允许您更改应用程序配置而不触发CI构建。


Argo CD支持以下格式的Kubernetes配置:

  • Kubernetes清单
  • Helm图表
  • Kustomize清单。


对于由Argo CD管理的应用程序,应用程序的实时状态配置将持续监控。它与Git仓库中指定的期望状态进行比较。如果实时状态偏离期望状态,Argo CD将识别应用程序为OutOfSync,然后从Git仓库拉取配置并应用更改。


架构

此架构展示了一个部署了Argo CD工具的OKE集群,Argo CD在其自己的命名空间中部署。


您可以通过其Web界面或Argo CD命令行界面访问Argo CD应用程序。通过部署在OKE集群中的负载均衡器服务提供连接到Argo CD工具的连接。一旦部署了Argo CD,您就可以配置它与内部或外部托管在甲骨文云基础设施的Git仓库同步,只要OKE集群在所需端口上具有IP连接性以及Git仓库的凭据。一旦Argo CD与仓库同步,仓库中对应用程序配置所做的任何更新都将应用于OKE集群。如果在Git仓库之外对应用程序进行更改,Argo CD将认为应用程序不同步,并撤销更改,使其与Git仓库的期望状态一致。


以下图表说明了这一参考架构。


此架构包含以下组件:

租户

甲骨文自动化事务处理是一种自驾、自保护、自修复的数据库服务,专为事务处理工作负载优化。您无需配置或管理任何硬件,也无需安装任何软件。甲骨文云基础设施负责创建数据库,以及备份、打补丁、升级和调优数据库。


区域

甲骨文云基础设施区域是一个包含一个或多个数据中心(称为可用性域)的本地化地理区域。区域彼此独立,可以相隔很远的距离(跨越国家甚至大陆)。


隔间

隔间是甲骨文云基础设施租户内的跨区域逻辑划分。使用隔间来组织您在甲骨文云中的资源,控制对资源的访问,并设置使用配额。要控制对特定隔间中资源的访问,您需要定义策略,指定谁可以访问资源以及他们可以执行哪些操作。


可用性域

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


故障域

故障域是一个可用性域内的硬件和基础设施分组。每个可用性域有三个故障域,拥有独立的电源和硬件。当您在多个故障域中分布资源时,您的应用程序可以容忍物理服务器故障、系统维护和故障域内的电源故障。


虚拟云网络(VCN)和子网

VCN是您在甲骨文云基础设施区域中设置的可定制的、软件定义的网络。与传统数据中心网络一样,VCN让您完全控制您的网络环境。VCN可以有多个不重叠的CIDR块,您可以在创建VCN后更改这些块。您可以将VCN划分为子网,这些子网可以范围到一个区域或到一个可用性域。每个子网由不与VCN中其他子网重叠的连续地址范围组成。您可以在创建后更改子网的大小。子网可以是公共的或私有的。


负载均衡器

甲骨文云基础设施负载均衡服务提供了从单个入口点到后端多个服务器的自动流量分配。负载均衡器为不同的应用程序提供访问路径。


代码仓库

在DevOps服务中,您可以创建自己的私有代码仓库,或连接到外部代码仓库,如GitHub、GitLab和Bitbucket Cloud。


安全列表

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


NAT网关

NAT网关使VCN中的私有资源能够访问互联网上的主机,而不将这些资源暴露给传入的互联网连接。


服务网关

服务网关提供从VCN到其他服务(如甲骨文云基础设施对象存储)的访问。从VCN到甲骨文服务的流量通过甲骨文网络架构传输,不经过互联网。


云卫士

您可以使用甲骨文云卫士来监控和维护您在甲骨文云基础设施中资源的安全。云卫士使用您可以定义的检测配方来检查资源的安全弱点,并监控操作员和用户的风险活动。当检测

到任何配置错误或不安全活动时,云卫士会推荐纠正措施,并根据您可以定义的响应者配方协助采取这些措施。


安全区

安全区从一开始就确保了甲骨文的安全最佳实践,通过执行诸如加密数据和防止网络公共访问等策略,适用于整个隔间。安全区与同名隔间相关联,包括适用于该隔间及其子隔间的安全区策略或“配方”。您不能将标准隔间添加或移动到安全区隔间。


对象存储

对象存储提供快速访问大量结构化和非结构化数据的方式,内容类型包括数据库备份、分析数据以及如图像和视频等丰富内容。您可以安全且可靠地存储数据,然后直接从互联网或云平台内检索数据。您可以无缝扩展存储,而不会经历性能下降或服务可靠性降低。对于您需要快速、立即且频繁访问的“热”存储,请使用标准存储。对于您长时间保留并很少或几乎不访问的“冷”存储,请使用归档存储。


FastConnect

甲骨文云基础设施FastConnect提供了一种在您的数据中心与甲骨文云基础设施之间创建专用、私有连接的简便方法。与基于互联网的连接相比,FastConnect提供了更高的带宽选项和更可靠的网络体验。


本地对等网关(LPG)

LPG允许您在同一区域内将一个VCN与另一个VCN对等连接。对等连接意味着VCN之间使用私有IP地址进行通信,流量不经过互联网或路由通过您的本地网络。


自动化数据库

甲骨文云基础设施自动化数据库是完全托管、预配置的数据库环境,适用于事务处理和数据仓库工作负载。您无需配置或管理任何硬件,也无需安装任何软件。甲骨文云基础设施负责创建数据库,以及备份、打补丁、升级和调优数据库。


自动化数据仓库

甲骨文自动化数据仓库是一种自驾、自保护、自修复的数据库服务,专为数据仓库工作负载优化。您无需配置或管理任何硬件,也无需安装任何软件。甲骨文云基础设施负责创建数据库,以及备份、打补丁、升级和调优数据库。


自动化事务处理

甲骨文自动化事务处理是一种自驾、自保护、自修复的数据库服务,专为事务处理工作负载优化。您无需配置或管理任何硬件,也无需安装任何软件。甲骨文云基础设施负责创建数据库,以及备份、打补丁、升级和调优数据库。


Exadata数据库系统

Exadata云服务使您能够在云中利用Exadata的强大功能。您可以配置灵活的X8M系统,根据需求增长添加数据库计算服务器和存储服务器。X8M系统提供RoCE(RDMA over Converged Ethernet)网络以实现高带宽和低延迟、持久内存(PMEM)模块,以及智能的Exadata软件。您可以使用相当于四分之一机架X8系统的形状来配置X8M系统,然后在配置后的任何时候添加数据库和存储服务器。



建议

在部署Argo CD和甲骨文容器引擎为Kubernetes的GitOps时,使用以下建议作为起点。您的具体需求可能与这里描述的架构有所不同。


VCN

创建VCN时,根据您计划连接到VCN子网的资源数量来确定所需CIDR块的数量和每个块的大小。使用标准私有IP地址空间内的CIDR块。选择不与您打算建立私有连接的任何其他网络(在甲骨文云基础设施、您的本地数据中心或另一云提供商中)重叠的CIDR块。创建VCN后,您可以更改、添加和移除其CIDR块。设计子网时,请考虑您的流量流向和安全要求。将特定层或角色内的所有资源附加到同一子网,这可以作为一个安全边界。使用区域性子网。


安全

主动使用甲骨文云卫士来监控和维护您在甲骨文云基础设施中资源的安全。云卫士使用您可以定义的检测配方来检查资源的安全弱点,并监控操作员和用户的风险活动。当检测到任何配置错误或不安全活动时,云卫士推荐纠正措施,并根据您可以定义的响应者配方协助采取这些措施。对于需要最大安全性的资源,甲骨文建议您使用安全区。安全区是与甲骨文定义的安全策略配方相关联的隔间,这些策略基于最佳实践。例如,安全区中的资源不得从公共互联网访问,且必须使用客户管理的密钥进行加密。在安全区内创建和更新资源时,甲骨文云基础设施会根据安全区配方中的策略验证操作,并拒绝违反任何策略的操作。


云卫士

克隆和定制甲骨文提供的默认配方,以创建自定义的检测器和响应者配方。这些配方允许您指定哪种类型的安全违规会生成警告,以及允许对其执行什么操作。例如,您可能想要检测将可见性设置为公开的对象存储桶。在租户级别应用云卫士,以覆盖最广范围并减少维护多个配置的管理负担。您还可以使用管理列表功能将特定配置应用于检测器。


安全区

克隆和定制甲骨文提供的默认配方,以创建自定义的检测器和响应者配方。这些配方允许您指定哪种类型的安全违规会生成警告,以及允许对其执行什么操作。例如,您可能想要检测将可见性设置为公开的对象存储桶。在租户级别应用云卫士,以覆盖最广范围并减少维护多个配置的管理负担。您还可以使用管理列表功能将特定配置应用于检测器。


网络安全组(NSGs)

您可以使用NSGs来定义一组适用于特定VNIC的入站和出站规则。我们建议使用NSGs而不是安全列表,因为NSGs使您能够将VCN的子网架构与应用程序的安全要求分开。您可以使用NSGs来定义一组适用于特定VNIC的入站和出站规则。我们建议使用NSGs而不是安全列表,因为NSGs使您能够将VCN的子网架构与应用程序的安全要求分开。


负载均衡器带宽

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



部署

此参考架构的Terraform代码作为示例堆栈在甲骨文云基础设施资源管理器中提供。您也可以从GitHub下载代码,并根据您的具体需求进行定制。


使用甲骨文云基础设施资源管理器中的示例堆栈进行部署:

  1. 点击,如果您还未登录,请输入租户和用户凭证。
  2. 选择您希望部署堆栈的区域。
  3. 按照屏幕提示和指示创建堆栈。
  4. 创建堆栈后,点击Terraform操作,并选择计划(Plan)。
  5. 等待作业完成,并审阅计划。 若要进行任何更改,请返回到堆栈详情页面,点击编辑堆栈,并进行所需更改。然后,再次运行计划操作。
  6. 如果不需要进一步更改,请返回到堆栈详情页面,点击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云服务,打开一个全新的世界大门。