UNPKG

tencentcloud-sdk-nodejs

Version:
270 lines (250 loc) 9.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Client = void 0; /* eslint-disable @typescript-eslint/no-unused-vars */ /* * Copyright (c) 2018 Tencent. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ const abstract_client_1 = require("../../../common/abstract_client"); /** * tke client * @class */ class Client extends abstract_client_1.AbstractClient { constructor(clientConfig) { super("tke.tencentcloudapi.com", "2022-05-01", clientConfig); } /** * 设置是否开启节点登录 */ async SetMachineLogin(req, cb) { return this.request("SetMachineLogin", req, cb); } /** * 删除 TKE 节点池 */ async DeleteNodePool(req, cb) { return this.request("DeleteNodePool", req, cb); } /** * 查询健康检测策略 */ async DescribeHealthCheckPolicies(req, cb) { return this.request("DescribeHealthCheckPolicies", req, cb); } /** * 本接口 (StartMachines) 用于启动一个或多个原生节点实例。 只有状态为 Stopped 的实例才可以进行此操作。 接口调用成功后,等待一分钟左右,实例会进入 Running 状态。 支持批量操作。每次请求批量实例的上限为100。 本接口为同步接口,启动实例请求发送成功后会返回一个RequestId,此时操作并未立即完成。实例操作结果可以通过调用 DescribeClusterInstances 接口查询,如果实例的状态为 Running,则代表启动实例操作成功。 */ async StartMachines(req, cb) { return this.request("StartMachines", req, cb); } /** * **通过 CAM 策略强制节点池安全配置** 创建原生节点池(`CreateNodePool`)接口已接入 CAM 条件鉴权,会根据请求参数计算出一组**条件键(Condition Key)**并传入 CAM 鉴权。您可以在 CAM/SCP 策略中基于这些条件键配置 `deny` 规则,从而强制约束节点池的安全配置(如必须开启磁盘加密、安全加固等)。 **支持的条件键** | 条件键 | 含义 | 取值 | 取值判定说明 | |--------|------|------|-------------| | `tke:NodePoolType` | 节点池类型 | `Native` / `External` | 取请求的节点池类型,未指定时默认为 `Native` | | `tke:SystemDiskEncrypted` | 系统盘是否加密 | `true` / `false` | 系统盘加密属性为 `ENCRYPT`(大小写不敏感)时为 `true`,否则为 `false` | | `tke:AllDataDisksEncrypted` | 所有数据盘是否都已加密 | `true` / `false` | 全部数据盘加密属性均为 `ENCRYPT` 时为 `true`;未配置数据盘时也为 `true`;只要有任一数据盘未加密即为 `false` | | `tke:SecurityAgentEnabled` | 是否开启安全加固(Security Agent) | `true` / `false` | 开启安全加固时为 `true`,否则为 `false` | > 说明:所有条件键的取值均为字符串 `"true"` / `"false"`,请在策略中使用字符串形式匹配。 **使用方式** 在 CAM 策略中使用 `bool_equal` 匹配条件键值为 `"false"`,配合 `effect: deny`,即可实现"未满足安全配置则拒绝创建节点池"的强制约束。 **示例一:强制开启安全加固** 创建节点池时若未开启安全加固(`tke:SecurityAgentEnabled = "false"`),则拒绝。 ```json { "version": "2.0", "statement": [ { "effect": "deny", "action": ["tke:CreateNodePool"], "resource": ["*"], "condition": { "bool_equal": { "tke:SecurityAgentEnabled": "false" } } } ] } ``` **示例二:强制数据盘加密** 创建节点池时若存在未加密的数据盘(`tke:AllDataDisksEncrypted = "false"`),则拒绝。 ```json { "version": "2.0", "statement": [ { "effect": "deny", "action": ["tke:CreateNodePool"], "resource": ["*"], "condition": { "bool_equal": { "tke:AllDataDisksEncrypted": "false" } } } ] } ``` **示例三:强制系统盘加密** 创建节点池时若系统盘未加密(`tke:SystemDiskEncrypted = "false"`),则拒绝。 ```json { "version": "2.0", "statement": [ { "effect": "deny", "action": ["tke:CreateNodePool"], "resource": ["*"], "condition": { "bool_equal": { "tke:SystemDiskEncrypted": "false" } } } ] } ``` **注意事项** - 上述条件键在**未配置任何 CAM 策略**时不会影响节点池创建,仅在您显式配置了对应 `deny` 策略时才生效。 - 如需同时强制多项安全配置,必须在同一策略的 `statement` 中配置多条 `deny` 规则,不能将多个条件键写入同一条 `condition`。 - `tke:AllDataDisksEncrypted` 在**无数据盘**场景下取值为 `true`(不存在未加密的数据盘),因此仅约束"已配置的数据盘必须加密",不会强制要求必须挂载数据盘。 */ async CreateNodePool(req, cb) { return this.request("CreateNodePool", req, cb); } /** * 查询健康检测策略绑定关系 */ async DescribeHealthCheckPolicyBindings(req, cb) { return this.request("DescribeHealthCheckPolicyBindings", req, cb); } /** * 查询健康检测策略模板 */ async DescribeHealthCheckTemplate(req, cb) { return this.request("DescribeHealthCheckTemplate", req, cb); } /** * 删除原生节点池节点 */ async DeleteClusterMachines(req, cb) { return this.request("DeleteClusterMachines", req, cb); } /** * 设置 TKE 节点池期望节点数 */ async ScaleNodePool(req, cb) { return this.request("ScaleNodePool", req, cb); } /** * 查询集群列表 */ async DescribeClusters(req, cb) { return this.request("DescribeClusters", req, cb); } /** * 修改原生节点 */ async ModifyClusterMachine(req, cb) { return this.request("ModifyClusterMachine", req, cb); } /** * 修改健康检测策略 */ async ModifyHealthCheckPolicy(req, cb) { return this.request("ModifyHealthCheckPolicy", req, cb); } /** * 查询托原生点列表 */ async DescribeClusterMachines(req, cb) { return this.request("DescribeClusterMachines", req, cb); } /** * 重启原生节点实例 */ async RebootMachines(req, cb) { return this.request("RebootMachines", req, cb); } /** * 删除健康检测策略 */ async DeleteHealthCheckPolicy(req, cb) { return this.request("DeleteHealthCheckPolicy", req, cb); } /** * 请求该接口,会返回所有适配该机型和操作系统组合的gpu驱动版本 */ async DescribeGPUInfo(req, cb) { return this.request("DescribeGPUInfo", req, cb); } /** * 查询集群下节点实例信息 */ async DescribeClusterInstances(req, cb) { return this.request("DescribeClusterInstances", req, cb); } /** * 查询原生节点机型配置 */ async DescribeZoneInstanceConfigInfos(req, cb) { return this.request("DescribeZoneInstanceConfigInfos", req, cb); } /** * 查询 TKE 节点池列表 */ async DescribeNodePools(req, cb) { return this.request("DescribeNodePools", req, cb); } /** * 更新 TKE 节点池 */ async ModifyNodePool(req, cb) { return this.request("ModifyNodePool", req, cb); } /** * 查询节点池健康度相关信息 */ async DescribeNodePoolsElasticityStrength(req, cb) { return this.request("DescribeNodePoolsElasticityStrength", req, cb); } /** * 本接口 (StopMachines) 用于关闭一个或多个原生节点实例。 只有状态为 Running 的实例才可以进行此操作。 接口调用成功时,实例会进入 Stopping 状态;关闭实例成功时,实例会进入 Stopped 状态。 支持强制关闭。强制关机的效果等同于关闭物理计算机的电源开关。强制关机可能会导致数据丢失或文件系统损坏,请仅在服务器不能正常关机时使用。 支持批量操作。每次请求批量实例的上限为 100。 本接口为同步接口,关闭实例请求发送成功后会返回一个RequestId,此时操作并未立即完成。实例操作结果可以通过调用 DescribeClusterInstances 接口查询,如果实例的状态为stopped_with_charging,则代表关闭实例操作成功。 */ async StopMachines(req, cb) { return this.request("StopMachines", req, cb); } /** * 创建健康检测策略 */ async CreateHealthCheckPolicy(req, cb) { return this.request("CreateHealthCheckPolicy", req, cb); } } exports.Client = Client;