# 维护产品
在开始本节之前,请确保您已阅读 主体流程 章节,了解执行流水线和部署应用的主体流程和相关术语。
产品对应一个软件系统,包含团队、项目、环境、代码库、制品库、及运行时。产品可以被租户管理员授权使用指定的 Kubernetes 集群。
当您使用 GitLab 作为产品提供者时,产品唯一对应一个 GitLab Group,Nautes 会在该 Group 下维护一个用于存储产品元数据的固定名称的代码库(默认为 default.project
),同时,Nautes 会利用 GitLab 权限模型来管理用户对不同产品数据的权限。
支持通过 命令行 和 API 两种方式维护产品。
# 前提条件
# 创建 access token
GitLab 安装完成后,您需要注册一个账号,并创建 personal access token (opens new window),其中 access token 的权限范围包括:api、read_api、read_repository 和 write_repository。
access token 将作为请求 API 的请求头。
# 导入证书
在使用 HTTPS 协议访问 Nautes API Server 之前,请先导入证书。
# 创建产品(API)
# 生成创建产品的 API 请求
通过接口定义 Product_SaveProduct
生成 API 请求示例,并添加 access token 作为请求头。
# 替换变量 $api-server-address 为 Nautes API Server 的访问地址
# 替换变量 $gitlab-access-token 为 GitLab access token
# 替换变量 $product-name 为产品名称
curl -X 'POST' \
'HTTP://$api-server-address/api/v1/products/$product-name' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $gitlab-access-token' \
-d '{
"git": {
"gitlab": {
# group 的名称
"name": $product-name,
# group 的路径
"path": $product-name,
# group 的可见性,例如:private、public
"visibility": $product-visibility,
"description": $product-desc
}
}
}'
替换变量后的请求示例如下:
curl -X 'POST' \
'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx' \
-d '{
"git": {
"gitlab": {
"name": "nautes-labs",
"path": "nautes-labs",
"visibility": "private",
"description": "Nautes-Labs is an open-source, one-stop developer platform based on Kubernetes."
}
}
}'
# 执行创建产品的 API 请求
使用 curl 命令或者其他工具执行 API 请求,以新增产品。
请求成功后,将在 GitLab 中创建与产品同名的 group,并在这个 group 中创建名称为 default.project
的代码库,用于存储该产品的配置清单。每个 group 有且只有一个 default.project
代码库。
GitLab 中的任何账号都可以创建产品。
# 删除产品(API)
在删除产品之前,请先删除与产品关联的所有实体和资源,例如:部署运行时、流水线运行时、环境、代码库和项目等,否则将不能执行删除。
# 生成删除产品的 API 请求
通过接口定义 Product_DeleteProduct
生成 API 请求示例,并添加 access token 作为请求头。
curl -X 'DELETE' \
'HTTP://$api-server-address/api/v1/products/$product-name' \
-H 'accept: application/json' \
-H 'Authorization: Bearer $gitlab-access-token'
替换变量后的请求示例如下:
curl -X 'DELETE' \
'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs' \
-H 'accept: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'
# 执行删除产品的 API 请求
使用 curl 命令或者其他工具执行 API 请求,以删除产品。
请求成功后,将删除该产品及其相关资源:GitLab 中的 group 和 default.project
代码库。
只有当您的账号对于 GitLab 的 group 有删除权限时,才可以删除产品。
# 查询产品列表(API)
# 生成查询产品列表的 API 请求
通过接口定义 Product_ListProducts
,生成 API 请求示例,并添加 access token 作为请求头。
curl -X 'GET' \
'HTTP://$api-server-address/api/v1/products' \
-H 'accept: application/json' \
-H 'Authorization: Bearer $gitlab-access-token'
替换变量后的请求示例如下:
curl -X 'GET' \
'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products' \
-H 'accept: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'
# 执行查询产品列表的 API 请求
使用 curl 命令或者其他工具执行 API 请求,以查询产品列表。产品列表的返回值示例如下:
{
"items": [
{
"name": "nautes-labs",
"git": {
"gitlab": {
"path": "nautes-labs",
"visibility": "private",
"description": "Nautes-Labs is an open-source, one-stop developer platform based on Kubernetes."
}
}
},
{
"name": "tenant1",
"git": {
"gitlab": {
"path": "tenant1",
"visibility": "private",
"description": "The tenant configuration repository of the Nautes-Labs."
}
}
},
......
]
}
只有当您的账号对于 GitLab 的 group 有查询权限时,才可以查询产品列表。
# 查看产品详情(API)
# 生成查看产品详情的 API 请求
通过接口定义 Product_GetProduct
生成 API 请求示例,并添加 access token 作为请求头。
curl -X 'GET' \
'HTTP://$api-server-address/api/v1/products/$product-name' \
-H 'accept: application/json' \
-H 'Authorization: Bearer $gitlab-access-token'
替换变量后的请求示例如下:
curl -X 'GET' \
'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs' \
-H 'accept: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'
# 执行查看产品详情的 API 请求
使用 curl 命令或者其他工具执行 API 请求,以查询产品详情。产品详情的返回值示例与查看产品列表类似。
只有当您的账号对于 GitLab 的 group 有查询权限时,才可以查看产品详情。