View a markdown version of this page

Certificati personalizzati e gestione DNS Route 53 per Inference HyperPod - Amazon SageMaker AI

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

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

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.

  • Hai installato 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

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

{ "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 conhyperpod-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

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

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 etlsConfig:

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

La gestione DNS di Route 53 richiede la configurazione di un certificato personalizzato e utilizza il nome di dominio ditlsConfig.customCertificateConfig.domainName. Se non hai configurato un certificato personalizzato, consulta Configura un certificato personalizzato 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 perexample.com).

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

  3. 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.

  4. 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

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

Controlla lo stato del certificato personalizzato

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

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

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

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

Modifica del dominio o della zona ospitata

È possibile aggiornare domainName (incustomCertificateConfig) o hostedZoneId (indnsConfig) 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.

  2. Verifica la risoluzione dei nuovi record.

  3. 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

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 perexample.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.