Takamol:在 Oracle Cloud 上为政府 HR 平台部署 Kubernetes 和微服务

为了帮助工作年龄的公民与政府和私营部门的雇主匹配,位于利雅得的 Takamol Holding 在混合基础设施中运行其职业培训、技能提升和人才开发服务平台,其云环境在 OCI Kubernetes Engine (OKE) 中运行多个 Kubernetes 集群。

Takamol 成立于 2013 年,是沙特阿拉伯人力资源和社会发展部的一个部门,花了近十年的时间在整个王国实现人力资源计划的现代化。

由于 Takamol 的本地部署基础设施成本过高,因此 Takamol 决定使用基于容器的微服务架构在 Oracle Cloud Infrastructure (OCI) 上运行,推出新的劳动力和经济开发平台。今天,成千上万的人每天使用高莫尔的平台,使他们能够找到,申请和准备有酬就业。最近,Takamol 迁移了一个捐赠平台,供机构和个人捐赠者使用。

在吉达的 Oracle Cloud 区域中,Takamol 的平台支持 5000 个并发用户和流程,每分钟最多支持 10,000 个请求。Takamol 使用 OCI 托管服务快速、零停机地自动更新其云原生平台。在 OCI 租户中,Takamol 可以在高峰期快速扩展并在非高峰期缩小规模,以尽可能低的成本提供即时支持。

Takamol 在 OCI 上的云原生部署的亮点包括:

  • 使用 OCI Kubernetes Engine 的基于容器的架构
  • 水平云池自动缩放 (HPA) 可在高峰时段满足高需求
  • 零信任网络访问
  • NGINX Web 应用程序防火墙
  • 对于有状态组件,Takamol 使用 PostgreSQL 作为其数据库,使用 RabbitMQ 作为消息队列

体系结构

Takamol Holding 工程师连接到零信任网络访问工具,并在访问虚拟云网络 (VCN) 之前通过其自己的单点登录进行验证。

平台用户通过 Oracle Cloud Infrastructure Load Balancing 进行路由,该服务可跨三个独立的容错域管理用户请求。然后,用户请求将发送到 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 入站控制器,在将其路由到最终目标之前,会对其进行检查。

在 Kubernetes 集群中,Takamol 使用多个开源工具来处理用户请求,包括 NGINX、反向代理服务器、负载平衡器和 API 网关。通过使用水平云池自动缩放 (HPA) 在高峰时段满足高需求,这些服务可以横向扩展到 Kubernetes 集群。Takamol 还使用第 7 层应用程序保护拒绝服务 (DoS) 应用程序,以及通过 F5 NGINX 保护 WAF 的应用程序。Takamol 的大多数应用程序都是无状态的,遵循 12 个因素模型,因此它们不需要应用程序内缓存或存储。相反,Takamol 的应用程序使用外部存储服务,这使得它们可以在 Kubernetes 集群中轻松部署、自动扩展和管理。

Takamol 还使用 Argo CD,这是一种用于 Kubernetes 的声明式 GitOps 连续交付工具。使用 Argo CD,Takamol 可以以声明方式部署其工作负载,而无需提供对集群的直接访问,这使得将其集群部署到专用子网中成为可能。而不是开发人员更新应用程序,Argo CD 从 Gitlab 存储库读取以部署新服务,而无需提供 Gitlab 直接访问以更新集群。对于有状态组件,Takamol 将 PostgreSQL 用于其数据库,将 RabbitMQ 用于消息排队。

负载平衡器、Kubernetes 集群和开源工具分别位于不同的子网中。虽然这些信息彼此隔离,但它们可以通过通信端口发送和接收信息。Takamol 使用 Oracle VCN 流日志和 SEIM 安全操作中心 (Security Operations Center,SOC),可以虚拟化不同子网之间的通信,而不必安装其他工具。在接下来的几个月中,Takamol 计划通过 Oracle Cloud Infrastructure Functions 发送 VCN 流日志,以将网络日志传送到 SEIM 解决方案。

  • 大约 90% 的 Takamol 架构是使用开源 Oracle Cloud Infrastructure Terraform 提供程序中的基础设施作为代码 (IaC) 构建的,该提供商具有自己的内部构建模块。此方法可减少部署和管理基础设施所需的人力,从而加快更改速度并显著降低人为错误风险。
  • Takamol 的开发、测试和预生产环境中的所有服务都被复制为其生产环境。这些环境都不是互连的。这样可以确保环境之间的一致性。
  • 数据库备份使用 pgbackrest 完成,该 pgbackrest 将备份归档并存储在 Oracle Cloud Infrastructure Block Volumes 中。这样可以实现数据库的长期存储,同时支持时间点 (PIT) 恢复。
  • 微服务、指标、OKE 日志和 GitLab 运行者使用 Oracle Cloud Infrastructure Object Storage 来缓存数据。它还为其 PostgreSQL 数据库提供经济高效的长期数据库备份。
  • Oracle Cloud Infrastructure RegistryOracle Cloud Infrastructure Identity and Access Management 策略可帮助 Takamol 控制用户对资料档案库的访问。此前,该公司使用的是 Docker Hub,它没有像 OCI 那样提供细粒度控制。此外,借助 OCI Registry,Takamol 使用内置安全扫描功能。
  • Takamol 使用 Loki(用于日志的时间序列数据库)、Prometheus(用于度量收集)、Tempo(用于跟踪)和 Grafana(用于可视化),这些都集中于单个 OKE 集群中。

下图说明了此引用体系结构。



takamol-oci-arch-oracle.zip

对于未来的状态和路线图,Takamol 希望将更多服务迁移到托管服务和云原生服务:

  • 在 Neom 的 Oracle Cloud 区域中运行灾难恢复站点。
  • 利用带有 OpenSearch 的 Oracle Cloud Infrastructure 搜索功能,创建分布式、完全托管且无需维护的全文搜索引擎。
  • 利用 Oracle Autonomous Data Warehouse 处理数据库工作负载。
  • 使用 Oracle Cloud Infrastructure Vulnerability Scanning Service 扫描漏洞,尤其是在 docker 映像中。

该体系结构具有以下组件:

  • Tenancy

    租户是 Oracle 在您注册 Oracle Cloud Infrastructure 时在 Oracle Cloud 中设置的安全隔离分区。您可以在您的租户内的 Oracle Cloud 中创建、组织和管理资源。租户是公司或组织的同义词。通常,公司将具有单个租户并反映其在该租户中的组织结构。单个租户通常与单个订阅关联,单个订阅通常只有一个租户。

  • 区域

    Oracle Cloud Infrastructure 区域是包含一个或多个数据中心(称为可用性域)的本地化地理区域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。

  • 区间

    区间是 Oracle Cloud Infrastructure 租户中的跨区域逻辑分区。使用区间来组织、控制访问并设置 Oracle Cloud 资源的使用限额。在给定的区间中,您可以定义用于控制资源访问和设置权限的策略。

  • 可用性域

    可用性域是区域中的独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供容错能力。可用性域不共享电源或冷却设备等基础设施,也不共享内部可用性域网络。因此,一个可用性域出现故障不会影响区域中的其他可用性域。

  • 容错域

    容错域是可用性域内的一组硬件和基础设施。每个可用性域都有三个容错域,它们具有独立的电源和硬件。在多个容错域之间分配资源时,应用可以承受容错域内的物理服务器故障、系统维护和电源故障。

  • 虚拟云网络 (VCN) 和子网

    VCN 是一个可定制的软件定义网络,您可以在 Oracle Cloud Infrastructure 区域中设置。与传统的数据中心网络一样,VCN 允许您控制您的网络环境。VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 划分为子网,子网可以限定为区域或可用性域。每个子网都包含一系列不与 VCN 中的其他子网重叠的连续地址。可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。

  • 安全列表

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

  • 路由表

    虚拟路由表包含用于将流量从子网路由到 VCN 之外目的地的规则,通常是通过网关。

  • Internet 网关

    通过互联网网关,可以在 VCN 中的公共子网与公共互联网之间进行流量传输。

  • 服务网关

    通过服务网关,您可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量通过 Oracle 网络结构传输,不会通过互联网传输。

  • 负载平衡器

    Oracle Cloud Infrastructure Load Balancing 服务提供从单个入口点到后端多个服务器的自动流量分配。

  • Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes EngineOCI Kubernetes EngineOKE )是一项完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云中。您可以指定应用所需的计算资源,Kubernetes Engine 在现有租户的 Oracle Cloud Infrastructure 上预配这些资源。OKE 使用 Kubernetes 跨主机集群自动部署、扩展和管理容器化应用。

  • 计算服务

    借助 Oracle Cloud Infrastructure Compute ,您可以在云中预配和管理计算主机。您可以通过配置启动计算实例,以满足对 CPU、内存、网络带宽和存储的资源要求。创建计算实例后,可以安全地访问该实例,重新启动该实例,附加和分离卷,并在不再需要时终止该实例。

  • 服务连接器

    Oracle Cloud Infrastructure Service Connector Hub 是一个云消息总线平台,可编排 OCI 服务之间的数据移动。可以使用服务连接器将数据从源服务移动到目标服务。服务连接器还允许您选择性地指定在将数据交付到目标服务之前要对数据执行的任务(例如函数)。

    您可以使用 Oracle Cloud Infrastructure 服务连接器中心为安全信息和事件管理 (SIEM) 系统快速构建日志记录聚合框架。

  • 注册表

    Oracle Cloud Infrastructure Registry 是一个由 Oracle 管理的注册表,可帮助您简化开发到生产工作流。通过注册表,您可以轻松地存储、共享和管理开发对象,例如 Docker 映像。Oracle Cloud Infrastructure 的高可用性和可扩展性架构可确保您能够可靠地部署和管理应用。

  • 身份和访问管理 (IAM)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) 是 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Applications 的访问控制层。通过 IAM API 和用户界面,您可以管理身份域和身份域中的资源。每个 OCI IAM 身份域代表一个独立的身份和访问管理解决方案或不同的用户群体。

  • 策略

    Oracle Cloud Infrastructure Identity and Access Management 策略指定谁可以访问哪些资源以及如何访问这些资源。可以在组和区间级别授予访问权限,这意味着您可以编写策略来为组提供特定区间内或租户的特定类型的访问权限。

  • Oracle Cloud Infrastructure Vault

    借助 Oracle Cloud Infrastructure Vault ,您可以集中管理加密密钥,以保护您的数据和用于保护对云中资源的访问的密钥凭证。可以使用 Vault 服务创建和管理 Vault、密钥和密钥。

  • Cloud Guard

    您可以使用 Oracle Cloud Guard 监视和维护 Oracle Cloud Infrastructure 中资源的安全性。Cloud Guard 使用检测器配方,您可以定义该配方来检查资源是否存在安全漏洞,以及监视操作员和用户是否存在某些风险活动。检测到任何配置错误或不安全活动时,Cloud Guard 会根据您可以定义的响应器配方推荐更正操作并协助执行这些操作。

  • 日志记录
    日志记录是一项高度可扩展且完全托管的服务,它允许您从云端资源访问以下类型的日志:
    • 审计日志:与审计服务发出的事件相关的日志。
    • 服务日志:由各个服务发出的日志,如 API 网关、事件、函数、负载平衡、对象存储和 VCN 流日志。
    • 定制日志:包含来自定制应用程序、其他云提供商或内部部署环境的诊断信息的日志。
  • 对象存储

    Oracle Cloud Infrastructure Object Storage 支持您快速访问任意内容类型的大量结构化和非结构化数据,包括数据库备份、分析数据以及图像和视频等丰富内容。您可以安全地存储数据,然后直接从互联网或云平台检索数据。您可以在不降低性能或服务可靠性的情况下扩展存储。将标准存储用于需要快速、立即和频繁访问的“热”存储。将归档存储用于长期保留、很少访问或很少访问的“冷”存储。

  • 分析

    Oracle Analytics Cloud 是一项可扩展且安全的公有云服务,可为业务分析师提供基于 AI 的现代自助分析功能,以支持数据准备、可视化、企业报告、增强分析以及自然语言处理和生成。借助 Oracle Analytics Cloud ,您还可以获得灵活的服务管理功能,包括快速设置、轻松扩展和打补丁以及自动化生命周期管理。

确认

  • Authors :Robert Huie、Sasha Banks-Louie
  • 贡献者:Tim Graves、Faisal Alsanie、Robert Lies

    Takamol 团队:Mohammed BinSabbar