

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 tuoi certificati ACM per gli endpoint di HyperPod inferenza e, facoltativamente, configurare l'operatore per gestire i record DNS di Route 53 per il tuo 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 della 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 le funzionalità di inferenza sui tuoi cluster Amazon. SageMaker HyperPod Per ulteriori informazioni, consulta [Configurazione dei HyperPod cluster per la distribuzione dei modelli](sagemaker-hyperpod-model-deployment-setup.md).
+ Hai installato [https://kubernetes.io/docs/reference/kubectl/](https://kubernetes.io/docs/reference/kubectl/) 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 ** Emesso e deve includere una catena di certificati (CA intermedia e radice). 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 su Route 53 per il tuo dominio. Le zone ospitate pubbliche sono consigliate. Le zone ospitate private 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 dell' HyperPod inferenza.

### 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 tuo 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` alla tua `JumpStartModel` specifica `InferenceEndpointConfig` or. I `dnsConfig` campi `tlsConfig` e sono identici in entrambi i CRD.

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

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

`tlsConfig.customCertificateConfig.domainName`(Obbligatorio, stringa)  
Il nome di dominio da utilizzare nel certificato.  
+ Deve essere un dominio specifico, non una wildcard. Per i certificati wildcard (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 file YAML di esempio 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 rimuovi 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.

## Configura 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 riconciliazione successiva senza riavviare i pod.

Quando si esegue l'implementazione con, l'operatore: `dnsConfig`

1. Verifica che la zona ospitata esista e che il dominio appartenga 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 punta 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. Esegue il polling della 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. Controlla la `dnsStatus` sezione nello stato della risorsa per eventuali 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 è opzionale. 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 distribuzione, il nome di ingresso dipende dall'attivazione o meno del routing intelligente.

**Senza routing intelligente: l'ingresso è denominato ** nel tuo namespace. `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 nome host ALB:
+ **Route 53**: crea ** un record A ** con ** Alias ** abilitato, che punta all'ALB.
+ **Altri provider DNS**: crea un record ** CNAME che ** punti il tuo 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 per più di 60 giorni.
+ **In 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), carica 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 integrità 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**: creazione o 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 il tuo endpoint utilizzando il tuo dominio personalizzato dopo la visualizzazione dello stato del DNS. `Active` Se hai configurato solo un certificato personalizzato senza gestione DNS, utilizza il nome host ALB dall'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 richiamarlo tramite l'endpoint SageMaker AI, impostalo nelle tue 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 diretta ALB.

```
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 vecchi che i nuovi domini vengono trasferiti nell'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 da esso creati. 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 di 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 nel certificato `domainName` corrisponda a un dominio o a una SAN. Per i certificati wildcard (`*.example.com`), utilizza 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 riscontri un conflitto di delega NS, utilizza invece l'ID della zona ospitata della zona delegata. Se si verifica un conflitto tra record, un altro endpoint o processo esterno è proprietario del record A in quel dominio.
+ **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 di domini principale. L'operatore utilizza il resolver DNS del pod (in genere CoreDNS), che può memorizzare i risultati nella cache. Dopo 10 minuti senza risoluzione, lo stato passa a. `Error`
+ **Avvisi 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 carica nuovamente il certificato pubblico su Amazon S3.