

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

# 安裝 SageMaker AI Spaces 附加元件
<a name="operator-install"></a>

## 相依性
<a name="dependencies"></a>

**Amazon EKS Pod Identity Agent 附加元件**
+ 運算子取得 AWS 登入資料時需要
+ **通常預先安裝**在大多數 EKS 叢集上
+ 安裝：透過 EKS 附加元件

**Cert-manager**
+ TLS 憑證管理的必要項目
+ 如果使用 HyperPod 快速叢集建立**，則預先安裝** 
+ 安裝：透過 EKS 附加元件

**EBS CSI 驅動程式**
+ 空間持久性儲存 (EBS 磁碟區） 的必要項目
+ 使用 SageMaker 主控台安裝時**自動**安裝
+ 需要具有 `AmazonEBSCSIDriverPolicy` \$1 HyperPod 特定許可的 IAM 角色
+ 安裝：透過 EKS 附加元件。不過，請務必依照指南安裝 HyperPod 所需的其他許可。
+ 參考：[在 HyperPod 上使用 Amazon EBS CSI 驅動程式](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-ebs.html)

## WebUI Access 的其他相依性
<a name="-additional-dependencies"></a>

**AWS Load Balancer控制器**
+ 如果使用 HyperPod 快速叢集建立**，則預先安裝** 
+ 安裝：透過 Helm
+ 手動安裝指南：[安裝 AWS Load Balancer控制器](https://docs.aws.amazon.com/eks/latest/userguide/lbc-helm.html)

**外部 DNS**
+ 使用自訂網域進行 WebUI 存取時需要
+ 自動管理 Route53 DNS 記錄
+ 需要具有 Route53 許可的 IAM 角色
+ 安裝：透過 EKS 附加元件

## 安裝
<a name="installation"></a>

開始之前，請確定您已：
+ 具有至少一個執行 Kubernetes 1.30 版或更新版本之工作者節點的作用中 SageMaker HyperPod 叢集
+ 至少一個具有最小執行個體類型的工作者節點 (XX vCPU、YY GiB 記憶體）

### 安裝 Amazon SageMaker Spaces 附加元件
<a name="space-add-on"></a>

您可以使用預設設定的快速安裝或進階組態的自訂安裝來安裝 SageMaker Spaces 附加元件。

#### 快速安裝
<a name="quick-install"></a>

1. 開啟位在 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/) 的 Amazon SageMaker 主控台。

1. 從叢集清單中選擇您的叢集。

1. 在 IDE 和筆記本索引標籤上，尋找 Amazon SageMaker Spaces，然後選擇快速安裝。

自動快速安裝：
+ 建立附加元件所需的 IAM 角色
+ 使用 Systems Manager 所需的 IAM 角色啟用遠端存取模式
+ 安裝附加元件並設定 Pod 身分關聯

#### 自訂安裝
<a name="custom-install"></a>

1. 開啟位在 [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/) 的 Amazon SageMaker 主控台。

1. 從叢集清單中選擇您的叢集。

1. 在 IDE 和筆記本索引標籤上，尋找 Amazon SageMaker Spaces，然後選擇自訂安裝。

1. 設定以下選項：

   **附加元件所需的 IAM 角色**
   + 選擇是否建立具有建議許可的新 IAM 角色，或使用具有必要許可的現有角色 （請參閱上述管理員許可設定一節）

   **遠端存取組態**
   + 啟用以允許使用者使用 AWS Systems Manager 從本機 Visual Studio 程式碼連線到空格
   + 對於 SSM 受管執行個體角色：
     + **建立新角色** – 附加元件會建立和管理具有必要 Systems Manager 許可的角色
     + **使用現有角色** – 選取具有必要 Systems Manager 許可的預先設定角色
   + 確保 Spaces 附加元件執行角色具有 SSM 受管執行個體角色的 PassRole 許可
**注意**  
啟用遠端存取會啟用 AWS Systems Manager advanced-instances 方案，以支付每個執行個體的額外費用。如需定價資訊，請參閱 Systems Manager 定價。

   **Web 瀏覽器存取組態**
   + 啟用以允許使用者使用 Route 53 DNS 和 SSL 憑證透過 Web 瀏覽器存取空間
   + **先決條件：**在啟用瀏覽器存取之前安裝 AWS Load Balancer控制器
   + **Route 53 託管區域：**為您擁有的網域或子網域選取現有的託管區域。網域或子網域必須註冊且由您控制，才能啟用 DNS 管理和 SSL 憑證驗證。

     如需網域註冊的詳細資訊，請參閱 Route 53 開發人員指南中的[註冊新的網域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html#domain-register-procedure-section)。
   + **子網域：**輸入子網域字首 （僅限英數字元和連字號，最多 63 個字元）
   + **SSL 憑證：**從 AWS Certificate Manager 選取現有的 SSL 憑證。憑證必須有效並涵蓋您的子網域 （例如 subdomain.domain.com) 和萬用字元子網域 （例如 \$1.subdomain.domain.com)，以支援個別空間存取 URLs。
   +  **權杖簽署金鑰：**選取用於 JWT 權杖簽署的 AWS KMS 非對稱金鑰。金鑰用於加密身分驗證字符，以安全存取 WebUI。您可以在 KMS 中建立新的非對稱金鑰，或選取您帳戶可存取的現有金鑰。
**注意**  
標準 Route 53 費用適用於託管區域和 DNS 查詢。如需定價資訊，請參閱 Route 53 定價。

#### EKS 附加元件安裝 - Jupyter K8s 搭配 WebUI
<a name="webui-install"></a>

##### 組態檔案
<a name="configure-file"></a>

建立 `addon-config.yaml`：

```
jupyter-k8s:
  workspacePodWatching:
    enable: true

jupyter-k8s-aws-hyperpod:
  clusterWebUI:
    enabled: true
    domain: "<DOMAIN_NAME>"
    awsCertificateArn: "<ACM_CERTIFICATE_ARN>"
    kmsEncryptionContext:
      enabled: true
    traefik:
      shouldInstall: true
    auth:
      kmsKeyId: "<KMS_KEY_ARN>"
```

**取代下列預留位置：**
+ <DOMAIN\$1NAME>：您的網域名稱 （例如 `jupyter.example.com`)
+ <ACM\$1CERTIFICATE\$1ARN>：您的 ACM 憑證 ARN （例如 `arn:aws:acm:us-west-2:111122223333:certificate/12345678-1234-1234-1234-123456789012`、
+ <KMS\$1KEY\$1ARN>：您的 KMS 金鑰 ARN （例如， `arn:aws:kms:us-west-2:111122223333:key/12345678-1234-1234-1234-123456789012`

##### 透過 安裝 AWS CLI
<a name="install-via-cli"></a>

```
aws eks create-addon \
  --cluster-name <CLUSTER_NAME> \
  --addon-name amazon-sagemaker-spaces \
  --configuration-values file://addon-config.yaml \
  --resolve-conflicts OVERWRITE \
  --region <AWS_REGION>
```

**若要更新現有的附加元件：**

```
aws eks update-addon \
  --cluster-name <CLUSTER_NAME> \
  --addon-name amazon-sagemaker-spaces \
  --configuration-values file://addon-config.yaml \
  --resolve-conflicts OVERWRITE \
  --region <AWS_REGION>
```

##### 透過 安裝 AWS 管理主控台
<a name="install-via-console"></a>

1. 前往 **EKS 主控台** → 選取您的叢集

1. 按一下**附加元件**索引標籤 → **新增**

1. 選取 **SageMaker Spaces** 附加元件

1. 在**選用組態設定中貼上上述 YAML 組態**

1. 按一下**下一步**，然後檢閱附加元件設定

1. 按一下**建立**

##### 驗證安裝
<a name="install-verify"></a>

```
# Check addon status
aws eks describe-addon \
  --cluster-name <CLUSTER_NAME> \
  --addon-name amazon-sagemaker-spaces \
  --region <AWS_REGION>
```

##### 自訂 ALB 屬性
<a name="customize-alb"></a>

根據預設，附加元件會建立公有負載平衡器，以搭配 Web UI 使用。您可以使用 EKS 附加元件屬性來自訂負載平衡器屬性。

若要建立內部 ALB，請將 方案設定為 `internal`：

```
jupyter-k8s-aws-hyperpod:
  clusterWebUI:
    enabled: true
    domain: "<DOMAIN_NAME>"
    awsCertificateArn: "<ACM_CERTIFICATE_ARN>"
    alb:
      scheme: "internal"  # Default is "internet-facing"
```

您也可以使用 `alb.annotations` 欄位來自訂 ALB 設定：

```
jupyter-k8s-aws-hyperpod:
  clusterWebUI:
    enabled: true
    domain: "<DOMAIN_NAME>"
    awsCertificateArn: "<ACM_CERTIFICATE_ARN>"
    alb:
      scheme: "internal"
      annotations:
        alb.ingress.kubernetes.io/security-groups: "<SECURITY_GROUP_ID>"
        alb.ingress.kubernetes.io/subnets: "<SUBNET_ID_1>,<SUBNET_ID_2>"
        alb.ingress.kubernetes.io/load-balancer-attributes: "idle_timeout.timeout_seconds=60"
```

**常見的 ALB 註釋：**
+ `alb.ingress.kubernetes.io/security-groups`：指定 ALB 的安全群組
+ `alb.ingress.kubernetes.io/subnets`：指定 ALB 的子網路
+ `alb.ingress.kubernetes.io/load-balancer-attributes`：設定 ALB 屬性 （閒置逾時、存取日誌等）

如需所有可用的註釋，請參閱[AWS Load Balancer控制器文件](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/)。

### 附加元件的升級/版本控制
<a name="upgrade-add-on"></a>

```
aws eks update-addon \
  --cluster-name <CLUSTER_NAME> \
  --addon-name amazon-sagemaker-spaces \
  --configuration-values file://addon-config.yaml \
  --resolve-conflicts OVERWRITE \
  --region <AWS_REGION>
```