全部產品
Search
文件中心

CloudOps Orchestration Service:ACS-ESS-LifeCycleBulkyDeleteClusterNodes

更新時間:Sep 06, 2024

模板名稱

ACS-ESS-LifeCycleBulkyDeleteClusterNodes 使用生命週期掛鈎大量移除CS叢集節點

立即執行

模板描述

使用生命週期掛鈎大量移除CS叢集節點(僅支援彈性收縮活動)

模板類型

自動化

所有者

Alibaba Cloud

輸入參數

參數名稱

描述

類型

是否必填

預設值

約束

clusterId

叢集ID

String

drainNode

是否自動排空節點上的Pod

Boolean

releaseNode

是否同時移除ECS

Boolean

pageSize

分頁大小

String

100

essTaskType

Auto Scaling任務類型

String

${essTaskType}

regionId

地區ID

String

${regionId}

instanceIds

ECS執行個體ID列表

List

['${instanceIds}']

lifecycleHookId

生命週期掛鈎ID

String

${lifecycleHookId}

lifecycleActionToken

執行個體關聯的特定伸縮活動的令牌

String

${lifecycleActionToken}

OOSAssumeRole

OOS扮演的RAM角色

String

OOSServiceRole

輸出參數

執行此模板需要的權限原則

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "cs:DeleteClusterNodes",
                "cs:DescribeClusterNodes",
                "cs:DescribeTaskInfo"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ess:CompleteLifecycleAction"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

詳情

ACS-ESS-LifeCycleBulkyDeleteClusterNodes詳情

模板內容

FormatVersion: OOS-2019-06-01
Description:
  en: Use lifecyclehook to delete cluster nodes (only supports elastic contraction activities)
  zh-cn: 使用生命週期掛鈎大量移除CS叢集節點(僅支援彈性收縮活動)
  name-en: ACS-ESS-LifeCycleBulkyDeleteClusterNodes
  name-zh-cn: 使用生命週期掛鈎大量移除CS叢集節點
  categories:
    - elastic_manage
Parameters:
  clusterId:
    Label:
      en: ClusterId
      zh-cn: 叢集ID
    Type: String
  drainNode:
    Label:
      en: DrainNode
      zh-cn: 是否自動排空節點上的Pod
    Type: Boolean
  releaseNode:
    Label:
      en: ReleaseNode
      zh-cn: 是否同時移除ECS
    Type: Boolean
  pageSize:
    Label:
      en: PageSize
      zh-cn: 分頁大小
    Type: String
    Default: '100'
  essTaskType:
    Label:
      en: EssTaskType
      zh-cn: Auto Scaling任務類型
    Type: String
    Default: '${essTaskType}'
  regionId:
    Label:
      en: RegionId
      zh-cn: 地區ID
    Description:
      en: The ID of region
      zh-cn: '地區ID,請使用Auto Scaling系統預設值 ${regionId}'
    Type: String
    Default: '${regionId}'
  instanceIds:
    Label:
      en: InstanceIds
      zh-cn: ECS執行個體ID列表
    Description:
      en: The ID list of the ECS instance
      zh-cn: 'ECS執行個體ID列表,請使用Auto Scaling系統預設值 ["${instanceId}"]'
    Type: List
    Default:
      - '${instanceIds}'
  lifecycleHookId:
    Label:
      en: LifecycleHookId
      zh-cn: 生命週期掛鈎ID
    Description:
      en: The ID of the lifecycle hook
      zh-cn: '生命週期掛鈎ID,請使用Auto Scaling系統預設值 ${lifecycleHookId}'
    Type: String
    Default: '${lifecycleHookId}'
  lifecycleActionToken:
    Label:
      en: LifecycleActionToken
      zh-cn: 執行個體關聯的特定伸縮活動的令牌
    Description:
      en: The token that indicates a specific scaling activity associated with an instance
      zh-cn: '執行個體關聯的特定伸縮活動的令牌,請使用Auto Scaling系統預設值 ${lifecycleActionToken}'
    Type: String
    Default: '${lifecycleActionToken}'
  OOSAssumeRole:
    Label:
      en: OOSAssumeRole
      zh-cn: OOS扮演的RAM角色
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: describeClusterNodes
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Gets node names
      zh-cn: 擷取節點名稱
    OnError: CompleteLifecycleActionForAbandon
    Properties:
      Service: CS
      API: DescribeClusterNodes
      Method: GET
      Headers:
        Content-Type: application/json
      URI: '/clusters/{{clusterId}}/nodes'
      Parameters:
        pageSize: '{{ pageSize }}'
        instanceIds:
          'Fn::Join':
            - ','
            - '{{ instanceIds }}'
    Outputs:
      nodeNames:
        Type: List
        ValueSelector: '.nodes[].node_name'
  - Name: whetherNodeIsReady
    Action: 'ACS::Choice'
    Description:
      en: Choose next task by nodes
      zh-cn: 根據節點狀態選擇下一個任務
    Properties:
      DefaultTask: deleteClusterNodes
      Choices:
        - When:
            'Fn::Equals':
              - []
              - '{{ describeClusterNodes.nodeNames }}'
          NextTask: 'CompleteLifecycleActionForContinue'
  - Name: deleteClusterNodes
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Delete the specified nodes of cluster
      zh-cn: 移除叢集中指定節點
    OnError: CompleteLifecycleActionForAbandon
    Properties:
      Service: CS
      API: DeleteClusterNodes
      Method: POST
      Headers:
        Content-Type: application/json
      URI: '/clusters/{{clusterId}}/nodes'
      Body:
        'Fn::If':
          - 'Fn::Equals':
              - SPOT_REMEDY
              - '{{ essTaskType }}'
          - '{"drain_node": {{ drainNode }}, "release_node": true, "nodes": {{ describeClusterNodes.nodeNames }}, "call_back": true, "is_expired": true}'
          - '{"drain_node": {{ drainNode }}, "release_node": {{ releaseNode }}, "nodes": {{ describeClusterNodes.nodeNames }}, "call_back": true, "is_expired": false}'
    Outputs:
      taskId:
        Type: String
        ValueSelector: '.task_id'
  - Name: untilNodesRemovedSuccessfully
    Action: ACS::WaitFor
    Description:
      en: Wait for the node to be removed successfully
      zh-cn: 等待節點移除成功
    Retries: 26
    Delay: 30
    OnError: CompleteLifecycleActionForAbandon
    OnSuccess: CompleteLifecycleActionForContinue
    Properties:
      Service: CS
      API: DescribeTaskInfo
      Method: GET
      Headers:
        Content-Type: application/json
      URI: '/tasks/{{deleteClusterNodes.taskId}}'
      Parameters: {}
      DesiredValues:
        - success
      StopRetryValues:
        - fail
      PropertySelector: .state
  - Name: CompleteLifecycleActionForContinue
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Modify lifecycle action for continue
      zh-cn: 修改伸縮活動的等待狀態為繼續完成
    OnSuccess: 'ACS::END'
    Properties:
      Service: ESS
      API: CompleteLifecycleAction
      Parameters:
        RegionId: '{{ regionId }}'
        LifecycleHookId: '{{ lifecycleHookId }}'
        LifecycleActionToken: '{{ lifecycleActionToken }}'
        LifecycleActionResult: CONTINUE
  - Name: CompleteLifecycleActionForAbandon
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Complete lifecycle action for Abandon
      zh-cn: 修改伸縮活動的等待狀態為棄用
    Properties:
      Service: ESS
      API: CompleteLifecycleAction
      Parameters:
        RegionId: '{{ regionId }}'
        LifecycleHookId: '{{ lifecycleHookId }}'
        LifecycleActionToken: '{{ lifecycleActionToken }}'
        LifecycleActionResult: ABANDON