

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS.Compute.EKSManagedNode
<a name="node-eks-managed-node"></a>

AWS TNB 支援 EKS 受管節點群組，以自動化 Amazon EKS Kubernetes 叢集節點 (Amazon EC2 執行個體） 的佈建和生命週期管理。若要建立 EKS 節點群組，請執行下列動作：
+ 提供 AMI 的 ID 或 AMI 類型，為您的叢集工作者節點選擇 Amazon Machine Image (AMI)。
+ 針對 SSH 存取和節點群組的擴展屬性提供 Amazon EC2 金鑰對。
+ 確保您的節點群組與 Amazon EKS 叢集相關聯。
+ 提供工作者節點的子網路。
+ 或者，將安全群組、節點標籤和置放群組連接到節點群組。

## 語法
<a name="node-eks-managed-node-syntax"></a>

```
tosca.nodes.AWS.Compute.EKSManagedNode:
  capabilities:
    compute:
      properties:
        ami\$1type: String
        ami\$1id: String
        instance\$1types: List
        key\$1pair: String
        root\$1volume\$1encryption: Boolean
        root\$1volume\$1encryption\$1key\$1arn: String
        root\$1volume\$1size: Integer 
    scaling:
      properties:
        desired\$1size: Integer
        min\$1size: Integer
        max\$1size: Integer       
  properties:
    node\$1role: String
    tags: List
    kubernetes\$1version: String        
  requirements:
    cluster: String
    subnets: List
    network\$1interfaces: List
    security\$1groups: List
    placement\$1group: String
    user\$1data: String
    labels: List
```

## 功能
<a name="node-eks-managed-node-capabilities"></a><a name="node_eks_managed_node_compute"></a>`compute`

定義 Amazon EKS 受管節點群組運算參數的屬性，例如 Amazon EC2 執行個體類型和 Amazon EC2 執行個體 AMIs。

 `ami_type`    
Amazon EKS 支援的 AMI 類型。  
必要：是  
類型：字串  
可能的值： `AL2_x86_64` \$1 `AL2_x86_64_GPU` \$1 `AL2_ARM_64` \$1 `AL2023_x86_64` \$1 `AL2023_ARM_64` \$1 `AL2023_x86_64_NVIDIA` \$1 `AL2023_x86_64_NEURON` \$1 `CUSTOM` \$1 `BOTTLEROCKET_ARM_64` \$1 `BOTTLEROCKET_x86_64` \$1 `BOTTLEROCKET_ARM_64_NVIDIA` \$1 `BOTTLEROCKET_x86_64_NVIDIA`

 `ami_id`    
AMI 的 ID。  
必要：否  
類型：字串  
如果在範本中同時指定 `ami_id` `ami_type`和 ， AWS TNB 只會使用 `ami_id`值來建立 `EKSManagedNode`。

 `instance_types`    
執行個體大小。  
必要：是  
類型：清單

 `key_pair`    
啟用 SSH 存取的 EC2 金鑰對。  
必要：是  
類型：字串

 `root_volume_encryption`    
啟用 Amazon EBS 根磁碟區的 Amazon EBS 加密。如果未提供此屬性， AWS TNB 預設會加密 Amazon EBS 根磁碟區。  
必要：否  
預設：true  
類型：布林值

 `root_volume_encryption_key_arn`    
key AWS KMS . AWS TNB 的 ARN 支援一般金鑰 ARN、多區域金鑰 ARN 和別名 ARN。  
必要：否  
類型：字串  
+ 如果 `root_volume_encryption`為 false，請勿包含 `root_volume_encryption_key_arn`。
+ AWS TNB 支援 Amazon EBS 後端 AMI 的根磁碟區加密。
+ 如果 AMI 的根磁碟區已加密，您必須包含`root_volume_encryption_key_arn`適用於 AWS TNB 的 ，才能重新加密根磁碟區。
+  如果 AMI 的根磁碟區未加密， AWS TNB 會使用 `root_volume_encryption_key_arn`來加密根磁碟區。

  如果您不包含 `root_volume_encryption_key_arn`， AWS TNB 會使用 提供的預設金鑰 AWS Key Management Service 來加密根磁碟區。
+ AWS TNB 不會解密加密的 AMI。

 `root_volume_size`    
Amazon Elastic Block Store 根磁碟區的大小，以 GiBs為單位。  
必要：否  
預設：20  
類型：整數  
可能的值：1 到 16，384<a name="node_eks_managed_node_scaling"></a>`scaling`

定義 Amazon EKS 受管節點群組擴展參數的屬性，例如所需的 Amazon EC2 執行個體數量，以及節點群組中 Amazon EC2 執行個體的數量下限和上限。

 `desired_size`    
此 NodeGroup 中的執行個體數量。  
必要：是  
類型：整數

 `min_size`    
此 NodeGroup 中的執行個體數量下限。  
必要：是  
類型：整數

 `max_size`    
此 NodeGroup 中的執行個體數量上限。  
必要：是  
類型：整數

## 屬性
<a name="node_eks_managed_node-properties"></a>

 `node_role`    
連接至 Amazon EC2 執行個體之 IAM 角色的 ARN。  
必要：是  
類型：字串

 `tags`    
要連接到資源的標籤。  
必要：否  
類型：清單

 `kubernetes_version`    
Managed Node group. AWS TNB 的 Kubernetes 版本支援 Kubernetes 版本 1.25 到 1.32。考慮下列各項：  
+ 指定 `kubernetes_version`或 `ami_id`。不要同時指定兩者。
+ `kubernetes_version` 必須小於或等於 AWS.Compute.EKSManagedNode 版本。
+  AWS.Compute.EKSManagedNode 版本和 之間可能會有 3 個版本的差異`kubernetes_version`。
+ 如果未`ami_id`指定 `kubernetes_version`或 ， AWS TNB 將使用`AWS.Compute.EKSManagedNode`版本的最新 AMI 來建立 `EKSManagedNode`
必要：否  
類型：字串  
可能的值：1.25 \$1 1.26 \$1 1.27 \$1 1.28 \$1 1.29 \$1 1.30 \$1 1.31 \$1 1.32

## 要求
<a name="node-eks-managed-node-requirements"></a>

 `cluster`    
[AWS.Compute.EKS](node-eks.md) 節點。  
必要：是  
類型：字串

 `subnets`    
[AWS.Networking.Subnet](node-subnet.md) 節點。  
必要：是  
類型：清單

 `network_interfaces`    
[AWS.Networking.ENI](node-eni.md) 節點。確保網路介面和子網路設定為相同的可用區域，否則執行個體化將會失敗。  
當您設定 時`network_interfaces`，如果您在 [AWS.Compute.EKS](https://docs.aws.amazon.com/tnb/latest/ug/node-eks.html) 節點中包含 `multus` 屬性， AWS TNB 會從 `multus_role` 屬性取得與 ENIs 相關的許可。否則， AWS TNB 會從 [node\$1role](#node_eks_managed_node_node_role) 屬性取得與 ENIs相關的許可。  
必要：否  
類型：清單

 `security_groups`    
[AWS.Networking.SecurityGroup](node-networking-security-group.md) 節點。  
必要：否  
類型：清單

 `placement_group`    
[tosca.nodes AWS。Compute.PlacementGroup](node-compute-placement-group.md) 節點。  
必要：否  
類型：字串

 `user_data`    
[tosca.nodes AWS。Compute.UserData](node-compute-user-data.md) 節點參考。使用者資料指令碼會傳遞至受管節點群組啟動的 Amazon EC2 執行個體。將執行自訂使用者資料所需的許可新增至傳遞至節點群組的 node\$1role。  
必要：否  
類型：字串

 `labels`    
節點標籤的清單。節點標籤必須具有名稱和值。使用以下條件建立標籤：  
+ 名稱和值必須以 分隔`=`。
+ 名稱和值的長度上限為 63 個字元。
+ 標籤可以包含字母 (A-Z、a-z)、數字 (0-9) 和下列字元： `[-, _, ., *, ?]`
+ 名稱和值必須以英數字元`?`、 或 `*` 字元開頭和結尾。
例如 `myLabelName1=*NodeLabelValue1`  
必要：否  
類型：清單

## 範例
<a name="node-eks-managed-node-example"></a>

```
SampleEKSManagedNode:
  type: tosca.nodes.AWS.Compute.EKSManagedNode
  capabilities:
    compute:
      properties:
        ami_type: "AL2_x86_64"
        instance_types:
          - "t3.xlarge"
        key_pair: "SampleKeyPair"
        root_volume_encryption: true
        root_volume_encryption_key_arn: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        root_volume_size: 1500    
    scaling:
      properties:
        desired_size: 1
        min_size: 1
        max_size: 1
  properties:
    node_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/SampleRole"
    tags:
      - "Name=SampleVPC"
      - "Environment=Testing" 
    kubernetes_version:
      - "1.30" 
  requirements:
    cluster: SampleEKS
    subnets:
      - SampleSubnet
    network_interfaces:
      - SampleENI01
      - SampleENI02
    security_groups:
      - SampleSecurityGroup01
      - SampleSecurityGroup02
    placement_group: SamplePlacementGroup
    user_data: CustomUserData
    labels:
      - "sampleLabelName001=sampleLabelValue001"
      - "sampleLabelName002=sampleLabelValue002"
```