View a markdown version of this page

HyperPod 推論的自訂憑證和 Route 53 DNS 管理 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

HyperPod 推論的自訂憑證和 Route 53 DNS 管理

下列步驟說明如何將自己的 ACM 憑證用於 HyperPod 推論端點,並選擇性地設定運算子來管理自訂網域的 Route 53 DNS 記錄。

使用自訂憑證,您可以提供 ACM 憑證 ARN,而運算子會將憑證連接到 Application Load Balancer (ALB)、監控其運作狀態,並支援自動續約偵測。運算子支援公開信任的 ACM 憑證、 AWS 私有 CA 憑證,以及從外部 CAs憑證。

自訂憑證可以單獨使用,也可以與 Route 53 DNS 管理結合使用。Route 53 DNS 管理需要自訂憑證,並使用憑證組態中的網域名稱來建立和管理 DNS 記錄。

先決條件

開始之前,請確認您已:

  • 在 Amazon SageMaker HyperPod 叢集上設定推論功能。如需詳細資訊,請參閱設定 HyperPod 叢集以進行模型部署

  • 已在終端機中安裝 kubectl

  • 在 AWS 與 HyperPod 叢集位於相同區域的 ACM 中佈建或匯入 TLS 憑證。憑證必須處於已發行狀態,且必須包含憑證鏈 (中繼和根 CA)。匯入 ACM 的自我簽署憑證不支援做為自訂憑證,因為它們缺少憑證鏈。

  • (針對 Route 53 DNS 管理) 為您的網域建立 Route 53 託管區域。建議使用公有託管區域。私有託管區域可用於建立記錄,但運算子會使用 Pod 的 DNS 解析程式來驗證 DNS 解析,這取決於 VPC DNS 解析程式。對於私有託管區域,VPC 必須啟用 DNS 解析和 DNS 主機名稱,且私有託管區域必須與叢集的 VPC 相關聯。

設定 IAM 許可

推論運算子的執行角色需要自訂憑證和 Route 53 DNS 管理的額外許可。將下列政策新增至 HyperPod 推論執行角色。

自訂憑證的 ACM 和 Amazon S3 許可

{ "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" } } } ] }
注意

如果您的 Amazon S3 儲存貯體名稱以 開頭hyperpod-tls,Amazon S3 許可已包含在 AmazonSageMakerHyperPodInferenceAccess受管政策中,您只需要新增 ACM 陳述式。

DNS 管理的 Route 53 許可

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

<region><tls-certificate-bucket><account-id>和 取代<hosted-zone-id>為您的實際值。您可以將 ACM 資源 ARN 範圍限定為特定憑證,以提高安全性。

設定自訂憑證

若要使用自訂憑證,請在 InferenceEndpointConfigJumpStartModel規格tlsConfig中將 customCertificateConfig區段新增至您的 。tlsConfigdnsConfig 欄位在兩個 CRDs中都相同。

下列欄位可在 customCertificateConfig和 中使用tlsConfig

tlsConfig.customCertificateConfig.acmArn (必要,字串)

ACM 憑證的 ARN。必須處於已發行狀態。

tlsConfig.customCertificateConfig.domainName (必要,字串)

從憑證使用的網域名稱。

  • 必須是特定網域,而非萬用字元。對於萬用字元憑證 (例如,*.example.com),指定特定的子網域 (例如,api.example.com)。

  • 必須為小寫。

  • 必須符合憑證中列出的其中一個網域名稱。

tlsConfig.tlsCertificateOutputS3Uri (條件式、字串)

運算子上傳公有憑證的 Amazon S3 URI。除非運算子已安裝已設定TLS_CERTIFICATE_OUTPUT_S3URI環境變數,否則為必要項目。如果您不確定是否已設定,請明確指定它。

以下是使用自訂憑證建立端點的範例 YAML 檔案。

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"

您可以將 customCertificateConfig新增至已在執行的部署。運算子會在下次對帳時偵測變更、驗證憑證、將其連接至 ALB,以及將公有憑證上傳至 Amazon S3。不需要停機或重新部署。

重要

如果您從執行中的部署中移除 customCertificateConfig區段,則運算子會回復為產生新的自我簽署憑證。這會取代 ALB 上的 CA 簽署憑證。

設定 Route 53 DNS 管理

Route 53 DNS 管理需要設定自訂憑證,並使用來自 的網域名稱tlsConfig.customCertificateConfig.domainName。如果您尚未設定自訂憑證,設定自訂憑證請先參閱 。

若要啟用 Route 53 DNS 管理,請將 dnsConfig區段新增至您的規格:

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

dnsConfig 區段可以與 同時新增customCertificateConfig,或稍後新增至現有的部署。運算子會在下一次調校時建立 DNS 記錄,而不會重新啟動您的 Pod。

當您使用 部署 時dnsConfig,運算子會:

  1. 驗證託管區域是否存在,且您的網域屬於託管區域 (例如, api.example.com需要 的託管區域example.com)。

  2. 檢查目標網域上現有的 A 記錄,以防止意外覆寫。

  3. 建立將網域指向 ALB 的 A 記錄 (別名),以及具有所有權標記 (hyperpod-inference/owner=<namespace>/<name>) 的 TXT 記錄,以防止端點之間發生衝突。請勿手動修改或刪除 TXT 記錄。

  4. 每 30 秒輪詢 DNS 解析,直到網域解析,然後將狀態標記為 Active。如果記錄未在 10 分鐘內解析,狀態會轉換為 Error

注意

Route 53 DNS 管理為非封鎖。DNS 記錄建立或傳播中的錯誤不會阻止您的推論端點達到 Ready 狀態。端點仍可透過 ALB 的預設主機名稱存取。檢查資源狀態中的 dnsStatus區段是否有 DNS 特定錯誤。

使用不含 Route 53 DNS 管理的自訂憑證

Route 53 DNS 管理是選用的。如果您想要管理自己的 DNS 記錄,請省略 dnsConfig區段,並手動設定您的網域。

若要尋找部署的 ALB 主機名稱,輸入名稱取決於是否啟用智慧型路由。

沒有智慧型路由:傳入會在您的命名空間alb-<deployment-name>中命名。

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

使用智慧型路由:傳入在hyperpod-inference-system命名空間alb-<deployment-name>-<namespace>中命名。

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

在將網域指向此 ALB 主機名稱的 DNS 供應商中建立 DNS 記錄:

  • Route 53 — 建立啟用別名A 記錄,指向 ALB。

  • 其他 DNS 供應商 — 建立將網域指向 ALB DNS 名稱的 CNAME 記錄。CNAME 記錄無法用於根網域 (例如 example.com);請使用類似 的子網域api.example.com

注意

如果重新建立 ALB (例如,刪除並重新部署端點之後),ALB 主機名稱會變更。您必須手動更新您的 DNS 記錄。Route 53 DNS 管理會自動處理此問題。

驗證部署的狀態

檢查自訂憑證狀態

kubectl describe InferenceEndpointConfig my-model -n my-namespace

尋找 狀態的 tlsCertificate區段:

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

憑證運作狀態值:

  • 有效 — 憑證過期後超過 60 天。

  • 過期 — 憑證會在 60 天內過期。發出 Kubernetes 警告事件 (CertificateExpiring)。

  • 已過期 — 憑證已過期。發出 Kubernetes 警告事件 (CertificateExpired)。

運算子會每 24 小時檢查一次憑證過期。當它偵測到憑證已在 ACM 中續約 (NotAfter日期變更) 時,會自動將公有憑證重新上傳至 Amazon S3 並發出CertificateRenewed事件。

檢查 DNS 狀態

尋找 dnsStatus區段:

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

DNS 運作狀態值:

  • 作用中 — DNS 記錄已成功解析。您的自訂網域已準備好可供使用。

  • 待定 — DNS 記錄已在 Route 53 中建立,但尚未傳播。運算子每 30 秒重新檢查一次。

  • 錯誤 — DNS 記錄建立或傳播失敗。如需詳細資訊,請檢查 Message 欄位。

測試部署的端點

如果您已設定 Route 53 DNS 管理,請在 DNS 狀態顯示 後,使用自訂網域叫用您的端點Active。如果您只設定沒有 DNS 管理的自訂憑證,請使用來自傳入的 ALB 主機名稱 (請參閱 使用不含 Route 53 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"}]}'
注意

若要透過 SageMaker AI 端點叫用,endpointName請在 InferenceEndpointConfigJumpStartModel 規格sageMakerEndpoint.name中設定 。如果endpointName未設定 ,則不會建立 SageMaker AI 端點,而且只有直接 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

管理您的自訂憑證和 DNS 記錄

變更網域或託管區域

您可以在執行中的部署上更新 domainName(在 customCertificateConfig中) 或 hostedZoneId(在 中dnsConfig)。變更網域名稱會同時觸發憑證重新驗證和 DNS 切換 — 新的網域在 ACM 憑證中必須是有效的 (做為 SAN 或萬用字元比對)。

運算子會執行安全切換:

  1. 在新區域或新網域建立新的 DNS 記錄。

  2. 驗證新記錄解析。

  3. 只有在確認新記錄處於作用中狀態後,才會刪除舊 DNS 記錄。

在轉換期間,新舊網域都會解析為 ALB。TXT 擁有權記錄的 TTL 為 300 秒 (5 分鐘),因此 DNS 用戶端可能會在清除後快取舊記錄最多 5 分鐘。

清除

當您刪除InferenceEndpointConfig或移除 dnsConfig區段時,運算子會自動刪除其建立的 Route 53 A 和 TXT 記錄。運算子只會刪除其擁有的記錄 (由擁有權 TXT 記錄驗證)。

疑難排解

如果您的自訂憑證或 DNS 組態未如預期般運作,請使用這些偵錯步驟。

  • 部署失敗,並出現 Amazon S3 存取錯誤。驗證在 中指定的 Amazon S3 儲存貯體tlsCertificateOutputS3Uri是否存在,且位於相同的區域。驗證運算子的執行角色對儲存貯體具有 s3:PutObjects3:PutObjectTagging許可。運算子會在初始部署期間上傳零位元組測試物件,以驗證 Amazon S3 寫入存取。

  • 憑證驗證失敗。確認 ACM 憑證處於 ISSUED 狀態:aws acm describe-certificate --certificate-arn <arn> --region <region>。驗證 domainName符合憑證中的網域或 SAN。對於萬用字元憑證 (*.example.com),請使用特定子網域,例如 api.example.com

  • DNS 記錄建立失敗。確認託管區域 ID 正確,且操作員的執行角色具有 Route 53 許可。驗證網域是否屬於託管區域 (例如, api.example.com 需要託管區域example.com)。如果您看到 NS 委派衝突,請改用委派區域的託管區域 ID。如果您看到記錄衝突,另一個端點或外部程序會擁有該網域的 A 記錄。

  • DNS 記錄顯示等待較長時間。驗證託管區域的 NS 記錄是否已從父網域註冊商正確委派。運算子使用 Pod 的 DNS 解析程式 (通常是 CoreDNS),這可能會快取結果。在 10 分鐘後沒有解析度,狀態會轉換為 Error

  • 憑證過期警告。在 ACM 中續約或取代憑證。對於 ACM 發行的憑證,ACM 會自動處理續約。對於匯入的憑證,匯入新的憑證。運算子會自動偵測續約,並將公有憑證重新上傳至 Amazon S3。