

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Sertifikat kustom dan manajemen DNS Route 53 untuk Inferensi HyperPod
<a name="sagemaker-hyperpod-model-deployment-custom-certs"></a>

Langkah-langkah berikut menunjukkan cara menggunakan sertifikat ACM Anda sendiri untuk titik akhir HyperPod inferensi dan secara opsional mengonfigurasi operator untuk mengelola catatan DNS Route 53 untuk domain kustom Anda.

Dengan sertifikat khusus, Anda memberikan sertifikat ACM ARN dan operator melampirkannya ke Application Load Balancer (ALB), memantau kesehatannya, dan mendukung deteksi pembaruan otomatis. Operator mendukung sertifikat ACM tepercaya publik, sertifikat CA AWS Pribadi, dan sertifikat yang diimpor dari CA eksternal.

Sertifikat khusus dapat digunakan sendiri atau dikombinasikan dengan manajemen DNS Route 53. Manajemen DNS Route 53 memerlukan sertifikat khusus dan menggunakan nama domain dari konfigurasi sertifikat Anda untuk membuat dan mengelola catatan DNS.

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

Sebelum Anda mulai, verifikasi bahwa Anda telah:
+ Siapkan kemampuan inferensi di SageMaker HyperPod kluster Amazon Anda. Untuk informasi selengkapnya, lihat [Menyiapkan HyperPod cluster Anda untuk penerapan model](sagemaker-hyperpod-model-deployment-setup.md).
+ Menginstal [kubectl di terminal](https://kubernetes.io/docs/reference/kubectl/) Anda.
+ Menyediakan atau mengimpor sertifikat TLS di ACM di AWS Wilayah yang sama dengan cluster Anda. HyperPod Sertifikat harus dalam keadaan **Diterbitkan** dan harus menyertakan rantai sertifikat (CA perantara dan root). Self-signed sertifikat yang diimpor ke ACM tidak didukung sebagai sertifikat khusus karena tidak memiliki rantai sertifikat.
+ (Untuk manajemen DNS Route 53) Membuat zona yang dihosting Route 53 untuk domain Anda. Zona yang dihosting publik direkomendasikan. Zona yang dihosting pribadi berfungsi untuk pembuatan rekaman, tetapi operator memverifikasi resolusi DNS menggunakan resolver DNS pod, yang bergantung pada resolver DNS VPC. Untuk zona yang dihosting pribadi, VPC harus memiliki resolusi DNS dan nama host DNS diaktifkan, dan zona host pribadi harus dikaitkan dengan VPC cluster.

## Mengonfigurasi izin IAM
<a name="sagemaker-hyperpod-model-deployment-custom-certs-iam"></a>

Peran eksekusi operator inferensi memerlukan izin tambahan untuk sertifikat kustom dan manajemen DNS Route 53. Tambahkan kebijakan berikut ke peran eksekusi HyperPod Inferensi Anda.

### Izin ACM dan Amazon S3 untuk sertifikat khusus
<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"
                }
            }
        }
    ]
}
```

**catatan**  
Jika nama bucket Amazon S3 dimulai dengan`hyperpod-tls`, izin Amazon S3 sudah disertakan dalam `AmazonSageMakerHyperPodInferenceAccess` kebijakan terkelola dan Anda hanya perlu menambahkan pernyataan ACM.

### Izin Route 53 untuk manajemen 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>"
        }
    ]
}
```

Ganti`<region>`,`<account-id>`,`<tls-certificate-bucket>`, dan `<hosted-zone-id>` dengan nilai aktual Anda. Anda dapat memasukkan ARN sumber daya ACM ke sertifikat tertentu untuk keamanan yang lebih ketat.

## Konfigurasikan sertifikat khusus
<a name="sagemaker-hyperpod-model-deployment-custom-certs-configure"></a>

Untuk menggunakan sertifikat kustom, tambahkan `customCertificateConfig` bagian ke `tlsConfig` dalam `InferenceEndpointConfig` atau `JumpStartModel` spesifikasi Anda. `dnsConfig`Bidang `tlsConfig` dan identik di kedua CRD.

Bidang berikut tersedia di `customCertificateConfig` dan`tlsConfig`:

`tlsConfig.customCertificateConfig.acmArn`(Diperlukan, String)  
ARN sertifikat ACM Anda. Harus dalam keadaan **Dikeluarkan**.

`tlsConfig.customCertificateConfig.domainName`(Diperlukan, String)  
Nama domain yang akan digunakan dari sertifikat.  
+ Harus domain tertentu, bukan wildcard. Untuk sertifikat wildcard (misalnya,`*.example.com`), tentukan subdomain tertentu (misalnya,`api.example.com`).
+ Harus huruf kecil.
+ Harus cocok dengan salah satu nama domain yang tercantum dalam sertifikat.

`tlsConfig.tlsCertificateOutputS3Uri`(Bersyarat, String)  
Amazon S3 URI tempat operator mengunggah sertifikat publik. Diperlukan kecuali operator diinstal dengan variabel `TLS_CERTIFICATE_OUTPUT_S3URI` lingkungan yang dikonfigurasi. Jika Anda tidak yakin apakah ini disetel, tentukan secara eksplisit.

Berikut ini adalah contoh file YAMM untuk membuat endpoint dengan sertifikat kustom.

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

Anda dapat menambahkan `customCertificateConfig` ke penerapan yang sudah berjalan. Operator mendeteksi perubahan pada rekonsiliasi berikutnya, memvalidasi sertifikat, melampirkannya ke ALB, dan mengunggah sertifikat publik ke Amazon S3. Tidak diperlukan waktu henti atau pemindahan.

**penting**  
Jika Anda menghapus `customCertificateConfig` bagian dari penerapan yang sedang berjalan, operator akan kembali membuat sertifikat baru yang ditandatangani sendiri. Ini menggantikan CA-signed sertifikat Anda di ALB.

## Konfigurasikan manajemen DNS Route 53
<a name="sagemaker-hyperpod-model-deployment-custom-certs-dns"></a>

Manajemen DNS Route 53 memerlukan sertifikat khusus untuk dikonfigurasi dan menggunakan nama domain dari`tlsConfig.customCertificateConfig.domainName`. Jika Anda belum mengonfigurasi sertifikat khusus, lihat [Konfigurasikan sertifikat khusus](#sagemaker-hyperpod-model-deployment-custom-certs-configure) terlebih dahulu.

Untuk mengaktifkan manajemen DNS Route 53, tambahkan `dnsConfig` bagian ke spesifikasi Anda:

```
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`Bagian ini dapat ditambahkan pada saat yang sama dengan`customCertificateConfig`, atau ditambahkan nanti ke penerapan yang ada. Operator membuat catatan DNS pada rekonsiliasi berikutnya tanpa memulai ulang pod Anda.

Saat Anda menerapkan dengan`dnsConfig`, operator:

1. Memvalidasi zona host yang ada dan domain Anda milik zona yang dihosting (misalnya, `api.example.com` memerlukan zona yang dihosting untuk`example.com`).

1. Memeriksa catatan A yang ada di domain target untuk mencegah penimpaan yang tidak disengaja.

1. Membuat **catatan A** (alias) yang mengarahkan domain Anda ke ALB, dan **catatan TXT** dengan penanda kepemilikan (`hyperpod-inference/owner=<namespace>/<name>`) untuk mencegah konflik antar titik akhir. Jangan memodifikasi atau menghapus catatan TXT secara manual.

1. Polling resolusi DNS setiap 30 detik hingga domain diselesaikan, lalu tandai statusnya sebagai. `Active` Jika catatan tidak diselesaikan dalam waktu 10 menit, status akan beralih ke`Error`.

**catatan**  
Manajemen DNS Route 53 tidak memblokir. Kesalahan dalam pembuatan atau propagasi catatan DNS tidak mencegah titik akhir inferensi Anda mencapai status. `Ready` Titik akhir tetap dapat diakses melalui nama host default ALB. Periksa `dnsStatus` bagian dalam status sumber daya untuk DNS-specific kesalahan.

## Menggunakan sertifikat kustom tanpa manajemen DNS Route 53
<a name="sagemaker-hyperpod-model-deployment-custom-certs-no-dns"></a>

Manajemen DNS Route 53 bersifat opsional. Jika Anda ingin mengelola catatan DNS Anda sendiri, hilangkan `dnsConfig` bagian tersebut dan konfigurasikan domain Anda secara manual.

Untuk menemukan nama host ALB untuk penerapan Anda, nama ingress bergantung pada apakah perutean cerdas diaktifkan.

**Tanpa perutean cerdas:** Ingress diberi nama `alb-<deployment-name>` di namespace Anda.

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

**Dengan perutean cerdas:** Ingress dinamai `alb-<deployment-name>-<namespace>` di namespace. `hyperpod-inference-system`

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

Buat catatan DNS di penyedia DNS Anda yang mengarahkan domain Anda ke nama host ALB ini:
+ **Route 53** - Buat **catatan A** dengan **Alias** diaktifkan, menunjuk ke ALB.
+ **Penyedia DNS lainnya** — Buat **catatan CNAME yang mengarahkan domain Anda ke nama** DNS ALB. Catatan CNAME tidak dapat digunakan di domain root (misalnya,`example.com`); gunakan subdomain seperti. `api.example.com`

**catatan**  
Jika ALB dibuat ulang (misalnya, setelah menghapus dan memindahkan titik akhir), nama host ALB berubah. Anda harus memperbarui catatan DNS Anda secara manual. Route 53 Manajemen DNS menangani ini secara otomatis.

## Verifikasi status penerapan Anda
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify"></a>

### Periksa status sertifikat khusus
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-cert"></a>

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

Cari `tlsCertificate` bagian dalam status:

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

Nilai kesehatan sertifikat:
+ **Berlaku** - Sertifikat lebih dari 60 hari sejak kedaluwarsa.
+ **Kedaluwarsa** - Sertifikat kedaluwarsa dalam 60 hari. Peristiwa peringatan Kubernetes (`CertificateExpiring`) dipancarkan.
+ **Kedaluwarsa** — Sertifikat telah kedaluwarsa. Peristiwa peringatan Kubernetes (`CertificateExpired`) dipancarkan.

Operator memeriksa kedaluwarsa sertifikat setiap 24 jam. Ketika mendeteksi bahwa sertifikat telah diperbarui di ACM (`NotAfter`tanggal berubah), ia secara otomatis mengunggah kembali sertifikat publik ke Amazon S3 dan memancarkan acara. `CertificateRenewed`

### Periksa status DNS
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-dns"></a>

Cari `dnsStatus` bagian:

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

Nilai kesehatan DNS:
+ **Aktif** — Rekaman DNS berhasil diselesaikan. Domain kustom Anda siap digunakan.
+ **Tertunda** — Catatan DNS telah dibuat di Route 53 tetapi belum disebarkan. Operator memeriksa ulang setiap 30 detik.
+ **Kesalahan** — Pembuatan atau propagasi catatan DNS gagal. Periksa `Message` bidang untuk detailnya.

### Uji titik akhir yang digunakan
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-test"></a>

Jika Anda mengonfigurasi manajemen DNS Route 53, panggil titik akhir Anda menggunakan domain kustom setelah status DNS ditampilkan. `Active` Jika Anda hanya mengonfigurasi sertifikat khusus tanpa manajemen DNS, gunakan nama host ALB dari ingress (lihat). [Menggunakan sertifikat kustom tanpa manajemen 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"}]}'
```

**catatan**  
Untuk memanggil melalui titik akhir SageMaker AI, atur `endpointName` di spesifikasi Anda `InferenceEndpointConfig` atau `sageMakerEndpoint.name` di spesifikasi Anda`JumpStartModel`. Jika tidak `endpointName` disetel, tidak ada titik akhir SageMaker AI yang dibuat dan hanya pemanggilan ALB langsung yang tersedia.

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

## Mengelola sertifikat kustom dan catatan DNS
<a name="sagemaker-hyperpod-model-deployment-custom-certs-manage"></a>

**Mengubah domain atau zona yang dihosting**

Anda dapat memperbarui `domainName` (in`customCertificateConfig`) atau `hostedZoneId` (in`dnsConfig`) pada penerapan yang sedang berjalan. Mengubah nama domain memicu validasi ulang sertifikat dan pemotongan DNS — domain baru harus valid dalam sertifikat ACM Anda (sebagai pencocokan SAN atau wildcard).

Operator melakukan cutover yang aman:

1. Membuat catatan DNS baru di zona baru atau untuk domain baru.

1. Memverifikasi penyelesaian catatan baru.

1. Menghapus catatan DNS lama hanya setelah catatan baru dikonfirmasi aktif.

Selama transisi, domain lama dan baru menyelesaikan ke ALB. Catatan kepemilikan TXT memiliki TTL 300 detik (5 menit), sehingga klien DNS dapat menyimpan catatan lama hingga 5 menit setelah pembersihan.

**Pembersihan**

Saat Anda menghapus `InferenceEndpointConfig` atau menghapus `dnsConfig` bagian tersebut, operator secara otomatis menghapus catatan Route 53 A dan TXT yang dibuatnya. Operator hanya menghapus catatan yang dimilikinya (diverifikasi oleh catatan TXT kepemilikan).

## Pemecahan masalah
<a name="sagemaker-hyperpod-model-deployment-custom-certs-troubleshooting"></a>

Gunakan langkah-langkah debugging ini jika sertifikat kustom atau konfigurasi DNS Anda tidak berfungsi seperti yang diharapkan.
+ **Penerapan gagal dengan kesalahan akses Amazon S3.** Verifikasi bucket Amazon S3 yang ditentukan `tlsCertificateOutputS3Uri` ada dan berada di Wilayah yang sama. Verifikasi peran eksekusi operator `s3:PutObject` dan `s3:PutObjectTagging` izin pada bucket. Operator memvalidasi akses tulis Amazon S3 dengan mengunggah objek uji nol-byte selama penerapan awal.
+ **Validasi sertifikat gagal.** Verifikasi sertifikat ACM berada di `ISSUED` negara bagian:`aws acm describe-certificate --certificate-arn <arn> --region <region>`. Verifikasi `domainName` kecocokan domain atau SAN dalam sertifikat. Untuk sertifikat wildcard (`*.example.com`), gunakan subdomain tertentu seperti. `api.example.com`
+ **Pembuatan catatan DNS gagal.** Verifikasi ID zona yang dihosting sudah benar dan peran eksekusi operator memiliki izin Route 53. Verifikasi domain milik zona yang dihosting (misalnya, `api.example.com` memerlukan zona yang dihosting untuk`example.com`). Jika Anda melihat konflik delegasi NS, gunakan ID zona yang dihosting dari zona yang didelegasikan. Jika Anda melihat konflik rekaman, titik akhir atau proses eksternal lain memiliki catatan A di domain tersebut.
+ **Catatan DNS menunjukkan Tertunda untuk waktu yang lama.** Verifikasi catatan NS zona yang dihosting didelegasikan dengan benar dari registrar domain induk. Operator menggunakan resolver DNS pod (biasanya CoreDNS), yang dapat menyimpan hasil cache. Setelah 10 menit tanpa resolusi, status beralih ke`Error`.
+ **Peringatan kedaluwarsa sertifikat.** Perpanjang atau ganti sertifikat di ACM. Untuk ACM-issued sertifikat, ACM menangani perpanjangan secara otomatis. Untuk sertifikat yang diimpor, impor sertifikat baru. Operator mendeteksi pembaruan secara otomatis dan mengunggah ulang sertifikat publik ke Amazon S3.