

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# リソースを最新のオペレータに移行する
<a name="kubernetes-sagemaker-operators-migrate"></a>

[SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) のオリジナルバージョンの開発とテクニカルサポートを中止します。

現在 [SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) のバージョン `v1.2.2` 以下を使用している場合は、リソースを [Amazon SageMaker 用 ACK サービスコントローラー](https://github.com/aws-controllers-k8s/sagemaker-controller)に移行することをお勧めします。ACK サービスコントローラーは、[AWS Controllers for Kubernetes (ACK)](https://aws-controllers-k8s.github.io/community/) をベースにした新世代の SageMaker Operators for Kubernetes です。

元のバージョンの SageMaker Operators for Kubernetes のサポート終了に関するよくある質問への回答については、「[SageMaker AI Operators for Kubernetes のオリジナル バージョンのサポート終了についてのお知らせ](kubernetes-sagemaker-operators-eos-announcement.md)」を参照してください。

次の手順に従ってリソースを移行し、ACK を使用して Amazon SageMaker AI で機械学習モデルをトレーニング、チューニング、デプロイします。

**注記**  
最新の SageMaker AI Operators for Kubernetes には下位互換性がありません。

**Topics**
+ [前提条件](#migrate-resources-to-new-operators-prerequisites)
+ [リソースの採用](#migrate-resources-to-new-operators-steps)
+ [古いリソースをクリーンアップする](#migrate-resources-to-new-operators-cleanup)
+ [最新の SageMaker AI Operators for Kubernetes を使用する](#migrate-resources-to-new-operators-tutorials)

## 前提条件
<a name="migrate-resources-to-new-operators-prerequisites"></a>

最新の SageMaker AI Operators for Kubernetes にリソースを正常に移行するには、次を実行する必要があります。

1. 最新の SageMaker AI Operators for Kubernetes をインストールします。ステップバイステップの手順については、「*ACK SageMaker AI Controller を使用した機械学習*」の「[設定](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup)」を参照してください。

1. [HostingAutoscalingPolicy リソース](#migrate-resources-to-new-operators-hap) を使用している場合は、新しい Application Auto Scaling Operator をインストールします。ステップバイステップの手順については、「*アプリケーションのオートスケーリングを使用して SageMaker AI ワークロードをスケールする*」の「[設定](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/#setup)」を参照してください。HostingAutoScalingPolicy リソースを使用していない場合、このステップは省略できます。

アクセス許可が正しく設定されている場合、ACK SageMaker AI サービスコントローラーは AWS リソースの仕様とステータスを判断し、ACK コントローラーが最初に作成したかのようにリソースを照合できます。

## リソースの採用
<a name="migrate-resources-to-new-operators-steps"></a>

最新の SageMaker AI Operators for Kubernetes は、ACK サービスコントローラーによって最初に作成されなかったリソースを採用する機能を提供します。詳細については、ACK ドキュメントの[「既存の AWS リソースの採用](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/)」を参照してください。

次の手順は、最新の SageMaker AI Operators for Kubernetes が既存の SageMaker AI エンドポイントを採用する方法を説明しています。次のサンプルを `adopt-endpoint-sample.yaml` という名前のファイルとして保存します。

```
apiVersion: services.k8s.aws/v1alpha1
kind: AdoptedResource
metadata:
  name: adopt-endpoint-sample
spec:  
  aws:
    # resource to adopt, not created by ACK
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      # target K8s CR name
      name: xgboost-endpoint
```

`kubectl apply` を使用してカスタムリソース (CR) を送信します。

```
kubectl apply -f adopt-endpoint-sample.yaml
```

`kubectl describe` を使用して、採用したリソースのステータス条件を確認します。

```
kubectl describe adoptedresource adopt-endpoint-sample
```

`ACK.Adopted` 条件が `True` であることを確認します。出力は次の例のようになります。

```
---
kind: AdoptedResource
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"services.k8s.aws/v1alpha1","kind":"AdoptedResource","metadata":{"annotations":{},"name":"xgboost-endpoint","namespace":"default"},"spec":{"aws":{"nameOrID":"xgboost-endpoint"},"kubernetes":{"group":"sagemaker.services.k8s.aws","kind":"Endpoint","metadata":{"name":"xgboost-endpoint"}}}}'
  creationTimestamp: '2021-04-27T02:49:14Z'
  finalizers:
  - finalizers.services.k8s.aws/AdoptedResource
  generation: 1
  name: adopt-endpoint-sample
  namespace: default
  resourceVersion: '12669876'
  selfLink: "/apis/services.k8s.aws/v1alpha1/namespaces/default/adoptedresources/adopt-endpoint-sample"
  uid: 35f8fa92-29dd-4040-9d0d-0b07bbd7ca0b
spec:
  aws:
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      name: xgboost-endpoint
status:
  conditions:
  - status: 'True'
    type: ACK.Adopted
```

リソースがクラスターに存在することを確認します。

```
kubectl describe endpoints.sagemaker xgboost-endpoint
```

### HostingAutoscalingPolicy リソース
<a name="migrate-resources-to-new-operators-hap"></a>

`HostingAutoscalingPolicy` (HAP) リソースは、複数の Application Auto Scaling リソース (`ScalableTarget` と `ScalingPolicy`) で構成されています。ACK で HAP リソースを採用する場合は、まず [Application Auto Scaling コントローラー](https://github.com/aws-controllers-k8s/applicationautoscaling-controller)をインストールします。HAP リソースを採用するには、`ScalableTarget` と `ScalingPolicy` の両方のリソースを採用する必要があります。これらのリソースのリソース識別子は、`HostingAutoscalingPolicy` リソースのステータス (`status.ResourceIDList`) で確認できます。

### HostingDeployment リソース
<a name="migrate-resources-to-new-operators-hosting-deployment"></a>

`HostingDeployment` リソースは、複数の SageMaker AI リソース (`Endpoint`、`EndpointConfig`、各 `Model`) で構成されます。ACK で SageMaker エンドポイントを採用する場合は、`Endpoint`、`EndpointConfig` と各 `Model` を個別に採用する必要があります。`Endpoint`、`EndpointConfig`、`Model` の名前は、`HostingDeployment` リソースのステータス (`status.endpointName`、`status.endpointConfigName`、`status.modelNames`) にあります。

サポートされているすべての SageMaker AI リソースのリストについては、「[ACK API リファレンス](https://aws-controllers-k8s.github.io/community/reference/)」を参照してください。

## 古いリソースをクリーンアップする
<a name="migrate-resources-to-new-operators-cleanup"></a>

最新の SageMaker Operators for Kubernetes がリソースを採用したら、古いオペレーターをアンインストールして古いリソースをクリーンアップできます。

### ステップ 1: 古いオペレーターをアンインストールする
<a name="migrate-resources-to-new-operators-uninstall"></a>

古いオペレータをアンインストールするには、「[オペレーターを削除する](kubernetes-sagemaker-operators-end-of-support.md#delete-operators)」を参照してください。

**警告**  
古いリソースを削除する前に、古いオペレーターをアンインストールします。

### ステップ 2: ファイナライザーを取り除いて古いリソースを削除する
<a name="migrate-resources-to-new-operators-delete-resources"></a>

**警告**  
古いリソースを削除する前に、必ず古いオペレーターをアンインストールします。

古いオペレータをアンインストールしたら、ファイナライザーを明示的に削除して古いオペレータリソースを削除する必要があります。次のサンプルスクリプトは、特定の名前空間で古いオペレーターが管理していたトレーニングジョブをすべて削除する方法を示しています。追加のリソースが新しいオペレーターに採用された後、同様のパターンを使用して削除できます。

**注記**  
リソースを取得するには、フルリソース名を使用する必要があります。例えば、`kubectl get trainingjob` ではなく `kubectl get trainingjobs.sagemaker.aws.amazon.com` を使用します。

```
namespace=sagemaker_namespace
training_jobs=$(kubectl get trainingjobs.sagemaker.aws.amazon.com -n $namespace -ojson | jq -r '.items | .[] | .metadata.name')
 
for job in $training_jobs
do
    echo "Deleting $job resource in $namespace namespace"
    kubectl patch trainingjobs.sagemaker.aws.amazon.com $job -n $namespace -p '{"metadata":{"finalizers":null}}' --type=merge
    kubectl delete trainingjobs.sagemaker.aws.amazon.com $job -n $namespace
done
```

## 最新の SageMaker AI Operators for Kubernetes を使用する
<a name="migrate-resources-to-new-operators-tutorials"></a>

最新の SageMaker Operators for Kubernetes の使用に関する詳細なガイドについては、「[SageMaker AI Operators for Kubernetes を使用する](kubernetes-sagemaker-operators-ack.md#kubernetes-sagemaker-operators-ack-use)」を参照してください。