GitOps
Port 的 GitHub 集成功能可让您采用 GitOps 方法管理 Port 实体,使您的代码库成为您要管理的各种基础架构资产的真实来源。
💡 GitHub GitOps 常见用例
- 将 GitHub 用作微服务、包、库和其他软件目录资产的真实来源。
- 允许开发人员通过更新其 Git 仓库中的文件来保持目录的最新状态。
- 在企业中创建一种记录软件目录资产的标准化方式。
使用 GitOps 管理实体
要使用 GitOps 管理实体,需要在版本库的默认分支(通常是main
)上添加一个port.yml
文件。
port.yml
文件可以指定一个或多个 Port 实体,这些实体将被摄取到 Port 中,对 port.yml
文件所做的任何更改也将反 映在 Port 内部。
这意味着,如果在安装应用程序之前,版本库中存在 port.yml
文件,它将不会被自动接收。 您需要对 port.yml
文件进行一些更新,并将其推送到版本库,这样 Git 应用程序才能正确跟踪和接收实体信息。
GitOps port.yml
文件
Port.yml "文件用于指定使用 GitOps 管理的Port实体,并从 Git 仓库中获取其数据。
下面是有效 port.yml
文件的示例:
- Single entity
- Multiple entities
identifier: myEntity
title: My Entity
blueprint: myBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
myManyRelation:
- myTargetEntity1
- myTargetEntity2
- identifier: myEntity1
title: My Entity1
blueprint: myFirstBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
myManyRelation:
- myTargetEntity1
- myTargetEntity2
- identifier: myEntity
title: My Entity2
blueprint: mySecondBlueprint
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
由于两种有效的 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
...
- 关系 "键被用来将目标实体映射到实体的不同关系上:
- Single relation
- Many relation
...
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
mySingleRelation: myTargetEntity
...
properties:
myStringProp: myValue
myNumberProp: 5
myUrlProp: https://example.com
relations:
myManyRelation:
- myTargetEntity1
- myTargetEntity2
接收版本库文件内容
通过简单引用,可以将资源库中的文件内容作为实体属性的值。
下面的示例将读取 ~/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 页面。