# 维护环境

在开始本节之前,请确保您已阅读 主体流程 章节,了解执行流水线和部署应用的主体流程和相关术语。

环境是使用集群(目前只支持 Kubernetes集群)来承载产品中各个项目的集成和部署的管理单元。一个产品包含多个环境,如:开发环境、测试环境、预生产环境和生产环境等。

支持通过 命令行 和 API 两种方式维护环境。

# 前提条件

# 创建 access token

您需要创建一个 access token,作为请求 API 的请求头。详情参考 创建 access token

# 导入证书

在使用 HTTPS 协议访问 Nautes API Server 之前,请先导入证书

# 创建产品

环境归属于产品,您需要创建至少一个产品

# 注册运行时集群

环境需要与运行时集群关联,您需要注册至少一个物理运行时集群或者一个虚拟运行时集群

# 创建和更新环境(API)

# 生成创建/更新环境的 API 请求

通过接口定义 Environment_SaveEnvironment 生成 API 请求示例,并添加 access token 作为请求头。

    # 替换变量 $api-server-address 为 Nautes API Server 的访问地址
    # 替换变量 $gitlab-access-token 为 GitLab access token
    # 替换变量 $product-name 为环境所属产品的名称
    # 替换变量 $environment-name 为环境名称
    curl -X 'POST' \
        'HTTP://$api-server-address/api/v1/products/$product-name/environments/$environment-name' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer $gitlab-access-token' \
        -d '{
                # 环境关联的运行时集群
                "cluster": $cluster-name,
                # 环境类型
                "env_type": $env-type
            }'

替换变量后的请求示例如下:

    curl -X 'POST' \
        'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs/environments/env-dev' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx' \
        -d '{
                "cluster": "cluster-dev",
                "env_type": "development"
            }'

# 执行创建/更新环境的 API 请求

使用 curl 命令或者其他工具执行 API 请求,以新增环境。 请求成功后,将在指定产品的 default.project 代码库中生成环境的资源文件。环境的资源文件示例如下:

    apiVersion: nautes.resource.nautes.io/v1alpha1
    kind: Environment
    metadata:
        name: env-dev
    spec:
        cluster: cluster-dev
        envType: development
        product: product-xxxx

相同产品内,相同的运行时集群不能重复关联不同的环境。

当环境已经承载了产品的运行时,暂不支持变更环境的关联集群。

请求 API 更新环境也将更新环境的资源文件。

只有当您的账号是 GitLab 的 group 成员,并且具备对 default.project 代码库的 main 分支的写入权限,才可以创建或者更新环境。

# 删除环境(API)

在删除环境之前,请先删除与环境关联的所有相关实体和资源,例如:流水线运行时和部署运行时,否则将不能执行删除。

# 生成删除环境的 API 请求

通过接口定义 Environment_DeleteEnvironment 生成 API 请求示例,并添加 access token 作为请求头。

    curl -X 'DELETE' \
        'HTTP://$api-server-address/api/v1/products/$product-name/environments/$environment-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/environments/env-dev' \
        -H 'accept: application/json' \
        -H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'

# 执行删除环境的 API 请求

使用 curl 命令或者其他工具执行 API 请求,以删除环境。

请求成功后,将删除在指定产品的 default.project 代码库中的环境资源文件。

只有当您的账号是 GitLab 的 group 成员,并且具备对 default.project 代码库的 main 分支的写入权限,才可以删除环境。

# 查询环境列表(API)

# 生成查询环境列表的 API 请求

通过接口定义 Environment_ListEnvironments 生成 API 请求示例,并添加 access token 作为请求头。

    curl -X 'GET' \
        'HTTP://$api-server-address/api/v1/products/$product-name/environments' \
        -H 'accept: application/json' \
        -H 'Authorization: Bearer $gitlab-access-token'

替换变量后的请求示例如下:

    curl -X 'GET' \
        'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs/environments' \
        -H 'accept: application/json'
        -H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'

# 执行查询环境列表的 API 请求

使用 curl 命令或者其他工具执行 API 请求,以查询环境列表。环境列表的返回值示例如下:

{
    "items": [
        {
            "product": "nautes-labs",
            "name": "env-dev",
            "cluster": "cluster-dev",
            "env_type": "development"
        }
    ]
}

只有当您的账号是 GitLab 的 group 成员,并且具备对 default.project 代码库的读取权限,才可以查询环境列表。

# 查询环境详情(API)

# 生成查看环境详情的 API 请求

通过接口定义 Environment_GetEnvironment 生成 API 请求示例,并添加 access token 作为请求头。

    curl -X 'GET' \
        'HTTP://$api-server-address/api/v1/products/$product-name/environments/$enviroment-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/environments/env-dev' \
        -H 'accept: application/json' \
        -H 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxx'

# 执行查看环境详情的 API 请求

使用 curl 命令或者其他工具执行 API 请求,以查询环境详情。环境详情的返回值示例与查询环境列表类似。

只有当您的账号是 GitLab 的 group 成员,并且具备对 default.project 代码库的读取权限,才可以查看环境详情。

# 强制创建/更新/删除环境(API)

适用于需要跳过 API 校验的特殊场景,详情参见初始化产品

以创建环境为例,将 cluster 属性设置为不存在的 cluster,启用 insecure_skip_check 查询参数并设置其值为 true,可以强制提交环境的资源文件。 请求示例如下:

    curl -X 'POST' \
        'HTTP://xxx.xxx.xxx.xxx:xxxxx/api/v1/products/nautes-labs/environments/env-demo?insecure_skip_check=true' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -d '{
                "cluster": "cluster-invalid",
                "env_type": "development"
            }'