宣布推出 Port Ocean:一个开源可扩展框架

今天,我们宣布推出 Port Ocean,这是一个开源可扩展框架,它使 Port 成为一个开放、灵活的内部开发人员门户。

使用Port Ocean,任何人都可以创建数据导出器、自助服务操作、自动化和集成并将其添加到 Port。 

Ocean 的第一个激动人心的阶段是能够创建导出器,让任何人都可以将任何数据源带入 Port,从而充分利用 Port 的开放性和蓝图的强大功能。下一阶段是开发人员自助操作和自动化,未来还会有更多功能。

为什么是 Ocean?

从历史上看,我们的采用者和合作伙伴希望扩展 Port,因此开始自行实施其他集成。他们非常友好地与我们分享了这些集成。他们利用 Port 是 API 优先这一事实实现了这一点,但他们仍然需要实施大量逻辑以确保 Port 保持实时更新,管理配置,并以通用方式实施集成,以便随着时间的推移实现改进和进步。

这让我们想到,开源可扩展框架将通过简化 Port 扩展来提高开发人员门户的速度,并允许客户轻松与内部系统集成。很明显,这个开源框架可以使整个 Port 社区受益。

Ocean由 Port 的蓝图驱动

Port 的强大之处在于它的蓝图。蓝图是您定义要引入 Port 的元数据架构的方式。基于蓝图,一旦数据提取完成,就会创建软件目录实体,然后实时更新,充当实时元数据存储,使用来自各个真实来源的数据,包括微服务、CI/CD、资源和环境。

蓝图远不止乍一看那么简单。蓝图创建了一个灵活且可扩展的数据模型,让您可以在 Port 中对任何内容进行建模,然后将开发人员自助服务操作、自动化和记分卡与您所构建的内容联系起来。Port 不是僵化且固执己见的内部开发人员门户,而是在数据模型上提供了无限的灵活性(使用模板在您需要支持时为您指明方向)。假设您想从 AWS 或 Kubernetes 引入数据。只需定义您想要引入的内容 – Lambda、集群等等 – 然后创建所需的蓝图,并在目录中根据上下文显示它们。另一个示例是使用 Port 进行事件管理,通过丰富来自各种工具的漏洞和错误配置数据,甚至引入有关所用软件包的数据并将其关联到服务和应用程序的生命周期中。

下图说明了如何使用蓝图将数据引入 Port。右侧显示提取的“原始”数据(在本例中来自 GitLab 和 PagerDuty),左侧显示蓝图如何使用数据创建软件目录实体。

宣布推出 Port Ocean:一个开源可扩展框架

到目前为止,要发挥蓝图的全部功能需要一个导出器。值得注意的例子是kubernetes 导出器(GitHub 链接在此处),它允许您为开发人员抽象 K8s,AWS 导出器对 AWS 资源执行了同样的操作。这些导出器和类似的集成由 Port 内部开发,并作为开源工具发布给 Port 用户,通常涉及编写脚本、API 或自动化,利用 Port 的 API 根据蓝图定义将数据提取到目录中。所有这些集成的开发都面临着共同的挑战,例如支持相同的配置逻辑、JQ 解析机制以及处理与 Port API 的交互。每次集成都必须手动应对这些挑战,这使得 Port 团队更难提供更强大和更高级的集成,也使得 Port 用户更难以一致、高性能、可靠、经过测试且简单的方式自行开发新的集成。Ocean 旨在解决所有这些挑战。 

Ocean 作为开源出口商

为了使内部开发者门户对用户有价值,它必须包含来自许多来源和工具的有意义的数据。此外,目录中的数据需要随着底层事实来源的变化而实时变化。如果我想将 PagerDuty 中的所有服务显示为目录的一部分,我还需要一个自动流程,如果该服务不再存在于 PagerDuty 中,则从 Port 的目录中删除该服务(从而使目录与 PagerDuty 或任何其他集成中的数据保持同步)。如果删除了 K8s 中的 Pod,我需要确保实时更新 Port 中的副本计数。本质上,Port 需要将数据源中的实际状态与 Port 的软件目录进行协调。

因此,在 Ocean 出现之前,集成需要额外的工作。这些额外的工作包括编写脚本、计算、监听事件、配置 webhook,以及需要为每个工具编写 cron 作业来查询数据和跟踪更改。Ocean 让这些工作变得轻松,您只需定义业务逻辑即可。 

  • 要创建与 Ocean 的新集成,您只需对相关数据源实施几个简单的 API 请求,并使用 Python(不是 React……)进行基本操作。如果您想更改带来的数据,只需更改配置文件(以我们常见的 YAML 映射格式编写,因此如果您使用过我们现有的任何导出器集成,您会感到很熟悉),Port 将处理已提取到目录中的数据。 
  • 使用 Ocean(本地代理)的导出器也非常安全。使用 Ocean,您可以将所有数据源的数据带到 Port,而无需 Port 存储任何凭据或机密,也无需将任何 IP 列入白名单。数据过滤发生在客户端。 
  • 更酷的是,完成后,您可以与社区分享您的作品!使用此贡献指南了解更多信息。我们将验证所有贡献,并确保给予您应得的荣誉。

我们首次使用 Ocean 的集成是GitLabJiraSonarQubeAzureSnykNewRelicPagerDuty。你可以以它们为参考,以更好地理解 Ocean。

Ocean 如何为出口商服务:深入了解

Ocean 代理基本上是一个在您的基础架构上运行并处理集成生命周期的容器。代理支持 Ocean 的所有开箱即用功能 –事件侦听器实体状态同步配置验证等。

Ocean 代理附带的这些内置功能使其成为一种强大而安全的方式,可以将相关信息纳入您的软件目录并扩展您的数据模型。

使用 Ocean 构建的导出器有两个主要数据流: 

  • 配置创建或更新时的数据导出;以及
  • 发生变更时同步软件目录

发生变更时同步软件目录

宣布推出 Port Ocean:一个开源可扩展框架

流程如下:

  1. 订阅事件:设置 Ocean 集成后,它会使用 webhook、消息总线或数据源提供的任何其他内容订阅事件。例如,在 PagerDuty 中,Ocean 将监听“create:incident webhook”。
  2. 触发事件:事件会触发 Ocean 集成代码,Ocean 集成代码会理解事件含义以及应该采取什么行动
  3. 将原始数据发送到框架:集成将使用 Ocean SDK 将数据发送到框架,并告诉它采取什么操作(例如插入或删除)。
  4. 解析和更新相关实体:Ocean 框架将获取新数据,将其解析为实体,并执行相应操作以更新目录

Ocean 集成还可以利用轮询机制(由用户配置)定期查询第三方服务并执行信息的完整重新同步,并确保 Port 和第三方之间的完全一致性。

设置 Ocean 集成

正如我们之前所说,Ocean 集成只是一个按照您自己的方式在您的基础架构上运行的容器。您可以选择如何部署它,无论是通过 Helm、Terraform、Pulumi、K8s 原生 CD 解决方案(例如 ArgoCD)还是任何其他适合您的基础架构的部署。

要设置 Ocean 集成,您只需从 Port 中选择所需的集成,按照针对您的 Port 帐户定制的部署说明进行操作并部署提供的基本配置(或根据您的需要进行修改)。

以下是用于部署 Ocean Jira 集成的安装命令:

宣布推出 Port Ocean:一个开源可扩展框架

一旦集成部署完成,它将执行初始同步,从集成的目标(如 GitLab、NewRelic 等)查询信息并应用您提供的配置,然后将其发送到 Port 的目录。

集成将使用默认映射进行安装,用于指定如何将目标系统的信息映射到端口实体和蓝图。

以下是 Ocean Jira 集成的映射示例:

宣布推出 Port Ocean:一个开源可扩展框架

集成将继续运行,监听集成目标系统中的变化,并使目录保持最新。如果您想要更新配置以及系统中的信息映射到目录的方式,只需更新配置并直接从 Port 重新同步集成即可。

作者:terry,如若转载,请注明出处:https://www.web176.com/news/frontend/28479.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2024年11月19日
下一篇 2024年12月9日

相关推荐

发表回复

登录后才能评论