1. Pengantar
Terakhir diperbarui: 01-05-2024
Jaringan Penayangan Konten (CDN) meningkatkan performa pengguna dengan menyimpan konten yang sering diakses ke dalam cache lebih dekat ke pengguna akhir, mengakhiri koneksi yang lebih dekat dengan klien, menggunakan kembali koneksi ke asal, serta melalui penerapan protokol dan penyesuaian jaringan modern.
Media CDN, jaringan edge global GCP untuk media streaming, menyediakan banyak "inti" atau bawaan Kemampuan inti dimaksudkan untuk mengatasi kasus penggunaan yang paling umum, tetapi Anda mungkin juga memiliki persyaratan yang tidak tercakup dalam set fitur inti ini.
Ekstensi Layanan untuk Media CDN, terkadang juga disebut sebagai Edge Programmability, memungkinkan Anda menjalankan kode Anda sendiri di edge untuk menyesuaikan perilaku Media CDN. Tindakan ini membuka kasus penggunaan tambahan, mulai dari normalisasi kunci cache, autentikasi token kustom dan pencabutan token, kolom log kustom tambahan, pengujian A/B, dan halaman error kustom.
Yang akan Anda bangun
Dalam codelab ini, kita akan mempelajari langkah-langkah untuk men-deploy lingkungan penayangan CDN berdukungan Edge Compute dengan Media CDN (CDN) + Ekstensi Layanan (Edge Programmability) + Cloud Storage (sumber CDN).
Yang akan Anda pelajari
- Cara menyiapkan Media CDN dengan Bucket Cloud Storage yang ditetapkan sebagai Origin
- Cara membuat plugin Ekstensi Layanan dengan autentikasi HTTP kustom dan mengaitkannya dengan Media CDN
- Cara memvalidasi bahwa plugin Ekstensi Layanan berfungsi seperti yang diharapkan
- (opsional) Cara mengelola plugin Ekstensi Layanan seperti mengupdate, mereferensikan, melakukan roll back, dan menghapus versi plugin tertentu
Yang Anda butuhkan
- Jaringan Dasar dan pengetahuan tentang HTTP
- Pengetahuan dasar mengenai command line Unix/Linux
2. Sebelum memulai
Permintaan untuk Daftar yang Diizinkan Media CDN & Daftar Ekstensi Layanan yang Diizinkan
Sebelum memulai, Anda harus memastikan project Anda telah ditambahkan ke daftar pratinjau pribadi yang diizinkan untuk Media CDN dan Ekstensi Layanan untuk Media CDN.
- Untuk meminta akses ke Media CDN dan Ekstensi Layanan untuk Media CDN, hubungi Tim Akun Google Anda guna membuat permintaan akses atas nama Anda untuk Media CDN dan Ekstensi Layanan
3. Penyiapan dan Persyaratan
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
Sebelum memulai
Peran IAM & Akses
Izin Identity and Access Management (IAM) yang diperlukan untuk membuat resource Media CDN dan Artifact Registry adalah sebagai berikut:
- roles/networkservices.edgeCacheAdmin
- roles/networkservices.edgeCacheUser
- roles/networkservices.edgeCacheViewer
- roles/artifactregistry.repoAdmin
Di dalam Cloud Shell, pastikan variabel lingkungan project_id, project_num, location, dan repository sudah disiapkan.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] PROJECT_NUM=[YOUR-PROJECT-NUMBER] LOCATION=us-central1 REPOSITORY=service-extension-$PROJECT_ID
Aktifkan API
Aktifkan Media CDN & API Ekstensi Layanan melalui perintah di bawah ini
gcloud services enable networkservices.googleapis.com gcloud services enable networkactions.googleapis.com gcloud services enable edgecache.googleapis.com gcloud services enable artifactregistry.googleapis.com
4. Membuat Bucket Cloud Storage
Konten Media CDN dapat berasal dari lokasi seperti bucket Cloud Storage, lokasi penyimpanan pihak ketiga, atau endpoint HTTP(HTTPS) yang dapat diakses publik.
Dalam codelab ini, kita akan menyimpan konten di bucket Cloud Storage.
Kita akan menggunakan perintah gsutil mb untuk membuat bucket
gsutil mb gs://mediacdn-bucket-$PROJECT_ID
Secara opsional, Anda dapat membuat bucket Cloud Storage menggunakan GUI sebagai berikut:
- Di konsol Google Cloud, buka halaman Cloud Storage.
- Klik tombol CREATE.
- Masukkan nama untuk bucket. - misalnya "mediacdn-bucket-$PROJECT_ID".
- Biarkan setelan lainnya sesuai default.
- Klik Tombol CREATE.
5. Mengupload objek pengujian ke Bucket Cloud Storage
Sekarang kita akan mengupload objek ke dalam bucket Cloud Storage.
- Membuat file di Cloud Shell lalu menguploadnya ke dalam bucket menggunakan gsutil
echo media-cdn-service-extensions-test > file.txt gsutil cp file.txt gs://mediacdn-bucket-$PROJECT_ID
- Memberi Media CDN akses ke bucket
gsutil iam ch \ serviceAccount:service-$PROJECT_NUM@gcp-sa-mediaedgefill.iam.gserviceaccount.com:objectViewer gs://mediacdn-bucket-$PROJECT_ID
6. Mengonfigurasi Media CDN
Selanjutnya, kita akan membuat konfigurasi Media CDN.
Setiap konfigurasi Media CDN terdiri dari dua resource utama:
- EdgeCacheService, bertanggung jawab atas konfigurasi yang ditujukan untuk klien (TLS, penentuan alamat IP), perutean, konfigurasi CDN (mode cache, TTL, penandatanganan), dan kebijakan keamanan.
- EdgeCacheOrigin, yang bertanggung jawab atas konfigurasi per origin untuk origin berbasis HTTP, serta kondisi percobaan ulang saat konten tidak tersedia atau tidak dapat dijangkau.
Mengonfigurasi Asal Cache Edge
Sekarang, mari kita buat origin yang mengarah ke bucket Cloud Storage yang baru saja Anda buat.
- Di konsol Google Cloud, buka halaman Media CDN.
- Klik tab ASAL.
- Klik BUAT ASAL.
- Masukkan 'cloud-storage-origin' sebagai nama untuk origin edge cache.
- Di bagian Alamat asal:
- pilih 'Select a Google Cloud Storage bucket'.
- BROWSE ke bucket Cloud Storage bernama ‘mediacdn-bucket-$PROJECT_ID'.
- klik PILIH.
- Biarkan setelan lainnya sesuai default.
- Klik BUAT ASAL.
Resource EdgeCacheOrigin yang baru dibuat akan muncul dalam daftar origin di project Anda di halaman Origin.
Mengonfigurasi Layanan Edge Cache
- Di konsol Google Cloud, buka halaman Media CDN.
- Klik tab LAYANAN.
- Klik CREATE SERVICE.
- Masukkan nama unik untuk layanan Anda - yaitu 'media-cdn' - lalu klik Berikutnya.
- Di bagian Pemilihan Rute, klik TAMBAHKAN ATURAN HOST.
- Masukkan karakter pengganti - "*" di kolom {i>Host<i}.
- Klik TAMBAHKAN ATURAN RUTE.
- Untuk Prioritas, tentukan "1".
- Klik TAMBAHKAN KONDISI KECOCOKAN, untuk Pencocokan jalur, pilih "Pencocokan awalan" sebagai Jenis pencocokan, tentukan "/" di bidang Pencocokan jalur, lalu klik Selesai.
- Pilih Fetch from an Origin di bagian Tindakan utama, lalu pilih origin yang Anda konfigurasi di menu drop-down.
- Klik KONFIGURASI LANJUTAN untuk memperluas opsi konfigurasi lainnya.
- Di tindakan Route, klik ADD AN ITEM. Kemudian, lakukan hal berikut:
- Untuk Jenis, pilih "Kebijakan CDN".
- Untuk mode Cache, pilih "Paksa semua cache".
- Biarkan bagian lainnya sesuai default
- Klik Selesai.
- Klik Simpan.
- Klik CREATE SERVICE.
Resource EdgeCacheService yang baru dibuat akan muncul di halaman Layanan dalam daftar layanan di project Anda.
Ambil alamat IP MediaCDN dan Pengujian
- Di konsol Google Cloud, buka halaman Media CDN.
- Buka Media CDN
- Klik tab Layanan.
- Untuk layanan Anda, lihat kolom Alamat.
Untuk menguji apakah layanan Anda dikonfigurasi dengan benar untuk menyimpan konten dalam cache, gunakan alat command line curl untuk mengeluarkan permintaan dan memeriksa respons.
curl -svo /dev/null "http://MEDIA_CDN_IP_ADDRESS/file.txt"
Perintah tersebut akan menghasilkan output yang mirip dengan berikut ini:
< HTTP/2 200 OK ... media-cdn-service-extensions-test ...
Sekarang Anda telah berhasil membuat deployment MediaCDN dengan Cloud Storage sebagai Origin.
7. Mengonfigurasi Artifact Registry untuk Ekstensi Layanan
Sebelum membuat Ekstensi Layanan, kita perlu mengonfigurasi Artifact Registry. Artifact Registry adalah pengelola paket universal Google Cloud untuk mengelola artefak build. Plugin Ekstensi Layanan (Proxy-Wasm) dipublikasikan ke Artifact Registry. Setelah dipublikasikan ke Artifact Registry, plugin Proxy-Wasm dapat di-deploy ke deployment Media CDN Anda.
Kita akan menggunakan perintah gcloudartifact repository create untuk membuat repositori
gcloud artifacts repositories create service-extension-$PROJECT_ID \ --repository-format=docker \ --location=$LOCATION \ --description="Repo for Service Extension" \ --async
Secara opsional, Anda dapat membuat Repositori menggunakan GUI sebagai berikut:
- Di konsol Google Cloud, buka halaman Artifact Registry.
- Klik tombol + CREATE REPOSITORY.
- Masukkan Nama untuk repositori. yaitu ‘service-extension-$PROJECT_ID'.
- Format - 'Docker', Mode - 'Standar', Jenis Lokasi - 'Region', dan pilih ‘us-central1 (Iowa)'
- Klik tombol CREATE.
Resource Artifact Registry Repository yang baru dibuat akan muncul di halaman Repositori.
Setelah resource Repositori dibuat, jalankan perintah berikut di Cloud Shell untuk mengonfigurasi klien Docker Cloud Shell Anda agar dapat mendorong dan menarik paket menggunakan repositori ini.
gcloud auth configure-docker $LOCATION-docker.pkg.dev
Output:
... Adding credentials for: us-central1-docker.pkg.dev Docker configuration file updated.
8. Mengonfigurasi Ekstensi Layanan di Media CDN
Sekarang, kami akan menunjukkan cara menulis dan membangun plugin Service Extension (Proxy-Wasm) yang dapat di-deploy ke Media CDN, menggunakan bahasa pemrograman Rust.
Dalam contoh ini, kita akan membuat plugin Proxy-Wasm yang memverifikasi setiap permintaan HTTP berisi header Authorization dengan nilai "secret". Jika permintaan tidak berisi header ini, plugin akan menghasilkan respons HTTP 403 Forbidden.
Pengingat singkat tentang Ekstensi Layanan - ada tiga sumber daya utama: WasmAction, WasmPlugin, dan WasmPluginVersion.
- Resource WasmAction adalah resource yang dilampirkan ke Media CDN EdgeCacheService Anda. WasmAction merujuk pada resource WasmPlugin.
- Resource WasmPlugin memiliki versi utama yang sesuai dengan WasmPluginVersion yang aktif saat ini.
- WasmPluginVersions mereferensikan image container dari Artifact Registry. Saat melakukan perubahan pada plugin proxy-wasm, Anda akan membuat WasmPluginVersions yang berbeda.
Lihat diagram di bawah untuk lebih memahami hubungan antara kedua resource tersebut.
Menulis dan membangun plugin Ekstensi Layanan
- Instal toolchain Rust dengan mengikuti petunjuk di https://www.rust-lang.org/tools/install.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Selanjutnya, tambahkan dukungan Wasm ke toolchain Rust Anda dengan menjalankan perintah berikut:
rustup target add wasm32-wasi
- Buat paket Rust bernama my-wasm-plugin:
cargo new --lib my-wasm-plugin
Output:
Created library `my-wasm-plugin` package
- Masukkan direktori my-wasm-plugin dan Anda akan melihat file
Cargo.toml
, dan direktorisrc
.
cd my-wasm-plugin ls
Output:
Cargo.toml src
- Selanjutnya, konfigurasikan paket Rust Anda dengan mengedit file
Cargo.toml
. Setelah baris[dependencies]
di file Cargo.toml, tambahkan baris berikut:
proxy-wasm = "0.2"
log = "0.4"
[lib]
crate-type = ["cdylib"]
[profile.release]
lto = true
opt-level = 3
codegen-units = 1
panic = "abort"
strip = "debuginfo"
- Setelah diedit, file
Cargo.toml
akan terlihat seperti ini:
[package]
name = "my-wasm-plugin"
version = "0.1.0"
edition = "2021"
[dependencies]
proxy-wasm = "0.2"
log = "0.4"
[lib]
crate-type = ["cdylib"]
[profile.release]
lto = true
opt-level = 3
codegen-units = 1
panic = "abort"
strip = "debuginfo"
- Setelah diedit, file
lib.rs
akan terlihat seperti ini:
use log::info;
use proxy_wasm::traits::*;
use proxy_wasm::types::*;
...
struct DemoPlugin;
impl HttpContext for DemoPlugin {
fn on_http_request_headers(&mut self, _: usize, _: bool) -> Action {
if self.get_http_request_header("Authorization") == Some(String::from("secret")) {
info!("Access granted.");
Action::Continue
} else {
self.send_http_response(403, vec![], Some(b"Access forbidden.\n"));
Action::Pause
}
}
}
impl Context for DemoPlugin {}
- Setelah mengonfigurasi file manifes
Cargo.toml
dan menulis kode Proxy-Wasm dalam filelib.rs
, kita dapat membangun plugin Proxy-Wasm.
cargo build --release --target wasm32-wasi
Setelah build berhasil diselesaikan, Anda akan melihat pesan seperti yang ditunjukkan di bawah ini:
Finished release [optimized] target(s) in 1.01s
Mari kita verifikasi juga direktori target
dan periksa file yang telah dibuat:
ls ./target
Anda akan melihat output seperti yang ditunjukkan di bawah ini:
CACHEDIR.TAG release wasm32-wasi
Memublikasikan plugin Proxy-Wasm ke Artifact Registry
Sekarang, kita akan memublikasikan plugin Proxy-Wasm ke Artifact Registry Repository yang Anda buat sebelumnya sehingga dapat di-deploy ke Media CDN.
Pertama-tama, kami mengemas plugin Proxy-Wasm di image container.
- Buat file bernama
Dockerfile
di direktori yang sama my-wasm-plugin, dengan konten berikut:
FROM scratch
COPY target/wasm32-wasi/release/my_wasm_plugin.wasm plugin.wasm
- Selanjutnya, bangun image container:
docker build --no-cache --platform wasm -t my-wasm-plugin .
(khusus prosesor non-x86) Selanjutnya, build image container:
docker build --no-cache --platform wasm --provenance=false -t my-wasm-plugin .
Output
[+] Building 0.2s (5/5) FINISHED docker:default ...
- Berikutnya, publikasikan atau "push" plugin Proxy-Wasm Anda ke Artifact Registry. Kita akan memberi tag pada image container kita dengan kata ‘prod' .
docker tag my-wasm-plugin $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod
Sekarang kita lanjutkan dan kirim file yang diberi tag, yakni 'prod' image container ke repositori.
docker push $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod
Output:
The push refers to repository ... 8564ddd9910a: Pushed prod: digest: sha256:f3ae4e392eb45393bfd9c200cf8c0c261762f7f39dde5c7cd4b9a8951c6f2812 size: 525
Sekarang, mari kita pastikan image container plugin Proxy-Wasm berhasil dikirim ke Artifact Registry. Anda akan melihat output seperti ini:
gcloud artifacts docker images list $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin --include-tags
Output:
Listing items under project ... IMAGE DIGEST TAGS CREATE_TIME UPDATE_TIME <LOCATION>-docker.pkg.dev/.../my-wasm-plugin sha256:08c12... prod 2021-11-10T23:31:27 2021-11-10T23:31:27
Mengaitkan plugin Proxy-Wasm dengan deployment Media CDN
Sekarang kita siap untuk mengaitkan plugin Proxy-Wasm ke deployment Media CDN Anda.
Plugin Proxy-Wasm dikaitkan dengan rute Media CDN di resource EdgeCacheService.
- Pertama, kita membuat resource plugin Wasm untuk plugin Proxy-Wasm.
gcloud alpha service-extensions wasm-plugins create my-wasm-plugin-resource
- Selanjutnya, kita membuat WasmPluginVersion.
gcloud alpha service-extensions wasm-plugin-versions create my-version-1 \ --wasm-plugin=my-wasm-plugin-resource \ --image="$LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod"
- Selanjutnya, kita akan menentukan versi utama untuk plugin Proxy-Wasm.
gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource \ --main-version=my-version-1
Sekarang, mari kita pastikan bahwa plugin Proxy-Wasm berhasil dikaitkan dengan Container Image yang berada di Artifact Registry Repository. Anda akan melihat output seperti ini:
gcloud alpha service-extensions wasm-plugin-versions list --wasm-plugin=my-wasm-plugin-resource
Output:
NAME WASM_IMAGE WASM_IMAGE_DIGEST CONFIG_SIZE CONFIG_IMAGE CONFIG_IMAGE_DIGEST UPDATE_TIME c7cfa2 <LOCATION>-docker.pkg.dev/.../my-wasm-plugin@sha256:6d663... ... ... ...
- Selanjutnya, kita membuat resource WasmAction yang merujuk pada resource plugin Wasm.
gcloud alpha service-extensions wasm-actions create my-wasm-action-resource \ --wasm-plugin=my-wasm-plugin-resource
Mari kita pastikan juga bahwa resource WasmAction berhasil dikaitkan dengan plugin Proxy-Wasm. Anda akan melihat output seperti ini:
gcloud alpha service-extensions wasm-actions list
Output:
NAME WASMPLUGIN my-wasm-action-resource projects/805782461588/locations/global/wasmPlugins/myenvoyfilter-resource ...
- Sekarang, kita perlu mengekspor konfigurasi EdgeCacheService Media CDN kita:
gcloud edge-cache services export media-cdn --destination=my-service.yaml
- Kemudian, buka file my-service.yaml dan tambahkan wasmAction ke routeAction untuk rute tertentu, yang mereferensikan resource WasmPlugin yang dibuat sebelumnya.
wasmAction: "my-wasm-action-resource"
- Setelah diedit, file my-service.yaml akan terlihat seperti ini:
...
pathMatchers:
- name: routes
routeRules:
- headerAction: {}
matchRules:
- prefixMatch: /
origin: projects/<PROJECT_NUM>/locations/global/edgeCacheOrigins/cloud-storage-origin
priority: '1'
routeAction:
cdnPolicy:
cacheKeyPolicy: {}
cacheMode: FORCE_CACHE_ALL
defaultTtl: 3600s
signedRequestMode: DISABLED
wasmAction: "my-wasm-action-resource"
...
- Kemudian, simpan konfigurasi terbaru dengan konfigurasi Proxy-Wasm ke file
my-service-with-wasm.yaml
.
- Terakhir, impor konfigurasi yang telah diperbarui untuk lingkungan Media CDN produksi:
$ gcloud alpha edge-cache services import media-cdn --source=my-service-with-wasm.yaml
9. Memvalidasi plugin Proxy-Wasm Ekstensi Layanan di Media CDN
Untuk menguji apakah layanan Anda dikonfigurasi dengan benar untuk menyimpan konten dalam cache, gunakan alat command line curl untuk mengeluarkan permintaan dan memeriksa respons.
curl -svo /dev/null "http://IP_ADDRESS/file.txt"
Perintah tersebut akan menghasilkan output yang mirip dengan berikut ini:
< HTTP/2 403 Forbidden ... Access forbidden. ...
Sekarang, kirim permintaan lagi dengan header Otorisasi dan nilai secret
curl -svo /dev/null "http://IP_ADDRESS/file.txt" -H "Authorization: secret"
Perintah tersebut akan menghasilkan output yang mirip dengan berikut ini:
< HTTP/2 200 OK ... media-cdn-service-extensions-test ...
10. Opsional: Mengelola plugin Proxy-Wasm
Mengupdate plugin Proxy-Wasm
Saat melakukan peningkatan atau menambahkan fungsi baru ke plugin Proxy-Wasm, Anda harus men-deploy plugin yang telah diperbarui ke Media CDN. Di bawah ini, kita membahas langkah-langkah untuk men-deploy versi plugin yang telah diupdate.
Sebagai contoh, Anda dapat memperbarui contoh kode plugin untuk mengevaluasi header Otorisasi berdasarkan nilai lain untuk autentikasi, dengan mengubah kode seperti berikut.
Pertama, perbarui file sumber src/lib.rs dengan kode yang ditampilkan di bawah ini:
use log::{info, warn};
use proxy_wasm::traits::*;
use proxy_wasm::types::*;
...
struct DemoPlugin;
impl HttpContext for DemoPlugin {
fn on_http_request_headers(&mut self, _: usize, _: bool) -> Action {
if self.get_http_request_header("Authorization") == Some(String::from("another_secret")) {
info!("Access granted.");
Action::Continue
} else {
warn!("Access forbidden.");
self.send_http_response(403, vec![], Some(b"Access forbidden.\n"));
Action::Pause
}
}
}
impl Context for DemoPlugin {}
Selanjutnya, bangun, kemas, dan publikasikan plugin yang telah diupdate:
cargo build --release --target wasm32-wasi docker build --no-cache --platform wasm -t my-wasm-plugin . docker tag my-wasm-plugin $LOCATION-docker.pkg.dev/$PROJECT_NUM/$REPOSITORY/my-wasm-plugin:prod docker push $LOCATION-docker.pkg.dev/$PROJECT_NUM/$REPOSITORY>/my-wasm-plugin:prod
Setelah image container diperbarui di Artifact Registry, kita perlu membuat WasmPluginVersion baru, lalu memperbarui versi utama WasmPlugin untuk mereferensikan versi baru.
gcloud alpha service-extensions wasm-plugin-versions create my-version-2 \ --wasm-plugin=my-wasm-plugin-resource \ --image="$LOCATION-docker.pkg.dev/$PROJECT_NUM/$REPOSITORY>/my-wasm-plugin:prod"
gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource \ --main-version=my-version-2
Sekarang, Anda telah berhasil memperbarui versi image container yang akan diimpor dari Artifact Registry dan ditayangkan ke deployment Media CDN Anda.
Melakukan roll back ke versi sebelumnya
Untuk melakukan roll back ke versi plugin sebelumnya, Anda dapat memperbarui resource plugin Wasm untuk mereferensikan versi sebelumnya.
Pertama, kami mencantumkan versi yang tersedia:
gcloud alpha service-extensions wasm-plugin-versions list --wasm-plugin=my-wasm-plugin-resource
Anda akan melihat output:
NAME WASM_IMAGE WASM_IMAGE_DIGEST CONFIG_SIZE CONFIG_IMAGE CONFIG_IMAGE_DIGEST UPDATE_TIME c7cfa2 <LOCATION>-docker.pkg.dev/.../my-wasm-plugin@sha256:6d663... ... ... a2a8ce <LOCATION>-docker.pkg.dev/.../my-wasm-plugin@sha256:08c12... ... ...
Selanjutnya, kita memperbarui resource plugin Wasm untuk mereferensikan versi sebelumnya, "a2a8ce":
$ gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource \ --main-version="a2a8ce"
Setelah operasi berhasil, Anda akan melihat output ini:
✓ WASM Plugin [my-wasm-plugin-resource] is now serving version "a2a8ce"
Karena Media CDN menyimpan digest image Docker Anda setiap kali resource Wasm-plugin baru dibuat, rollback akan menggunakan versi kode yang dijalankan sebelum peluncuran terakhir.
gcloud alpha service-extensions wasm-plugins describe my-wasm-plugin-resource \ --expand-config
Untuk versi "a2a8ce", itu adalah versi dengan digest sha256:08c12...:
name: "my-wasm-plugin-resource" mainVersion: "a2a8ce" mainVersionDetails: image: "<LOCATION>-docker.pkg.dev/<PROJECT>/<REPOSITORY>/my-wasm-plugin" imageDigest: "<LOCATION>-docker.pkg.dev/<PROJECT>/<REPOSITORY>/my-wasm-plugin@sha256:08c121dd7fd1e4d3a116a28300e9fc1fa41b2e9775620ebf3d96cb7119bd9976"
Menghapus WasmAction & WasmPlugin
Untuk menghapus WasmAction, WasmPlugin, dan WasmPluginVersions terkait, ikuti langkah-langkah berikut.
Pertama, hapus referensi ke WasmAction di konfigurasi EdgeCacheService Media CDN Anda.
Garis referensi yang akan dihapus:
wasmAction: "my-wasm-action-resource"
Kemudian, kami memperbarui konfigurasi EdgeCacheService yang diedit.
gcloud alpha edge-cache services import prod-media-service --source=my-service.yaml
Selanjutnya, perbarui versi utama WasmPlugin Anda menjadi string kosong "".
gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource --main-version=
""
Terakhir, lakukan langkah-langkah penghapusan di bawah ini secara berurutan.
gcloud alpha service-extensions wasm-actions delete my-wasm-action-resource gcloud alpha service-extensions wasm-plugin-versions delete my-version \ --wasm-plugin=my-wasm-plugin-resource gcloud alpha service-extensions wasm-plugins delete my-wasm-plugin-resource
11. Membersihkan lingkungan Lab
Setelah Anda menyelesaikan CodeLab, jangan lupa untuk membersihkan resource lab - jika tidak, pengujian akan terus berjalan dan dikenai biaya.
Perintah berikut akan menghapus Media CDN EdgeCache Service, EdgeCache Config, dan Plugin Service Extensions. Lakukan langkah-langkah penghapusan di bawah ini secara berurutan.
gcloud edge-cache services delete media-cdn gcloud edge-cache origins delete cloud-storage-origin gcloud alpha service-extensions wasm-actions delete my-wasm-action-resource gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource --main-version="" gcloud alpha service-extensions wasm-plugin-versions delete my-version-1 --wasm-plugin=my-wasm-plugin-resource gcloud alpha service-extensions wasm-plugins delete my-wasm-plugin-resource gcloud artifacts repositories delete service-extension-$PROJECT_ID --location=$LOCATION
Setiap perintah di atas akan meminta Anda untuk mengonfirmasi penghapusan resource.
12. Selamat!
Selamat, Anda telah menyelesaikan codelab Ekstensi Layanan di Media CDN.
Yang telah kita bahas
- Cara menyiapkan Media CDN dengan Bucket Cloud Storage yang ditetapkan sebagai Origin
- Cara membuat plugin Ekstensi Layanan dengan autentikasi HTTP kustom dan mengaitkannya dengan Media CDN
- Cara memvalidasi bahwa plugin Ekstensi Layanan berfungsi seperti yang diharapkan
- (opsional) Cara mengelola plugin Ekstensi Layanan seperti mengupdate, mereferensikan, melakukan roll back, dan menghapus versi plugin tertentu
Apa selanjutnya?
Lihat beberapa codelab ini...
Bacaan lebih lanjut
- Pemuatan pekerja layanan berperforma tinggi
- Strategi Penyimpanan dalam Cache Pekerja Layanan Berdasarkan Jenis Permintaan