

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.

# Certificats personnalisés et gestion du DNS Route 53 pour HyperPod Inference
<a name="sagemaker-hyperpod-model-deployment-custom-certs"></a>

Les étapes suivantes vous montrent comment utiliser vos propres certificats ACM pour les points de terminaison d' HyperPodinférence et éventuellement configurer l'opérateur pour gérer les enregistrements DNS Route 53 pour votre domaine personnalisé.

Avec les certificats personnalisés, vous fournissez un ARN de certificat ACM et l'opérateur l'attache à l'Application Load Balancer (ALB), surveille son état de santé et prend en charge la détection automatique des renouvellements. L'opérateur prend en charge les certificats ACM approuvés par le public, les certificats CA AWS privés et les certificats importés depuis des autorités de certification externes.

Les certificats personnalisés peuvent être utilisés seuls ou combinés à la gestion DNS de Route 53. La gestion du DNS Route 53 nécessite un certificat personnalisé et utilise le nom de domaine indiqué dans la configuration de votre certificat pour créer et gérer les enregistrements DNS.

## Conditions préalables
<a name="sagemaker-hyperpod-model-deployment-custom-certs-prereqs"></a>

Avant de commencer, vérifiez les points suivants :
+ Configurez des fonctionnalités d'inférence sur vos SageMaker HyperPod clusters Amazon. Pour de plus amples informations, veuillez consulter [Configuration de vos HyperPod clusters pour le déploiement de modèles](sagemaker-hyperpod-model-deployment-setup.md).
+ [Kubectl](https://kubernetes.io/docs/reference/kubectl/) installé dans votre terminal.
+ Vous avez fourni ou importé un certificat TLS dans ACM dans la même AWS région que votre cluster. HyperPod Le certificat doit être à l'état **Émis** et doit inclure une chaîne de certificats (autorité de certification intermédiaire et autorité de certification racine). Self-signed les certificats importés dans ACM ne sont pas pris en charge en tant que certificats personnalisés car ils ne disposent pas d'une chaîne de certificats.
+ (Pour la gestion du DNS Route 53) Vous avez créé une zone hébergée Route 53 pour votre domaine. Les zones hébergées par le public sont recommandées. Les zones hébergées privées fonctionnent pour la création d'enregistrements, mais l'opérateur vérifie la résolution DNS à l'aide du résolveur DNS du pod, qui repose sur le résolveur DNS VPC. Pour les zones hébergées privées, la résolution DNS et les noms d'hôte DNS doivent être activés sur le VPC, et la zone hébergée privée doit être associée au VPC du cluster.

## Configuration des autorisations IAM
<a name="sagemaker-hyperpod-model-deployment-custom-certs-iam"></a>

Le rôle d'exécution de l'opérateur d'inférence nécessite des autorisations supplémentaires pour les certificats personnalisés et la gestion du DNS Route 53. Ajoutez les politiques suivantes à votre rôle d'exécution d' HyperPod inférence.

### Autorisations ACM et Amazon S3 pour les certificats personnalisés
<a name="sagemaker-hyperpod-model-deployment-custom-certs-iam-acm"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ACMCustomCertificateAccess",
            "Effect": "Allow",
            "Action": [
                "acm:DescribeCertificate",
                "acm:GetCertificate"
            ],
            "Resource": "arn:aws:acm:<region>:<account-id>:certificate/*"
        },
        {
            "Sid": "S3CertificateUpload",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectTagging"
            ],
            "Resource": "arn:aws:s3:::<tls-certificate-bucket>/*",
            "Condition": {
                "StringEquals": {
                    "s3:RequestObjectTag/CreatedBy": "HyperPodInference"
                }
            }
        }
    ]
}
```

**Note**  
Si le nom de votre compartiment Amazon S3 commence par`hyperpod-tls`, les autorisations Amazon S3 sont déjà incluses dans la politique `AmazonSageMakerHyperPodInferenceAccess` gérée et il vous suffit d'ajouter l'instruction ACM.

### Autorisations Route 53 pour la gestion du DNS
<a name="sagemaker-hyperpod-model-deployment-custom-certs-iam-r53"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Route53DNSManagement",
            "Effect": "Allow",
            "Action": [
                "route53:GetHostedZone",
                "route53:ListResourceRecordSets",
                "route53:ChangeResourceRecordSets"
            ],
            "Resource": "arn:aws:route53:::hostedzone/<hosted-zone-id>"
        }
    ]
}
```

Remplacez `<region>``<account-id>`,`<tls-certificate-bucket>`, et `<hosted-zone-id>` par vos valeurs réelles. Vous pouvez étendre l'ARN de la ressource ACM à des certificats spécifiques pour une sécurité renforcée.

## Configuration d'un certificat personnalisé
<a name="sagemaker-hyperpod-model-deployment-custom-certs-configure"></a>

Pour utiliser un certificat personnalisé, ajoutez la `customCertificateConfig` section à votre `JumpStartModel` spécification `InferenceEndpointConfig` ou `tlsConfig` à votre spécification. Les `dnsConfig` champs `tlsConfig` et sont identiques dans les deux CRD.

Les champs suivants sont disponibles dans `customCertificateConfig` et `tlsConfig` :

`tlsConfig.customCertificateConfig.acmArn`(Obligatoire, chaîne)  
L'ARN de votre certificat ACM. Doit être dans l'état **Émis**.

`tlsConfig.customCertificateConfig.domainName`(Obligatoire, chaîne)  
Le nom de domaine à utiliser à partir du certificat.  
+ Il doit s'agir d'un domaine spécifique et non d'un caractère générique. Pour les certificats génériques (par exemple,`*.example.com`), spécifiez le sous-domaine spécifique (par exemple,`api.example.com`).
+ Doit être en minuscules.
+ Doit correspondre à l'un des noms de domaine répertoriés dans le certificat.

`tlsConfig.tlsCertificateOutputS3Uri`(Conditionnel, chaîne)  
URI Amazon S3 où l'opérateur télécharge le certificat public. Obligatoire sauf si l'opérateur a été installé avec la variable d'`TLS_CERTIFICATE_OUTPUT_S3URI`environnement configurée. Si vous ne savez pas si cela a été défini, spécifiez-le explicitement.

Voici un exemple de fichier YAML permettant de créer un point de terminaison avec un certificat personnalisé.

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
  name: my-model
  namespace: my-namespace
spec:
  modelName: my-llm
  instanceType: ml.g5.24xlarge
  invocationEndpoint: v1/chat/completions
  replicas: 2
  modelSourceConfig:
    modelSourceType: s3
    s3Storage:
      bucketName: my-model-bucket
      region: us-west-2
    modelLocation: models/my-llm
  tlsConfig:
    customCertificateConfig:
      acmArn: arn:aws:acm:us-west-2:123456789012:certificate/abc12345-1234-1234-1234-abc123456789
      domainName: api.example.com
    tlsCertificateOutputS3Uri: s3://my-tls-bucket
  worker:
    image: my-inference-image:latest
    modelInvocationPort:
      containerPort: 8000
      name: http
    modelVolumeMount:
      name: model-weights
      mountPath: /opt/ml/model
    resources:
      limits:
        nvidia.com/gpu: "4"
      requests:
        cpu: "6"
        memory: 30Gi
        nvidia.com/gpu: "4"
```

Vous pouvez ajouter des `customCertificateConfig` éléments à un déploiement déjà en cours d'exécution. L'opérateur détecte le changement lors de la prochaine réconciliation, valide le certificat, l'attache à l'ALB et télécharge le certificat public sur Amazon S3. Aucune interruption de service ni aucun redéploiement ne sont nécessaires.

**Important**  
Si vous supprimez la `customCertificateConfig` section d'un déploiement en cours, l'opérateur revient à générer un nouveau certificat auto-signé. Cela remplace votre CA-signed certificat sur l'ALB.

## Configuration de la gestion DNS de Route 53
<a name="sagemaker-hyperpod-model-deployment-custom-certs-dns"></a>

La gestion du DNS Route 53 nécessite la configuration d'un certificat personnalisé et utilise le nom de domaine de`tlsConfig.customCertificateConfig.domainName`. Si vous n'avez pas configuré de certificat personnalisé, consultez [Configuration d'un certificat personnalisé](#sagemaker-hyperpod-model-deployment-custom-certs-configure) d'abord.

Pour activer la gestion DNS de Route 53, ajoutez la `dnsConfig` section suivante à vos spécifications :

```
spec:
  tlsConfig:
    customCertificateConfig:
      acmArn: arn:aws:acm:us-west-2:123456789012:certificate/abc12345-1234-1234-1234-abc123456789
      domainName: api.example.com
    tlsCertificateOutputS3Uri: s3://my-tls-bucket
  dnsConfig:
    hostedZoneId: Z1234567890ABC
```

La `dnsConfig` section peut être ajoutée en même `customCertificateConfig` temps ou ultérieurement à un déploiement existant. L'opérateur crée les enregistrements DNS lors de la prochaine réconciliation sans redémarrer vos pods.

Lorsque vous déployez avec`dnsConfig`, l'opérateur :

1. Valide que la zone hébergée existe et que votre domaine appartient à la zone hébergée (par exemple, `api.example.com` nécessite une zone hébergée pour`example.com`).

1. Vérifie les enregistrements A existants dans le domaine cible afin d'éviter les remplacements accidentels.

1. Crée **un enregistrement A** (alias) pointant votre domaine vers l'ALB et un **enregistrement TXT** avec un marqueur de propriété (`hyperpod-inference/owner=<namespace>/<name>`) pour éviter les conflits entre les points de terminaison. Ne modifiez ni ne supprimez l'enregistrement TXT manuellement.

1. Interroge la résolution DNS toutes les 30 secondes jusqu'à ce que le domaine soit résolu, puis marque le statut comme`Active`. Si l'enregistrement n'est pas résolu dans les 10 minutes, le statut passe à`Error`.

**Note**  
La gestion du DNS Route 53 n'est pas bloquante. Les erreurs lors de la création ou de la propagation des enregistrements DNS n'empêchent pas votre point de terminaison d'inférence d'atteindre l'`Ready`état. Le point de terminaison reste accessible via le nom d'hôte par défaut de l'ALB. Vérifiez la présence d' DNS-specific erreurs dans la `dnsStatus` section relative à l'état de la ressource.

## Utiliser un certificat personnalisé sans gestion DNS de Route 53
<a name="sagemaker-hyperpod-model-deployment-custom-certs-no-dns"></a>

La gestion du DNS Route 53 est facultative. Si vous souhaitez gérer vos propres enregistrements DNS, omettez `dnsConfig` cette section et configurez votre domaine manuellement.

Pour trouver le nom d'hôte ALB pour votre déploiement, le nom d'entrée dépend de l'activation ou non du routage intelligent.

**Sans routage intelligent :** l'entrée est nommée `alb-<deployment-name>` dans votre espace de noms.

```
kubectl get ingress alb-<deployment-name> -n <namespace> \
  -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
```

**Avec le routage intelligent :** l'entrée est nommée `alb-<deployment-name>-<namespace>` dans l'espace de `hyperpod-inference-system` noms.

```
kubectl get ingress alb-<deployment-name>-<namespace> -n hyperpod-inference-system \
  -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
```

Créez un enregistrement DNS dans votre fournisseur DNS pointant votre domaine vers ce nom d'hôte ALB :
+ **Route 53** — Créez un **enregistrement A** avec **Alias** activé, pointant vers l'ALB.
+ **Autres fournisseurs DNS** — Créez un **enregistrement CNAME** pointant votre domaine vers le nom DNS ALB. Les enregistrements CNAME ne peuvent pas être utilisés dans le domaine racine (par exemple,`example.com`) ; utilisez un sous-domaine tel que. `api.example.com`

**Note**  
Si l'ALB est recréé (par exemple, après avoir supprimé et redéployé le point de terminaison), le nom d'hôte de l'ALB change. Vous devez mettre à jour votre enregistrement DNS manuellement. La gestion DNS de Route 53 gère cela automatiquement.

## Vérification du statut de votre déploiement
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify"></a>

### Vérifiez le statut du certificat personnalisé
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-cert"></a>

```
kubectl describe InferenceEndpointConfig my-model -n my-namespace
```

Recherchez la `tlsCertificate` section dans le statut :

```
Status:
  Tls Certificate:
    Certificate ARN:    arn:aws:acm:us-west-2:123456789012:certificate/abc12345-...
    Certificate Health: Valid
    Certificate Domain Names:
      api.example.com
    Last Cert Expiry Time: 2027-04-23T00:00:00Z
```

Valeurs d'intégrité du certificat :
+ **Valide** — Le certificat est expiré dans plus de 60 jours.
+ **Expiration** — Le certificat expire dans les 60 jours. Un événement d'avertissement Kubernetes (`CertificateExpiring`) est émis.
+ **Expiré** — Le certificat a expiré. Un événement d'avertissement Kubernetes (`CertificateExpired`) est émis.

L'opérateur vérifie l'expiration du certificat toutes les 24 heures. Lorsqu'il détecte qu'un certificat a été renouvelé dans ACM (la `NotAfter` date change), il télécharge automatiquement le certificat public sur Amazon S3 et émet un événement. `CertificateRenewed`

### Vérifiez l'état du DNS
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-dns"></a>

Recherchez la `dnsStatus` section :

```
Status:
  Dns Status:
    Managed By Operator: true
    Record Name:         api.example.com
    Hosted Zone Id:      Z1234567890ABC
    Dns Health:          Active
    Message:             DNS record resolves successfully
```

Valeurs de santé du DNS :
+ **Actif** : l'enregistrement DNS est résolu avec succès. Votre domaine personnalisé est prêt à être utilisé.
+ **En attente** : des enregistrements DNS ont été créés dans Route 53 mais ne se sont pas encore propagés. L'opérateur revérifie toutes les 30 secondes.
+ **Erreur** : échec de la création ou de la propagation de l'enregistrement DNS. Consultez le `Message` champ pour plus de détails.

### Testez le point de terminaison déployé
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-test"></a>

Si vous avez configuré la gestion DNS de Route 53, appelez votre point de terminaison à l'aide de votre domaine personnalisé une fois que l'état du DNS s'est affiché`Active`. Si vous n'avez configuré qu'un certificat personnalisé sans gestion DNS, utilisez le nom d'hôte ALB depuis l'entrée (voir). [Utiliser un certificat personnalisé sans gestion DNS de Route 53](#sagemaker-hyperpod-model-deployment-custom-certs-no-dns)

```
curl -X POST https://api.example.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "my-llm", "messages": [{"role": "user", "content": "Hello"}]}'
```

**Note**  
Pour appeler via le point de terminaison SageMaker AI, `endpointName` définissez-le dans votre `InferenceEndpointConfig` ou `sageMakerEndpoint.name` dans votre `JumpStartModel` spécification. Si `endpointName` ce n'est pas le cas, aucun point de terminaison SageMaker AI n'est créé et seul l'appel direct d'ALB est disponible.

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name my-model \
  --content-type "application/json" \
  --body '{"model": "my-llm", "messages": [{"role": "user", "content": "Hello"}]}' \
  --region us-west-2 \
  --cli-binary-format raw-in-base64-out \
  /dev/stdout
```

## Gérez vos certificats personnalisés et vos enregistrements DNS
<a name="sagemaker-hyperpod-model-deployment-custom-certs-manage"></a>

**Modification du domaine ou de la zone hébergée**

Vous pouvez mettre à jour le `domainName` (in`customCertificateConfig`) ou `hostedZoneId` (in`dnsConfig`) sur un déploiement en cours. La modification du nom de domaine déclenche à la fois la revalidation du certificat et le transfert DNS : le nouveau domaine doit être valide dans votre certificat ACM (en tant que SAN ou joker correspondant).

L'opérateur effectue une découpe en toute sécurité :

1. Crée de nouveaux enregistrements DNS dans la nouvelle zone ou pour le nouveau domaine.

1. Vérifie que les nouveaux enregistrements sont résolus.

1. Supprime les anciens enregistrements DNS uniquement une fois que les nouveaux enregistrements ont été confirmés actifs.

Au cours de la transition, les anciens et les nouveaux domaines sont transférés vers l'ALB. L'enregistrement de propriété TXT a un TTL de 300 secondes (5 minutes), de sorte que les clients DNS peuvent mettre en cache l'ancien enregistrement jusqu'à 5 minutes après le nettoyage.

**Nettoyage**

Lorsque vous supprimez `InferenceEndpointConfig` ou supprimez la `dnsConfig` section, l'opérateur supprime automatiquement les enregistrements Route 53 A et TXT qu'il a créés. L'opérateur supprime uniquement les enregistrements dont il est propriétaire (vérifié par l'enregistrement TXT de propriété).

## Résolution des problèmes
<a name="sagemaker-hyperpod-model-deployment-custom-certs-troubleshooting"></a>

Utilisez ces étapes de débogage si votre certificat personnalisé ou votre configuration DNS ne fonctionne pas comme prévu.
+ **Le déploiement échoue en raison d'une erreur d'accès Amazon S3.** Vérifiez que le compartiment Amazon S3 spécifié dans `tlsCertificateOutputS3Uri` existe et se trouve dans la même région. Vérifiez que le rôle d'exécution de l'opérateur dispose `s3:PutObject` des `s3:PutObjectTagging` autorisations nécessaires sur le bucket. L'opérateur valide l'accès en écriture à Amazon S3 en chargeant un objet de test de zéro octet lors du déploiement initial.
+ **La validation du certificat échoue.** Vérifiez que le certificat ACM est dans l'`ISSUED`état :`aws acm describe-certificate --certificate-arn <arn> --region <region>`. Vérifiez que le certificat `domainName` correspond à un domaine ou à un SAN. Pour les certificats génériques (`*.example.com`), utilisez un sous-domaine spécifique tel que. `api.example.com`
+ **La création d'un enregistrement DNS échoue.** Vérifiez que l'ID de zone hébergée est correct et que le rôle d'exécution de l'opérateur dispose des autorisations Route 53. Vérifiez que le domaine appartient à la zone hébergée (par exemple, `api.example.com` nécessite une zone hébergée pour`example.com`). Si vous constatez un conflit de délégation NS, utilisez plutôt l'ID de zone hébergée de la zone déléguée. Si vous constatez un conflit d'enregistrement, un autre point de terminaison ou un processus externe possède l'enregistrement A dans ce domaine.
+ **L'enregistrement DNS indique En attente pendant une période prolongée.** Vérifiez que les enregistrements NS de la zone hébergée sont correctement délégués par le bureau d'enregistrement de domaines parent. L'opérateur utilise le résolveur DNS du pod (généralement CoreDNS), qui peut mettre en cache les résultats. Après 10 minutes sans résolution, le statut passe à`Error`.
+ **Avertissements relatifs à l'expiration des certificats.** Renouvelez ou remplacez le certificat dans ACM. Pour les ACM-issued certificats, ACM gère automatiquement le renouvellement. Pour les certificats importés, importez un nouveau certificat. L'opérateur détecte automatiquement le renouvellement et télécharge à nouveau le certificat public sur Amazon S3.