

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Certificati personalizzati e gestione DNS Route 53 per Inference HyperPod
<a name="sagemaker-hyperpod-model-deployment-custom-certs"></a>

I passaggi seguenti mostrano come utilizzare i propri certificati ACM per gli endpoint di HyperPod inferenza e, facoltativamente, configurare l'operatore per gestire i record DNS Route 53 per il dominio personalizzato.

Con i certificati personalizzati, fornisci un certificato ACM ARN e l'operatore lo collega all'Application Load Balancer (ALB), ne monitora lo stato e supporta il rilevamento automatico dei rinnovi. L'operatore supporta certificati ACM affidabili pubblicamente, certificati CA AWS privati e certificati importati da CA esterne.

I certificati personalizzati possono essere utilizzati da soli o combinati con la gestione DNS di Route 53. La gestione DNS di Route 53 richiede un certificato personalizzato e utilizza il nome di dominio dalla configurazione del certificato per creare e gestire i record DNS.

## Prerequisiti
<a name="sagemaker-hyperpod-model-deployment-custom-certs-prereqs"></a>

Prima di iniziare, verifica di aver:
+ Configura funzionalità di inferenza sui tuoi SageMaker HyperPod cluster Amazon. Per ulteriori informazioni, consulta [Configurazione dei HyperPod cluster per l'implementazione dei modelli](sagemaker-hyperpod-model-deployment-setup.md).
+ Hai installato [kubectl](https://kubernetes.io/docs/reference/kubectl/) nel tuo terminale.
+ Hai fornito o importato un certificato TLS in ACM nella stessa regione del cluster. AWS HyperPod Il certificato deve essere nello stato di **emissione** e deve includere una catena di certificati (CA intermedia e root). Self-signed i certificati importati in ACM non sono supportati come certificati personalizzati perché mancano di una catena di certificati.
+ (Per la gestione DNS di Route 53) Hai creato una zona ospitata Route 53 per il tuo dominio. Le zone ospitate pubbliche sono consigliate. Le zone private ospitate funzionano per la creazione di record, ma l'operatore verifica la risoluzione DNS utilizzando il resolver DNS del pod, che si basa sul resolver DNS VPC. Per le zone ospitate private, il VPC deve avere la risoluzione DNS e i nomi host DNS abilitati e la zona ospitata privata deve essere associata al VPC del cluster.

## Configurazione delle autorizzazioni IAM
<a name="sagemaker-hyperpod-model-deployment-custom-certs-iam"></a>

Il ruolo di esecuzione dell'operatore di inferenza richiede autorizzazioni aggiuntive per i certificati personalizzati e la gestione DNS di Route 53. Aggiungi le seguenti politiche al tuo ruolo di esecuzione di HyperPod Inference.

### Autorizzazioni ACM e Amazon S3 per certificati personalizzati
<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"
                }
            }
        }
    ]
}
```

**Nota**  
Se il nome del bucket Amazon S3 inizia con`hyperpod-tls`, le autorizzazioni Amazon S3 sono già incluse nella policy `AmazonSageMakerHyperPodInferenceAccess` gestita e devi solo aggiungere l'istruzione ACM.

### Autorizzazioni Route 53 per la gestione 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>"
        }
    ]
}
```

Sostituisci`<region>`, `<account-id>``<tls-certificate-bucket>`, e `<hosted-zone-id>` con i tuoi valori effettivi. È possibile assegnare l'ARN della risorsa ACM a certificati specifici per una maggiore sicurezza.

## Configura un certificato personalizzato
<a name="sagemaker-hyperpod-model-deployment-custom-certs-configure"></a>

Per utilizzare un certificato personalizzato, aggiungi la `customCertificateConfig` sezione `tlsConfig` alle `InferenceEndpointConfig` tue `JumpStartModel` specifiche. I `dnsConfig` campi `tlsConfig` e sono identici in entrambi i CRD.

I seguenti campi sono disponibili in `customCertificateConfig` e`tlsConfig`:

`tlsConfig.customCertificateConfig.acmArn`(Obbligatorio, stringa)  
L'ARN del tuo certificato ACM. Deve essere nello stato di **emissione**.

`tlsConfig.customCertificateConfig.domainName`(Obbligatorio, stringa)  
Il nome di dominio da utilizzare dal certificato.  
+ Deve essere un dominio specifico, non un jolly. Per i certificati jolly (ad esempio,`*.example.com`), specifica il sottodominio specifico (ad esempio,). `api.example.com`
+ Deve essere in lettere minuscole.
+ Deve corrispondere a uno dei nomi di dominio elencati nel certificato.

`tlsConfig.tlsCertificateOutputS3Uri`(Condizionale, stringa)  
URI Amazon S3 in cui l'operatore carica il certificato pubblico. Obbligatorio a meno che l'operatore non sia stato installato con la variabile di `TLS_CERTIFICATE_OUTPUT_S3URI` ambiente configurata. Se non sei sicuro che sia stata impostata, specificala esplicitamente.

Di seguito è riportato un esempio di file YAML per la creazione di un endpoint con un certificato personalizzato.

```
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"
```

È possibile aggiungerlo `customCertificateConfig` a una distribuzione già in esecuzione. L'operatore rileva la modifica alla riconciliazione successiva, convalida il certificato, lo allega all'ALB e carica il certificato pubblico su Amazon S3. Non sono richiesti tempi di inattività o ridistribuzione.

**Importante**  
Se si rimuove la `customCertificateConfig` sezione da una distribuzione in esecuzione, l'operatore torna a generare un nuovo certificato autofirmato. Questo sostituisce il CA-signed certificato sull'ALB.

## Configurare la gestione DNS di Route 53
<a name="sagemaker-hyperpod-model-deployment-custom-certs-dns"></a>

La gestione DNS di Route 53 richiede la configurazione di un certificato personalizzato e utilizza il nome di dominio di`tlsConfig.customCertificateConfig.domainName`. Se non hai configurato un certificato personalizzato, consulta [Configura un certificato personalizzato](#sagemaker-hyperpod-model-deployment-custom-certs-configure) prima.

Per abilitare la gestione DNS di Route 53, aggiungi la `dnsConfig` sezione alle tue specifiche:

```
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` sezione può essere aggiunta contemporaneamente o aggiunta successivamente a una distribuzione esistente. `customCertificateConfig` L'operatore crea i record DNS alla successiva riconciliazione senza riavviare i pod.

Quando si esegue la distribuzione con, l'operatore: `dnsConfig`

1. Verifica l'esistenza della zona ospitata e l'appartenenza del dominio alla zona ospitata (ad esempio, `api.example.com` richiede una zona ospitata per`example.com`).

1. Verifica la presenza di record A esistenti nel dominio di destinazione per evitare sovrascritture accidentali.

1. Crea **un record A** (alias) che indirizza il dominio all'ALB e un **record TXT** con un indicatore di proprietà (`hyperpod-inference/owner=<namespace>/<name>`) per evitare conflitti tra gli endpoint. Non modificate o eliminate il record TXT manualmente.

1. Esamina la risoluzione DNS ogni 30 secondi fino alla risoluzione del dominio, quindi contrassegna lo stato come. `Active` Se il record non si risolve entro 10 minuti, lo stato passa a. `Error`

**Nota**  
La gestione DNS di Route 53 non è bloccante. Gli errori nella creazione o nella propagazione dei record DNS non impediscono all'endpoint di inferenza di raggiungere lo stato. `Ready` L'endpoint rimane accessibile tramite il nome host predefinito dell'ALB. Controllate la `dnsStatus` sezione dello stato delle risorse per verificare la presenza di errori. DNS-specific 

## Usa un certificato personalizzato senza la gestione DNS di Route 53
<a name="sagemaker-hyperpod-model-deployment-custom-certs-no-dns"></a>

La gestione DNS di Route 53 è facoltativa. Se desideri gestire i tuoi record DNS, ometti la `dnsConfig` sezione e configura il dominio manualmente.

Per trovare il nome host ALB per la tua implementazione, il nome di ingresso dipende dal fatto che il routing intelligente sia abilitato.

**Senza routing intelligente: l'ingresso è denominato** nel tuo spazio dei nomi. `alb-<deployment-name>`

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

**Con routing intelligente: l'ingresso è denominato** nel namespace. `alb-<deployment-name>-<namespace>` `hyperpod-inference-system`

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

Crea un record DNS nel tuo provider DNS indirizzando il tuo dominio a questo hostname ALB:
+ **Route 53**: crea **un record A** con **alias** abilitato, che punta all'ALB.
+ **Altri provider DNS**: crea un **record CNAME che indirizzi il dominio al nome** DNS ALB. I record CNAME non possono essere utilizzati nel dominio principale (ad esempio,`example.com`); usa un sottodominio come. `api.example.com`

**Nota**  
Se l'ALB viene ricreato (ad esempio, dopo aver eliminato e ridistribuito l'endpoint), il nome host ALB cambia. È necessario aggiornare il record DNS manualmente. La gestione DNS di Route 53 lo gestisce automaticamente.

## Verifica dello stato dell’implementazione
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify"></a>

### Controlla lo stato del certificato personalizzato
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-cert"></a>

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

Cerca la `tlsCertificate` sezione nello stato:

```
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
```

Valori sanitari del certificato:
+ **Valido**: il certificato è scaduto dopo più di 60 giorni.
+ **Scadenza: il** certificato scade entro 60 giorni. Viene emesso un evento di avviso Kubernetes (). `CertificateExpiring`
+ Scaduto: il **certificato è scaduto.** Viene emesso un evento di avviso Kubernetes (). `CertificateExpired`

L'operatore controlla la scadenza del certificato ogni 24 ore. Quando rileva che un certificato è stato rinnovato in ACM (la `NotAfter` data cambia), ricarica automaticamente il certificato pubblico su Amazon S3 ed emette un evento. `CertificateRenewed`

### Controlla lo stato del DNS
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-dns"></a>

Cerca la `dnsStatus` sezione:

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

Valori di salute del DNS:
+ **Attivo**: il record DNS viene risolto correttamente. Il tuo dominio personalizzato è pronto per l'uso.
+ **In sospeso**: i record DNS sono stati creati in Route 53 ma non sono ancora stati propagati. L'operatore ricontrolla ogni 30 secondi.
+ **Errore**: la creazione o la propagazione del record DNS non è riuscita. Controlla il `Message` campo per i dettagli.

### Testa l'endpoint distribuito
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-test"></a>

Se hai configurato la gestione DNS di Route 53, richiama l'endpoint utilizzando il dominio personalizzato dopo la visualizzazione dello stato DNS. `Active` Se hai configurato solo un certificato personalizzato senza gestione DNS, usa il nome host ALB presente nell'ingresso (vedi). [Usa un certificato personalizzato senza la gestione DNS di 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"}]}'
```

**Nota**  
Per richiamare tramite l'endpoint SageMaker AI, impostalo nel tuo o `endpointName` nelle tue specifiche. `InferenceEndpointConfig` `sageMakerEndpoint.name` `JumpStartModel` Se non `endpointName` è impostato, non viene creato alcun endpoint SageMaker AI ed è disponibile solo la chiamata ALB diretta.

```
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
```

## Gestisci i tuoi certificati e record DNS personalizzati
<a name="sagemaker-hyperpod-model-deployment-custom-certs-manage"></a>

**Modifica del dominio o della zona ospitata**

È possibile aggiornare `domainName` (in`customCertificateConfig`) o `hostedZoneId` (in`dnsConfig`) su una distribuzione in esecuzione. La modifica del nome di dominio attiva sia la riconvalida del certificato che il cutover DNS: il nuovo dominio deve essere valido nel certificato ACM (come SAN o wildcard match).

L'operatore esegue un cutover sicuro:

1. Crea nuovi record DNS nella nuova zona o per il nuovo dominio.

1. Verifica la risoluzione dei nuovi record.

1. Elimina i vecchi record DNS solo dopo che i nuovi record sono stati confermati attivi.

Durante la transizione, sia i domini vecchi che quelli nuovi vengono trasferiti all'ALB. Il record di proprietà TXT ha un TTL di 300 secondi (5 minuti), quindi i client DNS possono memorizzare nella cache il vecchio record per un massimo di 5 minuti dopo la pulizia.

**Pulizia**

Quando si elimina `InferenceEndpointConfig` o si rimuove la `dnsConfig` sezione, l'operatore elimina automaticamente i record Route 53 A e TXT che ha creato. L'operatore elimina solo i record di sua proprietà (verificati dal record TXT di proprietà).

## Risoluzione dei problemi
<a name="sagemaker-hyperpod-model-deployment-custom-certs-troubleshooting"></a>

Utilizza questi passaggi di debug se il certificato personalizzato o la configurazione DNS non funzionano come previsto.
+ **La distribuzione non riesce a causa di un errore di accesso ad Amazon S3.** Verifica che il bucket Amazon S3 specificato in `tlsCertificateOutputS3Uri` esista e si trovi nella stessa regione. Verifica che il ruolo di esecuzione dell'operatore disponga delle autorizzazioni `s3:PutObject` e `s3:PutObjectTagging` delle autorizzazioni sul bucket. L'operatore convalida l'accesso in scrittura ad Amazon S3 caricando un oggetto di test a zero byte durante la distribuzione iniziale.
+ **La convalida del certificato non riesce.** Verifica che il certificato ACM sia nello `ISSUED` stato:. `aws acm describe-certificate --certificate-arn <arn> --region <region>` Verifica che `domainName` corrisponda a un dominio o a un SAN nel certificato. Per i certificati wildcard (`*.example.com`), usa un sottodominio specifico come. `api.example.com`
+ **La creazione del record DNS non riesce.** Verifica che l'ID della zona ospitata sia corretto e che il ruolo di esecuzione dell'operatore disponga delle autorizzazioni Route 53. Verifica che il dominio appartenga alla zona ospitata (ad esempio, `api.example.com` richiede una zona ospitata per`example.com`). Se vedi un conflitto di delega NS, usa invece l'ID della zona ospitata della zona delegata. Se riscontri un conflitto di record, il record A di quel dominio è di proprietà di un altro endpoint o processo esterno.
+ **Il record DNS mostra In sospeso per un periodo di tempo prolungato.** Verifica che i record NS della zona ospitata siano delegati correttamente dal registrar del dominio principale. L'operatore utilizza il resolver DNS del pod (in genere CoredNS), che può memorizzare nella cache i risultati. Dopo 10 minuti senza risoluzione, lo stato passa a. `Error`
+ **Avvertenze sulla scadenza del certificato.** Rinnova o sostituisci il certificato in ACM. Per i ACM-issued certificati, ACM gestisce il rinnovo automaticamente. Per i certificati importati, importa un nuovo certificato. L'operatore rileva automaticamente il rinnovo e ricarica il certificato pubblico su Amazon S3.