Dengan melakukan pra-pemanasan image, Anda dapat secara eksplisit memicu download image container ke dalam cache Streaming Image sebelum klien runtime memintanya. Hal ini secara efektif menghilangkan latensi "cold start" yang terkait dengan tarikan pertama versi image baru untuk workload yang menggunakan streaming image.
Ringkasan
Saat Anda mengirim image ke Artifact Registry, image tersebut akan disimpan dalam sistem penyimpanan yang mendasarinya. Untuk akses latensi rendah, Artifact Registry juga menggunakan cache Streaming Image , yang biasanya diisi pada tarikan pertama dari klien yang mengaktifkan streaming image. Untuk workload yang sensitif terhadap latensi, seperti meningkatkan skala cluster Google Kubernetes Engine, menunggu cache ini diisi dapat menyebabkan penundaan. Pra-pemanasan membantu memasukkan image ke dalam cache streaming Image terlebih dahulu.
Prewarm Artifact API memungkinkan Anda meminta secara manual agar versi atau tag image tertentu di-cache sebelumnya. Anda juga menentukan periode retensi untuk memastikan image tetap berada dalam cache selama durasi yang ditentukan.
Batasan
- Khusus API: pra-pemanasan hanya tersedia menggunakan Artifact Registry REST API. Pra-pemanasan tidak tersedia menggunakan gcloud CLI atau Google Cloud konsol.
- Khusus GKE: Pra-pemanasan hanya efektif untuk cluster GKE dengan Streaming Image yang diaktifkan. Streaming image memerlukan software tertentu yang berjalan di node klien.
- Artefak tunggal: Anda hanya dapat melakukan pra-pemanasan satu artefak (versi atau tag) per permintaan API.
- Image multi-arsitektur: Tidak didukung. Gunakan versi tertentu untuk image arsitektur.
- Batas project: Ada batas keseluruhan sebesar 100 GB per project konsumen untuk image yang telah dipanaskan sebelumnya. Saat batas tercapai, image lama akan dikeluarkan untuk memberi ruang bagi image baru.
Sebelum memulai
- Aktifkan Artifact Registry API. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan Artifact Registry.
- Instal gcloud CLI untuk mendapatkan token autentikasi untuk permintaan REST API.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengelola image yang telah dipanaskan sebelumnya, minta administrator Anda untuk memberikan peran IAM berikut di repositori:
-
Melakukan pra-pemanasan atau menghapus artefak dari cache (
artifactregistry.repositories.prewarmArtifact,artifactregistry.repositories.removePrewarmedArtifact): Penulis Artifact Registry (roles/artifactregistry.writer) -
Memeriksa atau mencantumkan artefak yang telah dipanaskan sebelumnya (
artifactregistry.repositories.checkPrewarmedArtifact,artifactregistry.repositories.listPrewarmedArtifacts): Pembaca Artifact Registry (roles/artifactregistry.reader)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Model izin ini memastikan bahwa hanya pengguna dengan akses tulis yang dapat mengelola status cache, sehingga mencegah pengguna yang tidak sah mengisi cache secara berlebihan. Sementara itu, pengguna dengan akses baca dapat memverifikasi artefak mana yang tersedia untuk streaming.
Melakukan pra-pemanasan image
Untuk melakukan pra-pemanasan image, Anda membuat permintaan POST ke metode :prewarmArtifact repositori Anda.
REST API
Referensi: projects.locations.repositories.prewarmArtifact
Isi permintaan memiliki struktur berikut:
{
"version": "projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY/packages/PACKAGE/versions/VERSION",
"retention_days": 3
}
Atau, gunakan tag:
{
"tag": "projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY/packages/PACKAGE/tags/TAG",
"retention_days": 3,
"force": true
}
| Kolom | Deskripsi |
|---|---|
tag |
Opsional. Tag artefak tertentu yang akan dipanaskan sebelumnya. Anda harus menentukan version atau tag. |
version |
Opsional. Versi artefak tertentu yang akan dipanaskan sebelumnya. Anda harus menentukan version atau tag. |
retention_days |
Opsional. Jumlah hari untuk menyimpan artefak dalam cache. Jika Anda tidak menentukan kolom ini, nilai defaultnya adalah 3 hari. |
force |
Opsional. Jika true, sistem mungkin akan mengeluarkan artefak lama untuk memberi ruang bagi artefak ini. |
stream_location |
Opsional. Region tertentu tempat image akan dipanaskan sebelumnya. Secara default, nilai ini cocok dengan lokasi image. Perhatikan bahwa konfigurasi multi-region tidak didukung. Jika region luas ditentukan, nilai defaultnya adalah us-central1 (AS), europe-north1 (UE), dan asia-east1 (Asia). |
Contoh: Melakukan pra-pemanasan versi tertentu
Contoh berikut melakukan pra-pemanasan versi sha256:52e... dari paket nginx di repositori my-repo di region "us-east1".
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"version": "projects/my-project/locations/us-central1/repositories/my-repo/packages/nginx/versions/sha256:52e85304675567b5e656f5e997576a9d20c57176",
"retention_days": 7,
"stream_location": "us-east1",
}' \
"https://artifactregistry.googleapis.com/v1/projects/my-project/locations/us-central1/repositories/my-repo:prewarmArtifact"
Contoh: Melakukan pra-pemanasan tag
Contoh berikut melakukan pra-pemanasan image yang diberi tag production dari paket my-app.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"tag": "projects/my-project/locations/us-central1/repositories/my-repo/packages/my-app/tags/production",
"force": true
}' \
"https://artifactregistry.googleapis.com/v1/projects/my-project/locations/us-central1/repositories/my-repo:prewarmArtifact"
Memeriksa status pra-pemanasan
Untuk memeriksa apakah artefak telah dipanaskan sebelumnya, gunakan metode :checkPrewarmedArtifact.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"version": "projects/my-project/locations/us-central1/repositories/my-repo/packages/nginx/versions/sha256:52e85304675567b5e656f5e997576a9d20c57176"
}' \
"https://artifactregistry.googleapis.com/v1/projects/my-project/locations/us-central1/repositories/my-repo:checkPrewarmedArtifact"
Mencantumkan artefak yang telah dipanaskan sebelumnya
Untuk mencantumkan semua artefak yang telah dipanaskan sebelumnya di repositori, gunakan metode GET pada koleksi prewarmedArtifacts.
Contoh berikut mencantumkan semua image yang telah dipanaskan sebelumnya di my-repo di us-east1. Filter stream_location diperlukan.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://artifactregistry.googleapis.com/v1/projects/my-project/locations/us-central1/repositories/my-repo/prewarmedArtifacts?filter=stream_location=us-east1"/
Menghapus dari cache
Untuk menghapus artefak secara eksplisit dari cache pra-pemanasan, gunakan metode :removePrewarmedArtifact. Gunakan metode ini untuk mengosongkan ruang atau saat versi image tertentu tidak lagi diperlukan dalam cache.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"version": "projects/my-project/locations/us-central1/repositories/my-repo/packages/nginx/versions/sha256:52e85304675567b5e656f5e997576a9d20c57176"
}' \
"https://artifactregistry.googleapis.com/v1/projects/my-project/locations/us-central1/repositories/my-repo:removePrewarmedArtifact"
Langkah berikutnya
- Mengirim dan menarik image container
- Mengelola image container
- Pelajari Streaming Image lebih lanjut di Google Kubernetes Engine