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

使用甲骨文云 OCI 守护程序和 GitHub Actions 在私有 OKE 集群上部署应用程序:高效、安全的云端解决方案

2024-01-15 原创文章

了解如何在安全、合规、网络隔离和控制等多种因素驱动下,有效利用 Oracle 云基础设施守护程序会话和 GitHub Actions,以部署私有 Oracle 容器引擎 Kubernetes (OKE) 集群。OKE 是一个全托管、可扩展且高可用的服务,可帮助你将容器化应用部署到云端。

GitHub Actions 是 GitHub 提供的强大的工作流自动化和持续集成/持续部署 (CI/CD) 平台。它允许你使用 YAML 语法定义自定义工作流,可由代码推送、拉取请求或计划任务等多种事件触发。本参考架构探讨了利用 OCI 守护程序会话和 GitHub Actions 部署私有 OKE 集群的方法。

架构

本参考架构展示了 OCI 守护程序和 GitHub Actions 的整合,以促进对私有 OKE 集群的部署。

私有 OKE 集群无法从外部网络访问。为了访问 K8s API 私有端点,需要建立一个 SSH 端口转发的 OCI 守护程序会话。这种设置使得在集群内执行 kubectl 命令以进行各种部署操作成为可能。

当代码推送到仓库时,GitHub Actions 工作流会自动触发。在工作流运行期间,创建并使用 OCI 守护程序会话连接到私有 K8s API 端点,以执行部署操作。工作流完成后,OCI 守护程序会话将被删除。这种方法确保了一个高度安全和高效的部署过程。此外,这个工作流可作为执行持续集成任务的框架,并可进一步定制以符合你的具体开发流程和需求。下面的图表展示了这一参考架构。


在你开始之前

  1. 配置一个 OKE 集群,确保 Kubernetes API 端点和工作节点设置在一个私有子网中。 注意:私有 Kubernetes API 端点将用于建立 OCI 守护程序端口转发会话。
  2. 设置创建的 OCI 守护程序服务,将 OKE VCN 设为目标 VCN,将 OKE 节点子网设为目标子网。
  3. 设置所需的 IAM 服务策略。
  4. 注意:有关集群创建和部署所需 IAM 策略的设置,请参阅“进一步探索”中的链接。

该架构包括以下组件:

租户(Tenancy)

当你注册 Oracle 云基础设施服务时,Oracle 会在 Oracle 云中为你设置一个安全且隔离的分区,称为租户。你可以在自己的租户内创建、组织和管理 Oracle 云中的资源。租户相当于一个公司或组织。通常,一家公司会有一个租户,并在该租户内反映其组织结构。一个租户通常与一个订阅相关联,而一个订阅通常只有一个租户。

地区(Region)

Oracle 云基础设施地区是一个地理位置局限的区域,包含一个或多个数据中心,称为可用性域。地区彼此独立,相隔很远(跨越国家甚至洲际)。

分区(Compartment)

分区是 Oracle 云基础设施租户内跨地区的逻辑分割。使用分区来组织你在 Oracle 云中的资源,控制对这些资源的访问,并设置使用配额。为了控制对某个分区内资源的访问,你需要定义策略,指定谁可以访问这些资源以及他们可以执行哪些操作。

可用性域(Availability Domains)

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

故障域(Fault Domains)

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

虚拟云网络(VCN)和子网

VCN 是你在 Oracle 云基础设施地区中设置的可定制、软件定义的网络。就像传统数据中心网络一样,VCN 让你完全控制自己的网络环境。VCN 可以有多个不重叠的 CIDR 块,你可以在创建后更改这些块。你可以将 VCN 分割为子网,这些子网可以被限定在一个地区或一个可用性域。每个子网包含一个连续的地址范围,这些地址与 VCN 中的其他子网不重叠。你可以在创建后更改子网的大小。子网可以是公共的或私有的。

负载均衡器(Load Balancer)

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

安全列表(Security List)

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

网络地址转换(NAT)网关

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

服务网关(Service Gateway)

服务网关从 VCN 提供对其他服务的访问,例如 Oracle 云基础设施对象存储。从 VCN 到 Oracle 服务的流量经过 Oracle 网络结构,而不经过互联网。

云卫士(Cloud Guard)

你可以使用 Oracle 云卫士监控和维护 Oracle 云基础设施中资源的安全。云卫士使用你可以定义的检测配方,检查资源的安全弱点,并监控操作者和用户的高风险活动。当检测到任何配置错误或不安全活动时,云卫士会推荐纠正措施,并基于你可以定义的响应配方帮助采取这些措施。

安全区(Security Zone)

安全区从一开始就确保遵循 Oracle 的安全最佳实践,通过强制执行诸如加密数据和防止网络公开访问等政策。安全区与同名的分区相关联,并包括适用于该分区及其子分区的安全区政策或“配方”。你不能将标准分区添加或移动到安全区分区。

容器引擎 Kubernetes(Container Engine for Kubernetes)

Oracle 云基础设施容器引擎 Kubernetes 是一个全托管、可扩展且高可用的服务,可帮助你将容器化应用部署到云端。你可以指定应用程序所需的计算资源,容器引擎 Kubernetes 会在现有的租户中的 Oracle 云基础设施上提供这些资源。容器引擎 Kubernetes 使用 Kubernetes 来自动化跨主机集群部署、扩展和管理容器化应用程序。

守护程序服务(Bastion Service)

Oracle 云基础设施守护程序提供对没有公共端点且需要严格资源访问控制的资源的受限和时间限定的安全访问,例如裸机和虚拟机、Oracle MySQL 数据库服务、自治事务处理(ATP)、Oracle 容器引擎 Kubernetes (OKE) 以及任何其他允许安全外壳协议(SSH)访问的资源。通过 Oracle 云基础设施守护程序服务,你可以在不部署和维护跳板主机的情况下启用对私有主机的访问。此外,你将通过基于身份的权限和集中式、审计的、时限的 SSH 会话获得改善的安全姿态。Oracle 云基础设施守护程序消除了为守护访问设置公网 IP 的需要,避免了在提供远程访问时的麻烦和潜在的攻击面。

推荐

以下建议可作为起点。你的需求可能与此处描述的架构有所不同。

虚拟云网络(VCN)

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

云卫士(Cloud Guard)

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

守护程序(Bastion)

OCI 守护程序让授权用户可以从特定 IP 地址通过安全外壳(SSH)会话连接到目标资源。请确保只有授权用户有权创建守护程序服务和会话。只应将守护程序的访问权限授予授权用户。

容器引擎 Kubernetes(OKE)

请确保已创建必要的 IAM 策略,并且只有授权用户可以访问集群资源。应启用额外的监控和日志记录,以提高安全姿态。

考虑因素

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

OKE 可扩展性

你可以通过更新 Kubernetes 集群中工作节点的数量来扩展应用程序,具体取决于负载。类似地,你可以通过减少集群中的工作节点来缩减规模。在 Kubernetes 集群上创建服务时,你可以创建一个负载均衡器来分配服务流量到分配给该服务的节点上。

应用程序可用性

故障域在单个可用性域内提供最佳的弹性。你还可以在多个可用性域部署执行相同任务的实例或节点。这种设计通过引入冗余来消除单点故障。

安全性

使用策略限制谁可以访问哪些 OCI 资源以及如何访问它们。

OKE 与 Oracle 云基础设施身份和访问管理(IAM)集成。IAM 提供了与原生 OCI 身份功能的简单认证。

部署

GitHub Actions 工作流代码可在 GitHub 上获取。

  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云服务,打开一个全新的世界大门。

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

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

微信公众号

微信技术交流社群: