

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Anciens opérateurs d' SageMaker IA pour Kubernetes
<a name="kubernetes-sagemaker-operators-end-of-support"></a>

Cette section est basée sur la version originale d'[SageMaker AI Operators for ](https://github.com/aws/amazon-sagemaker-operator-for-k8s) Kubernetes.

**Important**  
Nous interrompons le développement et le support technique de la version originale d'[ SageMaker Operators for ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) Kubernetes.  
Si vous utilisez actuellement une version `v1.2.2` ou une version antérieure d'[ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), nous vous recommandons de migrer vos ressources vers le contrôleur de service [ ACK pour Amazon. SageMaker ](https://github.com/aws-controllers-k8s/sagemaker-controller) Le contrôleur de service ACK est une nouvelle génération d' SageMaker opérateurs pour Kubernetes basée sur [AWS Controllers for Kubernetes (ACK). ](https://aws-controllers-k8s.github.io/community/)  
Pour en savoir plus sur les étapes de migration, consultez [Migrer les ressources vers la dernière version d'Operators](kubernetes-sagemaker-operators-migrate.md).  
Pour les réponses aux questions fréquemment posées sur la fin du support de la version originale d' SageMaker Operators for Kubernetes, voir [Annonce de la fin du support de la version originale d' SageMaker AI Operators pour Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Topics**
+ [Installez SageMaker AI Operators pour Kubernetes](#kubernetes-sagemaker-operators-eos-install)
+ [Utilisez Amazon SageMaker AI Jobs](kubernetes-sagemaker-jobs.md)
+ [Migrer les ressources vers la dernière version d'Operators](kubernetes-sagemaker-operators-migrate.md)
+ [Annonce de la fin du support de la version originale d' SageMaker AI Operators pour Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

## Installez SageMaker AI Operators pour Kubernetes
<a name="kubernetes-sagemaker-operators-eos-install"></a>

Suivez les étapes suivantes pour installer et utiliser SageMaker AI Operators for Kubernetes afin d'entraîner, de régler et de déployer des modèles d'apprentissage automatique avec Amazon AI. SageMaker 

**Topics**
+ [Configuration IAM basée sur le rôle IAM et déploiement de l’opérateur](#iam-role-based-setup-and-operator-deployment)
+ [nettoyer des ressources ;](#cleanup-operator-resources)
+ [Supprimer les opérateurs](#delete-operators)
+ [Résolution des problèmes](#troubleshooting)
+ [Images et SMLogs dans chaque région](#images-and-smlogs-in-each-region)

### Configuration IAM basée sur le rôle IAM et déploiement de l’opérateur
<a name="iam-role-based-setup-and-operator-deployment"></a>

Les sections suivantes décrivent les étapes de configuration et de déploiement de la version originale de l’opérateur.

**Avertissement**  
**Rappel : ** Les étapes suivantes n'installent pas la dernière version d' SageMaker AI Operators for Kubernetes. Pour installer les nouveaux opérateurs ACK-based SageMaker IA pour Kubernetes, consultez. [Les derniers opérateurs d' SageMaker IA pour Kubernetes](kubernetes-sagemaker-operators-ack.md)

#### Conditions préalables
<a name="prerequisites"></a>

Ce guide suppose que vous avez rempli les prérequis suivants : 
+ Installez les outils suivants sur la machine client utilisée pour accéder à votre cluster Kubernetes : 
  + [`kubectl`](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) version 1.13 ou ultérieure. Vous devez utiliser une version de `kubectl` différente au plus d'une version mineure par rapport à votre plan de contrôle de cluster Amazon EKS. Par exemple, un client `kubectl` 1.13 fonctionne avec des clusters Kubernetes 1.13 et 1.14. OpenID Connect (OIDC) n'est pas pris en charge dans les versions antérieures à 1.13. 
  + [`eksctl`](https://github.com/weaveworks/eksctl) version 0.7.0 ou ultérieure 
  + [AWS CLI ](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) version 1.16.232 ou ultérieure 
  + (facultatif) [Helm](https://helm.sh/docs/intro/install/) version 3.0 ou ultérieure 
  + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) 
+ Vous devez avoir des autorisations IAM de créer des rôles et d'attacher des politiques à des rôles.
+ Vous devez avoir créé un cluster Kubernetes sur lequel exécuter les opérateurs. Il doit s'agir de Kubernetes version 1.13 ou 1.14. Pour la création automatisée de cluster à l’aide de `eksctl`, consultez [Démarrer avec eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html). L'allocation d'un cluster prend de 20 à 30 minutes. 

#### Cluster-scoped déploiement
<a name="cluster-scoped-deployment"></a>

Avant de pouvoir déployer votre opérateur à l'aide d'un rôle IAM, associez un fournisseur d'identité (IdP) OpenID Connect (OIDC) à votre rôle pour vous authentifier auprès du service IAM.

##### Création d'un fournisseur OIDC pour votre cluster
<a name="create-an-openid-connect-provider-for-your-cluster"></a>

Les instructions suivantes montrent comment créer et associer un fournisseur OIDC à votre cluster Amazon EKS.

1. Définissez les variables d'environnement `CLUSTER_NAME` et `AWS_REGION` locales comme suit :

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="{{<your cluster name>}}"
   export AWS_REGION="{{<your region>}}"
   ```

1. Utilisez la commande suivante pour associer le fournisseur OIDC à votre cluster. Pour plus d’informations, consultez [Activation des rôles IAM pour les comptes de service sur votre cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Maintenant que le cluster dispose d'un fournisseur d'identité OIDC, vous pouvez créer un rôle et ServiceAccount autoriser Kubernetes à assumer ce rôle.

##### Obtenir l’ID OIDC
<a name="get-the-oidc-id"></a>

Pour configurer le ServiceAccount, obtenez l'URL de l'émetteur OIDC à l'aide de la commande suivante :

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

La commande renvoie un URL telle que la suivante : 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

Dans cette URL, la valeur `D48675832CA65BD10A532F597OIDCID` est l'ID OIDC. L'ID OIDC de votre cluster est différent. Vous avez besoin de cette valeur d'ID OIDC pour créer un rôle. 

 Si votre sortie est `None`, cela signifie que votre version client est ancienne. Pour contourner ce problème, exécutez la commande suivante : 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

L'URL OIDC est renvoyée comme suit : 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Créer un rôle IAM
<a name="create-an-iam-role"></a>

1. Créez un fichier nommé `trust.json` et insérez le bloc de code de relation d'approbation suivant. Assurez-vous de remplacer tous les espaces réservés `<OIDC ID>`, `<AWS account number>` et `<EKS Cluster region>` par des valeurs correspondant à votre cluster. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws:iam::{{111122223333}}:oidc-provider/oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:aud": "sts.amazonaws.com",
               "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::{{111122223333}}:oidc-provider/oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:aud": "sts.amazonaws.com",
               "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Exécutez la commande suivante pour créer un rôle avec la relation d’approbation définie dans `trust.json`. Ce rôle permet au cluster Amazon EKS d'obtenir et d'actualiser les informations d'identification à partir d'IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name {{<role name>}} --assume-role-policy-document file://trust.json --output=text
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
   ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
   STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
   STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default
   PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

    Notez l'`ROLE ARN` que vous transmettez à votre opérateur. 

##### Associer la AmazonSageMakerFullAccess politique au rôle
<a name="attach-the-amazonsagemakerfullaccess-policy-to-the-role"></a>

Pour donner au rôle l'accès à l' SageMaker IA, joignez la [ AmazonSageMakerFullAccess ](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess) politique. Si vous souhaitez limiter les autorisations à l’opérateur, vous pouvez créer votre propre politique personnalisée et l’attacher. 

 Pour attacher `AmazonSageMakerFullAccess`, exécutez la commande suivante : 

```
aws iam attach-role-policy --role-name {{<role name>}}  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Kubernetes ServiceAccount `sagemaker-k8s-operator-default` doit disposer d'autorisations. `AmazonSageMakerFullAccess` Confirmez cette donnée lorsque vous installez l'opérateur. 

##### Déploiement de l'opérateur
<a name="deploy-the-operator"></a>

Lors du déploiement de votre opérateur, vous pouvez utiliser un fichier YAML ou les Charts de Helm. 

##### Déploiement de l'opérateur avec YAML
<a name="deploy-the-operator-using-yaml"></a>

Il s'agit du moyen le plus simple de déployer vos opérateurs. Procédez comme suit : 

1. Téléchargez le script du programme d'installation à l'aide de la commande suivante : 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
   ```

1. Modifiez le fichier `installer.yaml` pour remplacer `eks.amazonaws.com/role-arn`. Remplacez l'ARN ici par l'Amazon Resource Name (ARN) pour le OIDC-based rôle que vous avez créé. 

1. Utilisez la commande suivante pour déployer le cluster : 

   ```
   kubectl apply -f installer.yaml
   ```

##### Déploiement de l'opérateur à l'aide des Charts de Helm
<a name="deploy-the-operator-using-helm-charts"></a>

Utilisez le Chart de Helm fourni pour installer l'opérateur. 

1. Clonez le répertoire du programme d'installation Helm à l'aide de la commande suivante : 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accédez au dossier `amazon-sagemaker-operator-for-k8s/hack/charts/installer`. Modifiez le fichier `rolebased/values.yaml`, qui inclut des paramètres de haut niveau pour le Chart. Remplacez l'ARN du rôle ici par l'Amazon Resource Name (ARN) pour le OIDC-based rôle que vous avez créé. 

1. Installez le Chart de Helm à l'aide de la commande suivante : 

   ```
   kubectl create namespace sagemaker-k8s-operator-system
     helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
   ```

   Si vous décidez d'installer l'opérateur dans un autre espace de noms que celui spécifié, vous devez ajuster l'espace de noms défini dans le fichier `trust.json` du rôle IAM pour qu'ils correspondent. 

1. Après un instant, le Chart est installé avec un nom généré de manière aléatoire. Exécutez les commandes suivantes pour vérifier que l'installation a bien été effectuée : 

   ```
   helm ls
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
     sagemaker-operator      sagemaker-k8s-operator-system   1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Vérification du déploiement de l’opérateur
<a name="verify-the-operator-deployment"></a>

1. Vous devriez pouvoir voir les définitions de ressources personnalisées (CRD) d' SageMaker IA pour chaque opérateur déployé sur votre cluster en exécutant la commande suivante : 

   ```
   kubectl get crd | grep sagemaker
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Assurez-vous que le pod de l'opérateur fonctionne correctement. Utilisez la commande suivante afin de répertorier tous les pods : 

   ```
   kubectl -n sagemaker-k8s-operator-system get pods
   ```

   Vous devez voir un pod nommé `sagemaker-k8s-operator-controller-manager-*****` dans l’espace de noms `sagemaker-k8s-operator-system` comme suit : 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Namespace-scoped déploiement
<a name="namespace-scoped-deployment"></a>

Vous avez la possibilité d’installer votre opérateur dans la portée d’un espace de noms Kubernetes individuel. Dans ce mode, le contrôleur surveille et réconcilie les ressources avec l' SageMaker IA uniquement si les ressources sont créées dans cet espace de noms. Cela permet de contrôler plus finement quel contrôleur gère quelles ressources. Cela est utile pour déployer sur plusieurs AWS comptes ou contrôler quels utilisateurs ont accès à des tâches particulières. 

Ce guide explique comment installer un opérateur dans un espace de noms prédéfini particulier. Pour déployer un contrôleur dans un deuxième espace de noms, suivez le guide du début à la fin et modifiez l’espace de noms à chaque étape. 

##### Création d'un fournisseur OIDC pour votre cluster Amazon EKS
<a name="create-an-openid-connect-provider-for-your-eks-cluster"></a>

Les instructions suivantes montrent comment créer et associer un fournisseur OIDC à votre cluster Amazon EKS. 

1. Définissez les variables d'environnement `CLUSTER_NAME` et `AWS_REGION` locales comme suit : 

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="{{<your cluster name>}}"
   export AWS_REGION="{{<your region>}}"
   ```

1. Utilisez la commande suivante pour associer le fournisseur OIDC à votre cluster. Pour plus d’informations, consultez [Activation des rôles IAM pour les comptes de service sur votre cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Maintenant que le cluster possède un fournisseur d'identité OIDC, créez un rôle et ServiceAccount autorisez Kubernetes à assumer ce rôle. 

##### Obtenir votre ID OIDC
<a name="get-your-oidc-id"></a>

Pour configurer le ServiceAccount, commencez par obtenir l'URL de l'émetteur d'OpenID Connect à l'aide de la commande suivante : 

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

La commande renvoie une URL telle que la suivante : 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

Dans cette URL, la valeur D48675832CA65BD10A532F597OIDCID est l’ID OIDC. L’ID OIDC de votre cluster est différent. Vous avez besoin de cette valeur d'ID OIDC pour créer un rôle. 

 Si votre sortie est `None`, cela signifie que votre version client est ancienne. Pour contourner ce problème, exécutez la commande suivante : 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

L'URL OIDC est renvoyée comme suit : 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Création de votre rôle IAM
<a name="create-your-iam-role"></a>

1. Créez un fichier nommé `trust.json` et insérez le bloc de code de relation d'approbation suivant. Assurez-vous de remplacer tous les espaces réservés `<OIDC ID>`, `<AWS account number>`, `<EKS Cluster region>` et `<Namespace>` par des valeurs correspondant à votre cluster. Aux fins du présent guide, `my-namespace` est utilisé pour la valeur `<Namespace>`. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
           "Federated": "arn:aws:iam::{{111122223333}}:oidc-provider/oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:aud": "sts.amazonaws.com",
                 "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:sub": "system:serviceaccount:{{<Namespace>}}:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::{{111122223333}}:oidc-provider/oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:aud": "sts.amazonaws.com",
                 "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:sub": "system:serviceaccount:{{<Namespace>}}:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Exécutez la commande suivante pour créer un rôle avec la relation d’approbation définie dans `trust.json`. Ce rôle permet au cluster Amazon EKS d'obtenir et d'actualiser les informations d'identification à partir d'IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name {{<role name>}} --assume-role-policy-document file://trust.json --output=text
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
     ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
     STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
     STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:my-namespace:sagemaker-k8s-operator-default
     PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

Notez l'`ROLE ARN`. Vous transmettez à votre opérateur. 

##### Associez la AmazonSageMakerFullAccess politique à votre rôle
<a name="attach-the-amazonsagemakerfullaccess-policy-to-your-role"></a>

Pour donner au rôle l'accès à l' SageMaker IA, joignez la [`AmazonSageMakerFullAccess`](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess) politique. Si vous souhaitez limiter les autorisations à l’opérateur, vous pouvez créer votre propre politique personnalisée et l’attacher. 

 Pour attacher `AmazonSageMakerFullAccess`, exécutez la commande suivante : 

```
aws iam attach-role-policy --role-name {{<role name>}}  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Kubernetes ServiceAccount `sagemaker-k8s-operator-default` doit disposer d'autorisations. `AmazonSageMakerFullAccess` Confirmez cette donnée lorsque vous installez l'opérateur. 

##### Déploiement de l'opérateur dans votre espace de noms
<a name="deploy-the-operator-to-your-namespace"></a>

Lors du déploiement de votre opérateur, vous pouvez utiliser un fichier YAML ou les Charts de Helm. 

##### Déploiement de l'opérateur dans votre espace de noms en utilisant YAML
<a name="deploy-the-operator-to-your-namespace-using-yaml"></a>

Il existe deux parties pour le déploiement d'un opérateur dans la portée d'un espace de noms. La première est l'ensemble des CRD installés au niveau du cluster. Ces définitions de ressources ne doivent être installées qu'une seule fois par cluster Kubernetes. La deuxième partie concerne les autorisations de l'opérateur et le déploiement lui-même. 

 Si vous n'avez pas déjà installé les CRD dans le cluster, appliquez le programme d'installation CRD YAML à l'aide de la commande suivante : 

```
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
```

Pour installer l'opérateur sur le cluster : 

1. Téléchargez le programme d'installation de l'opérateur YAML à l'aide de la commande suivante : 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
   ```

1. Mettez à jour le programme d'installation YAML pour placer les ressources dans votre espace de noms spécifié à l'aide de la commande suivante : 

   ```
   sed -i -e 's/PLACEHOLDER-NAMESPACE/{{<YOUR NAMESPACE>}}/g' operator.yaml
   ```

1. Modifiez le fichier `operator.yaml` pour placer des ressources dans votre `eks.amazonaws.com/role-arn`. Remplacez l'ARN ici par l'Amazon Resource Name (ARN) pour le OIDC-based rôle que vous avez créé. 

1. Utilisez la commande suivante pour déployer le cluster : 

   ```
   kubectl apply -f operator.yaml
   ```

##### Déploiement de l'opérateur dans votre espace de noms à l'aide des Charts de Helm
<a name="deploy-the-operator-to-your-namespace-using-helm-charts"></a>

Deux parties sont requises pour le déploiement d'un opérateur dans la portée d'un espace de noms. La première est l'ensemble des CRD installés au niveau du cluster. Ces définitions de ressources ne doivent être installées qu'une seule fois par cluster Kubernetes. La deuxième partie concerne les autorisations de l'opérateur et le déploiement lui-même. Lorsque vous utilisez les Charts de Helm, vous devez d'abord créer l'espace de noms à l'aide de `kubectl`. 

1. Clonez le répertoire du programme d'installation Helm à l'aide de la commande suivante : 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Accédez au dossier `amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced`. Modifiez le fichier `rolebased/values.yaml`, qui inclut des paramètres de haut niveau pour le Chart. Remplacez l'ARN du rôle ici par l'Amazon Resource Name (ARN) pour le OIDC-based rôle que vous avez créé. 

1. Installez le Chart de Helm à l’aide de la commande suivante : 

   ```
   helm install crds crd_chart/
   ```

1. Créez l'espace de noms requis et installez l'opérateur à l'aide de la commande suivante : 

   ```
   kubectl create namespace {{<namespace>}}
   helm install --n {{<namespace>}} op operator_chart/
   ```

1. Après un instant, le graphique est installé avec le nom `sagemaker-operator`. Exécutez les commandes suivantes pour vérifier que l'installation a bien été effectuée : 

   ```
   helm ls
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   sagemaker-operator      my-namespace                    1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Vérifier le déploiement de l’opérateur dans votre espace de noms
<a name="verify-the-operator-deployment-to-your-namespace"></a>

1. Vous devriez pouvoir voir les définitions de ressources personnalisées (CRD) d' SageMaker IA pour chaque opérateur déployé sur votre cluster en exécutant la commande suivante : 

   ```
   kubectl get crd | grep sagemaker
   ```

   Le résultat doit être similaire à ce qui suit : 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Assurez-vous que le pod de l'opérateur fonctionne correctement. Utilisez la commande suivante afin de répertorier tous les pods : 

   ```
   kubectl -n my-namespace get pods
   ```

   Vous devez voir un pod nommé `sagemaker-k8s-operator-controller-manager-*****` dans l’espace de noms `my-namespace` comme suit : 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Installez le plugin `` Kubectl SageMaker AI logs
<a name="install-the-amazon-sagemaker-logs-kubectl-plugin"></a>

 Dans le cadre des opérateurs d' SageMaker IA pour Kubernetes, vous pouvez utiliser le `smlogs` [ plugin pour. ](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) `kubectl` Cela permet de diffuser CloudWatch des journaux d' SageMaker IA avec`kubectl`. `kubectl`doit être installé sur votre [ PATH](http://www.linfo.org/path_env_var.html). Les commandes suivantes placent le binaire dans le répertoire `sagemaker-k8s-bin` de votre répertoire de base et ajoutent ce répertoire à votre `PATH`. 

```
export os="linux"
  
wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz
tar xvzf ${os}.amd64.tar.gz
  
# Move binaries to a directory in your homedir.
mkdir ~/sagemaker-k8s-bin
cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/.
  
# This line adds the binaries to your PATH in your .bashrc.
  
echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc
  
# Source your .bashrc to update environment variables:
source ~/.bashrc
```

Utilisez la commande suivante pour vérifier que le plug-in `kubectl` est correctement installé : 

```
kubectl smlogs
```

Si le plug-in `kubectl` est installé correctement, votre sortie doit ressembler à ce qui suit : 

```
View SageMaker AI logs via Kubernetes
  
Usage:
  smlogs [command]
  
Aliases:
  smlogs, SMLogs, Smlogs
  
Available Commands:
  BatchTransformJob       View BatchTransformJob logs via Kubernetes
  TrainingJob             View TrainingJob logs via Kubernetes
  help                    Help about any command
  
Flags:
   -h, --help   help for smlogs
  
Use "smlogs [command] --help" for more information about a command.
```

### nettoyer des ressources ;
<a name="cleanup-operator-resources"></a>

Pour désinstaller l'opérateur de votre cluster, vous devez d'abord vous assurer de supprimer toutes les ressources d' SageMaker IA du cluster. Si vous ne le faites pas, l’opération de suppression de l’opérateur se bloque. Exécutez les commandes suivantes pour arrêter toutes les tâches : 

```
# Delete all SageMaker AI jobs from Kubernetes
kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
```

Vous devez voir des résultats similaires à ce qui suit : 

```
$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
  
$ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
  
$ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
  
$ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
```

Après avoir supprimé toutes les tâches d' SageMaker IA, consultez [Supprimer les opérateurs](#delete-operators) la section Supprimer l'opérateur de votre cluster.

### Supprimer les opérateurs
<a name="delete-operators"></a>

#### Supprimer les opérateurs basés sur les clusters
<a name="delete-cluster-based-operators"></a>

##### Opérateurs installés à l’aide de YAML
<a name="operators-installed-using-yaml"></a>

Pour désinstaller l'opérateur de votre cluster, assurez-vous que toutes les ressources d' SageMaker IA ont été supprimées du cluster. Si vous ne le faites pas, l’opération de suppression de l’opérateur se bloque.

**Note**  
Avant de supprimer votre cluster, veillez à supprimer toutes les ressources d' SageMaker IA du cluster. Pour plus d’informations, consultez [nettoyer des ressources ;](#cleanup-operator-resources).

Après avoir supprimé toutes les tâches d' SageMaker IA, utilisez `kubectl` pour supprimer l'opérateur du cluster :

```
# Delete the operator and its resources
kubectl delete -f /installer.yaml
```

Vous devez voir des résultats similaires à ce qui suit : 

```
$ kubectl delete -f raw-yaml/installer.yaml
namespace "sagemaker-k8s-operator-system" deleted
customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted
role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted
rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted
service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted
deployment.apps "sagemaker-k8s-operator-controller-manager" deleted
secrets "sagemaker-k8s-operator-abcde" deleted
```

##### Opérateurs installés à l’aide des Charts de Helm
<a name="operators-installed-using-helm-charts"></a>

Pour supprimer les CRD de l'opérateur, supprimez tout d'abord toutes les tâches en cours d'exécution. Supprimez ensuite le Chart de Helm utilisé pour déployer les opérateurs à l'aide des commandes suivantes : 

```
# get the helm charts
helm ls
  
# delete the charts
helm delete {{<chart_name>}}
```

#### Supprimer les opérateurs basés sur des espaces de noms
<a name="delete-namespace-based-operators"></a>

##### Opérateurs installés avec YAML
<a name="operators-installed-with-yaml"></a>

Pour désinstaller l'opérateur de votre cluster, assurez-vous d'abord que toutes les ressources d' SageMaker IA ont été supprimées du cluster. Si vous ne le faites pas, l’opération de suppression de l’opérateur se bloque.

**Note**  
Avant de supprimer votre cluster, veillez à supprimer toutes les ressources d' SageMaker IA du cluster. Pour plus d’informations, consultez [nettoyer des ressources ;](#cleanup-operator-resources).

Après avoir supprimé toutes les tâches d' SageMaker IA, supprimez `kubectl` d'abord l'opérateur de l'espace de noms, puis les CRD du cluster. Exécutez les commandes suivantes pour supprimer l’opérateur du cluster : 

```
# Delete the operator using the same yaml file that was used to install the operator
kubectl delete -f operator.yaml
  
# Now delete the CRDs using the CRD installer yaml
kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
  
# Now you can delete the namespace if you want
kubectl delete namespace {{<namespace>}}
```

##### Opérateurs installés avec des Charts de Helm
<a name="operators-installed-with-helm-charts"></a>

Pour supprimer les CRD de l'opérateur, supprimez tout d'abord toutes les tâches en cours d'exécution. Supprimez ensuite le Chart de Helm utilisé pour déployer les opérateurs à l’aide des commandes suivantes : 

```
# Delete the operator
helm delete {{<chart_name>}}
  
# delete the crds
helm delete crds
  
# optionally delete the namespace
kubectl delete namespace {{<namespace>}}
```

### Résolution des problèmes
<a name="troubleshooting"></a>

#### Débogage d'une tâche ayant échoué
<a name="debugging-a-failed-job"></a>

Suivez ces étapes pour déboguer une tâche qui a échoué.
+ Vous pouvez vérifier le statut de la tâche en exécutant la commande suivante : 

  ```
  kubectl get {{<CRD Type>}} {{<job name>}}
  ```
+ Si la tâche a été créée dans SageMaker AI, vous pouvez utiliser la commande suivante pour voir les `STATUS` et les `SageMaker Job Name` : 

  ```
  kubectl get {{<crd type>}} {{<job name>}}
  ```
+ Vous pouvez utiliser `smlogs` pour trouver la cause du problème à l’aide de la commande suivante : 

  ```
  kubectl smlogs {{<crd type>}} {{<job name>}}
  ```
+  Vous pouvez également utiliser la commande `describe` pour obtenir plus de détails sur la tâche à l'aide de la commande suivante. Le résultat a un champ `additional` qui contient plus d’informations sur le statut de la tâche. 

  ```
  kubectl describe {{<crd type>}} {{<job name>}}
  ```
+ Si la tâche n'a pas été créée dans SageMaker AI, utilisez les journaux du module de l'opérateur pour trouver la cause du problème comme suit : 

  ```
  $ kubectl get pods -A | grep sagemaker
  # Output:
  sagemaker-k8s-operator-system   sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z   2/2     Running   0          3h33m
    
  $ kubectl logs -p {{<pod name>}} -c manager -n sagemaker-k8s-operator-system
  ```

#### Suppression d’une CRD de l’opérateur
<a name="deleting-an-operator-crd"></a>

Si la suppression d'une tâche ne fonctionne pas, vérifiez si l'opérateur est en cours d'exécution. Si l'opérateur n'est pas en cours d'exécution, vous devez supprimer le finalisateur en procédant comme suit : 

1. Dans un nouveau terminal, ouvrez la tâche dans un éditeur en utilisant `kubectl edit` comme suit : 

   ```
   kubectl edit {{<crd type>}} {{<job name>}}
   ```

1. Modifiez la tâche pour supprimer le finalisateur en supprimant les deux lignes suivantes du fichier. Enregistrez le fichier et la tâche est supprimée. 

   ```
   finalizers:
     - sagemaker-operator-finalizer
   ```

### Images et SMLogs dans chaque région
<a name="images-and-smlogs-in-each-region"></a>

Le tableau suivant répertorie les images d'opérateur et les SMLogs disponibles dans chaque région. 


|  Région  |  Image du contrôleur  |  Linux SMLogs  | 
| --- | --- | --- | 
|  us-east-1  |  957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-east-2  |  922499468684.dkr.ecr.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-west-2  |  640106867763.dkr.ecr.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  eu-west-1  |  613661167059.dkr.ecr.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 