

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 configurer éventuellement 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'associe à l'Application Load Balancer (ALB), surveille son état 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 Route 53. La gestion DNS de 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 des 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).
+ Vous avez installé [ kubectl ](https://kubernetes.io/docs/reference/kubectl/) dans votre terminal.
+ Vous avez provisionné 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 racine). Self-signed les certificats importés vers ACM ne sont pas pris en charge en tant que certificats personnalisés car ils ne comportent pas de chaîne de certificats.
+ (Pour la gestion DNS de Route 53) Création d'une zone hébergée Route 53 pour votre domaine. Les zones publiques hébergées 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 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 la déclaration 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 renforcer la sécurité.

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

Pour utiliser un certificat personnalisé, ajoutez la `customCertificateConfig` section `tlsConfig` à votre `JumpStartModel` spécification `InferenceEndpointConfig` ou. 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 joker. 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 la modification lors de la prochaine réconciliation, valide le certificat, le joint à l'ALB et télécharge le certificat public sur Amazon S3. Aucune interruption ni aucun redéploiement ne sont nécessaires.

**Important**  
Si vous supprimez la `customCertificateConfig` section d'un déploiement en cours, l'opérateur recommence à 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 DNS de 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 à votre spécification :

```
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 effectuez un déploiement 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 la présence d'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. Sonde 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 DNS de Route 53 n'est pas bloquante. Les erreurs de création ou de propagation des enregistrements DNS n'empêchent pas votre point de terminaison d'inférence d'atteindre `Ready` cet état. Le terminal reste accessible via le nom d'hôte par défaut de l'ALB. Consultez la `dnsStatus` section relative à l'état de la ressource pour détecter d' DNS-specific éventuelles erreurs.

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

La gestion DNS de 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 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 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 comme. `api.example.com`

**Note**  
Si l'ALB est recréé (par exemple, après avoir supprimé et redéployé le terminal), le nom d'hôte 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 l'état 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 de santé du certificat :
+ **Valide ** — Le certificat date de plus de 60 jours à compter de son expiration.
+ **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 a été 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 n'ont pas encore été propagés. L'opérateur effectue une nouvelle vérification toutes les 30 secondes.
+ **Erreur ** — La création ou la propagation de l'enregistrement DNS a échoué. Consultez le `Message` champ pour plus de détails.

### Testez le terminal 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 DNS s'affiche`Active`. Si vous avez configuré uniquement 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 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 invoquer via le point de terminaison SageMaker AI, `endpointName` définissez-le dans vos spécifications `InferenceEndpointConfig` ou `sageMakerEndpoint.name` dans vos `JumpStartModel` spécifications. S'il n'`endpointName`est pas défini, aucun point de terminaison SageMaker AI n'est créé et seule l'invocation directe 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>

**Modifier le domaine ou la zone hébergée **

Vous pouvez mettre à jour le `domainName` (in`customCertificateConfig`) ou `hostedZoneId` (in`dnsConfig`) sur un déploiement en cours d'exécution. La modification du nom de domaine déclenche à la fois la revalidation du certificat et le basculement du DNS : le nouveau domaine doit être valide dans votre certificat ACM (sous forme de SAN ou de correspondance générique).

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 la résolution des nouveaux enregistrements.

1. Supprime les anciens enregistrements DNS uniquement lorsque les nouveaux enregistrements sont confirmés actifs.

Pendant la transition, les anciens et les nouveaux domaines sont transférés à l'ALB. L'enregistrement de propriété TXT a un TTL de 300 secondes (5 minutes). Les clients DNS peuvent donc mettre en cache l'ancien enregistrement pendant 5 minutes au maximum après le nettoyage.

**Nettoyage**

Lorsque vous supprimez la section `InferenceEndpointConfig` ou que vous 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>

Suivez 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é `tlsCertificateOutputS3Uri` existe et qu'il se trouve dans la même région. Vérifiez le rôle d'exécution de l'opérateur `s3:PutObject` et ses `s3:PutObjectTagging` autorisations 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 suivant :`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, c'est qu'un autre point de terminaison ou un processus externe est propriétaire 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 du domaine parent. L'opérateur utilise le résolveur DNS du pod (généralement CoreDNS), qui peut mettre les résultats en cache. 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 le renouvellement automatiquement. Pour les certificats importés, importez un nouveau certificat. L'opérateur détecte automatiquement le renouvellement et télécharge de nouveau le certificat public sur Amazon S3.