Skip to main content

GitOps

Port 的 GitHub 集成功能可让您采用 GitOps 方法管理 Port 实体,使您的代码库成为您要管理的各种基础架构资产的真实来源。

💡 GitHub GitOps 常见用例

  • 将 GitHub 用作微服务和其他软件目录资产的真实来源。
  • 允许开发人员通过更新其 Git 仓库中的文件来保持目录的最新状态。
  • 在企业中创建一种记录软件目录资产的标准化方式。

使用 GitOps 管理实体

要使用 GitOps 管理实体,需要在版本库的默认分支(通常是main)上添加一个port.yml文件。

port.yml 文件可以指定一个或多个 Port 实体,这些实体将被摄取到 Port 中,对 port.yml 文件所做的任何更改也将反映在 Port 内部。

Github 应用程序 要使用 GitOps 和 port.yml 文件管理实体,必须安装 Port 的Github app ,因为它会监听 Github 发送的 push 事件。

这意味着,如果在安装应用程序之前,版本库中存在 port.yml 文件,它将不会被自动接收。 您需要对 port.yml 文件进行一些更新,并将其推送到版本库,这样 Git 应用程序才能正确跟踪和接收实体信息。

GitOps port.yml 文件

Port.yml "文件用于指定使用 GitOps 管理的Port实体,并从 Git 仓库中获取其数据。

下面是有效 port.yml 文件的示例:

identifier: myEntity
title: My Entity
blueprint: myBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
myManyRelation:
- myTargetEntity1
- myTargetEntity2

由于两种有效的 port.yml 格式都遵循相同的结构,下文将根据单一实体示例来解释格式。

###port.yml 结构

下面是一个 port.yml 文件示例:

identifier: myEntity
title: My Entity
blueprint: myBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
myManyRelation:
- myTargetEntity1
- myTargetEntity2
  • 标识符 "键被用来指定应用程序将创建并在发生变化时保持更新的实体的标识符:
identifier: myEntity
title: My Entity
...
  • title "键被用来引用实体的 title:
identifier: myEntity
title: My Entity
...
  • blueprint "键被用于来指定要创建此实体的蓝图的标识符:
...
title: My Entity
blueprint: myBlueprint
...
  • properties 键被用来将值映射到实体的不同属性:
...
title: My Entity
blueprint: myBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
...
  • 关系 "键被用来将目标实体映射到实体的不同关系上:
...
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity

接收版本库文件内容

通过简单引用,可以将资源库中的文件内容作为实体属性的值。

下面的示例将读取 ~/module1/README.md 中的字符串内容,并将其上传到指定实体的 myStringProp 中。

被用于到示例中的资源库文件夹结构:

root
|
+- port.yml
|
+-+ module1
| |
| +- README.md
| |
| +-+ src
...

Port.yml` 文件:

blueprint: code_module
title: Module 1
identifier: module_1_entity
properties:
myStringProp: file://module1/README.md

使用相对路径

也可以被用于为相对于 port.yml 规格文件位置的路径。

例如: file://./ 用于引用与 port.yml 文件在同一目录下的文件。file://./ 用于引用高一个目录的文件,依此类推。

以下示例使用相对于 port.yml 的路径读取 README.md 和 `module1/requirements.txt

被用于到示例中的资源库文件夹结构:

root
|
+-+ meta
| |
| +-- port.yml
| |
| +-+ README.md
|
+-+ module1
| |
| +- requirements.txt
| |
| +-+ src
...

Port.yml` 文件:

blueprint: code_module
title: Module 1
identifier: module_1_entity
properties:
readme: file://./README.md
module1Requirements: file://../module1/requirements.txt

示例

请查看example repository ,查看微服务蓝图和指定微服务实体的匹配port.yml文件。

高级

有关高级用例和配置,请参阅advanced 页面。