# 维护部署运行时
在开始本节之前,请确保您已阅读 主体流程 章节,了解执行流水线和部署应用的主体流程和相关术语。
部署运行时定义了用于部署项目的配置声明,如:部署清单的存储位置、部署到的目标环境等。
支持通过 命令行 和 API 两种方式维护部署运行时。
# 前提条件
# 创建 access token
您需要创建一个 access token,作为请求 API 的请求头。详情参考 创建 access token。
# 导入证书
在使用 HTTPS 协议访问 Nautes API Server 之前,请先导入证书。
# 创建产品
部署运行时归属于产品,您需要创建至少一个产品。
# 创建代码库
部署运行时需要监听存储 Kubernetes 资源清单的代码库,您需要创建至少一个属于指定产品的代码库。
# 创建环境
部署运行时需要向关联运行时集群的环境下发部署,您需要创建至少一个属于指定产品的环境。
# 创建和更新部署运行时(API)
# 生成创建/更新部署运行时的 API 请求
通过接口定义 Deploymentruntime_SaveDeploymentRuntime
生成 API 请求示例,并添加 access token 作为请求头。
# 替换变量 $api-server-address 为 Nautes API Server 的访问地址
# 替换变量 $gitlab-access-token 为 GitLab access token
# 替换变量 $product-name 为部署运行时所属产品的名称
# 替换变量 $deploymentruntime-name 为部署运行时的名称
# 替换变量 $project 为部署运行时关联的项目
# 替换变量 $coderepo-name 部署运行时监听的代码库名称
# 替换变量 $coderepo-target-revision 部署运行时监听的代码库版本
# 替换变量 $coderepo-path 为部署运行时监听的代码库路径
# 替换变量 $destination 为部署运行时下发部署的目标环境
# 替换变量 $namespace-101 可选,为部署运行时下发部署的目标环境的命名空间
# 替换变量 $namespace-102 可选,为部署运行时下发部署的目标环境的命名空间
curl -X 'POST' \
'HTTP://$api-server-address/api/v1/products/$product-name/deploymentruntimes/$deploymentruntime-name' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $gitlab-access-token' \
-d '{
# 部署运行时关联的项目
"projects_ref": [
"$project"
],
"manifest_source": {
# 部署运行时监听的代码库名称
"code_repo": "$coderepo-name",
# 部署运行时监听的代码库版本
"target_revision": "$coderepo-target-revision",
# 部署运行时监听的代码库路径
"path": "$coderepo-path"
},
# 部署运行时下发部署的目标环境
"destination": {
"environment": "$destination",
# 部署运行时支持部署不同的 Deployment 到不同的命名空间,比如 A Deployment 部署到 $namespace-101, B Deployment 部署到 $namespace-102。
"namespaces": [
"$namespace-101"
"$namespace-102"
]
}
}'
替换变量后的请求示例如下:
curl -X 'POST' \
'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs/deploymentruntimes/dr-dev' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxx' \
-d '{
"projects_ref": [
"api-server"
],
"manifest_source": {
"code_repo": "api-server",
"target_revision": "HEAD",
"path": "manifests/development"
},
"destination": {
"environment": "env-dev",
"namespaces": [
"dr-dev"
]
}
}'
# 执行创建/更新部署运行时的 API 请求
使用 curl 命令或者其他工具执行 API 请求,以新增部署运行时。
请求成功后,将在指定产品的 default.project
代码库中生成部署运行时的资源文件。部署运行时的资源文件示例如下:
apiVersion: nautes.resource.nautes.io/v1alpha1
kind: DeploymentRuntime
metadata:
name: dr-dev
spec:
destination:
environment: env-dev
namespaces:
- dr-dev
manifestSource:
codeRepo: repo-xxxx
path: manifests/development
targetRevision: HEAD
product: product-xxxx
projectsRef:
- api-server
当部署运行时已经部署到某个运行时集群,暂不支持变更部署运行时的
destination
。请求 API 更新部署运行时也将更新部署运行时的资源文件。
只有当您的账号是 GitLab 的 group 成员,并且具备对
default.project
代码库的 main 分支的写入权限,才可以创建或者更新部署运行时。
# 删除部署运行时(API)
# 生成删除部署运行时的 API 请求
通过接口定义 Deploymentruntime_DeleteDeploymentRuntime
生成 API 请求示例,并添加 access token 作为请求头。
curl -X 'DELETE' \
'HTTP://$api-server-address/api/v1/products/$product-name/deploymentruntimes/$deploymentruntime-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/deploymentruntimes/dr-dev' \
-H 'accept: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'
# 执行删除部署运行时的 API 请求
使用 curl 命令或者其他工具执行 API 请求,以删除部署运行时。
请求成功后,将删除在指定产品的 default.project
代码库中的部署运行时的资源文件,并且销毁运行时集群中的部署运行时。
只有当您的账号是 GitLab 的 group 成员,并且具备对
default.project
代码库的 main 分支的写入权限,才可以删除部署运行时。
# 查询部署运行时列表(API)
# 生成查询部署运行时列表的 API 请求
通过接口定义 Deploymentruntime_ListDeploymentRuntimes
生成 API 请求示例,并添加 access token 作为请求头。
curl -X 'GET' \
'HTTP://$api-server-address/api/v1/products/$product-name/deploymentruntimes' \
-H 'accept: application/json' \
-H 'Authorization: Bearer $gitlab-access-token'
替换变量后的请求示例如下:
curl -X 'GET' \
'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs/deploymentruntimes' \
-H 'accept: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'
# 执行查询部署运行时列表的 API 请求
使用 curl 命令或者其他工具执行 API 请求,以查询部署运行时列表。部署运行时列表的返回值示例如下:
{
"items": [
{
"product": "nautes-labs",
"name": "dr-dev",
"projects_ref": ["api-server"],
"manifest_source": {
"code_repo": "api-server",
"target_revision": "HEAD",
"path": "manifests/development"
},
"destination": {
"environment": "env-dev",
"namespaces": [
"dr-dev"
]
}
}
]
}
只有当您的账号是 GitLab 的 group 成员,并且具备对
default.project
代码库的读取权限,才可以查询部署运行时列表。
# 查看部署运行时详情(API)
# 生成查看部署运行时详情的 API 请求
通过接口定义 Deploymentruntime_GetDeploymentRuntime
生成 API 请求示例,并添加 access token 作为请求头。
curl -X 'GET' \
'HTTP://$api-server-address/api/v1/products/$product-name/deploymentruntimes/$deploymentruntime-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/deploymentruntimes/dr-dev' \
-H 'accept: application/json' \
-H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'
# 执行查看部署运行时详情的 API 请求
使用 curl 命令或者其他工具执行 API 请求,以查看部署运行时详情。部署运行时详情的返回值示例与查询部署运行时列表类似。
只有当您的账号是 GitLab 的 group 成员,并且具备对
default.project
代码库的读取权限,才可以查看部署运行时详情。
# 强制创建/更新/删除部署运行时(API)
适用于需要跳过 API 校验的特殊场景,详情参见初始化产品。
以创建部署运行时为例,将 destination
属性设置为不合规的 environment,启用 insecure_skip_check
查询参数并设置其值为 true
,可以强制提交部署运行时的资源文件。请求示例如下:
curl -X 'POST' \
'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs/deploymentruntimes/dr-demo?insecure_skip_check=true' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"projects_ref": [
"api-server"
],
"manifest_source": {
"code_repo": "api-server",
"target_revision": "HEAD",
"path": "manifests/development"
},
"destination": {
"environment": "env-dev",
"namespaces": [
"dr-dev"
]
}
}'
← 维护流水线运行时 查看流水线和部署结果 →