1. Pengantar
Terakhir Diperbarui: 01-05-2024
Jaringan Penayangan Konten (CDN) meningkatkan performa pengguna dengan menyimpan konten yang sering diakses ke cache secara lebih dekat dengan pengguna akhir, menghentikan koneksi lebih dekat dengan klien, menggunakan kembali koneksi ke asal, dan melalui adopsi protokol dan penyesuaian jaringan modern.
Media CDN, jaringan edge global GCP untuk streaming media, menyediakan banyak kemampuan bawaan atau "inti". Kemampuan inti ini ditujukan untuk menangani kasus penggunaan yang paling umum, tetapi Anda mungkin juga memiliki persyaratan yang tidak ditangani oleh set fitur inti ini.
Service Extensions untuk Media CDN, yang terkadang juga disebut sebagai Kemampuan Pemrograman Edge, memungkinkan Anda menjalankan kode Anda sendiri di edge untuk menyesuaikan perilaku Media CDN. Hal ini memungkinkan kasus penggunaan tambahan mulai dari menormalisasi kunci cache, autentikasi token kustom dan pencabutan token, kolom log kustom tambahan, pengujian A/B, dan halaman error kustom.
Yang akan Anda bangun
Dalam lab kode ini, kita akan membahas langkah-langkah untuk men-deploy lingkungan penayangan CDN yang mendukung Edge Compute dengan Media CDN (CDN) + Service Extensions (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 memperbarui, mereferensikan, mengembalikan, dan menghapus versi plugin tertentu
Yang Anda butuhkan
- Networking Dasar dan pengetahuan tentang HTTP
- Pengetahuan dasar mengenai command line Unix/Linux
2. Sebelum memulai
Permintaan untuk Daftar yang Diizinkan Media CDN & Daftar yang Diizinkan Service Extensions
Sebelum memulai, Anda harus memastikan project Anda telah ditambahkan ke daftar yang diizinkan untuk pratinjau pribadi Media CDN dan Ekstensi Layanan untuk Media CDN.
- Untuk meminta akses ke Media CDN dan Service Extensions untuk Media CDN, hubungi Tim Akun Google Anda untuk membuat permintaan akses atas nama Anda untuk Media CDN dan Service Extensions
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 Konsol GCP, 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 & Akses IAM
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 Anda 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 & Service Extensions API melalui perintah di bawah
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 seperti berikut:
- Di konsol Google Cloud, buka halaman Cloud Storage.
- Klik tombol CREATE.
- Masukkan nama bucket. - yaitu "mediacdn-bucket-$PROJECT_ID".
- Biarkan setelan lainnya sebagai default.
- Klik Tombol CREATE.

5. Mengupload objek pengujian ke Bucket Cloud Storage
Sekarang kita akan mengupload objek ke dalam bucket Cloud Storage.
- Buat file di Cloud Shell, lalu upload ke bucket menggunakan gsutil
echo media-cdn-service-extensions-test > file.txt gsutil cp file.txt gs://mediacdn-bucket-$PROJECT_ID
- Memberikan akses Media CDN 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 menghadap klien (TLS, pengalamatan IP), perutean, konfigurasi CDN (mode cache, TTL, penandatanganan), dan kebijakan keamanan.
- EdgeCacheOrigin, bertanggung jawab atas konfigurasi per-origin untuk semua origin berbasis HTTP, serta kondisi percobaan ulang saat konten tidak tersedia atau dapat dijangkau.
Mengonfigurasi Edge Cache Origin
Sekarang, mari 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 CREATE ORIGIN.
- Masukkan 'cloud-storage-origin' sebagai nama untuk asal cache tepi.
- Di bagian Alamat asal:
- pilih 'Pilih bucket Google Cloud Storage'.
- JELAJAHI bucket Cloud Storage bernama 'mediacdn-bucket-$PROJECT_ID'.
- Klik PILIH.
- Biarkan setelan lainnya sebagai default.
- Klik CREATE ORIGIN.

Resource EdgeCacheOrigin yang baru dibuat akan muncul dalam daftar server asal di project Anda di halaman Origins.
Mengonfigurasi Layanan Edge Cache
- Di konsol Google Cloud, buka halaman Media CDN.
- Klik tab LAYANAN.
- Klik CREATE SERVICE.
- Masukkan nama unik untuk layanan Anda - misalnya, 'media-cdn' - lalu klik Berikutnya.

- Di bagian Routing, klik ADD HOST RULE.
- Masukkan karakter pengganti - "*" di kolom Host.

- Klik TAMBAHKAN ATURAN RUTE.
- Untuk Prioritas, tentukan "1".
- Klik ADD A MATCH CONDITION, untuk Pencocokan jalur, pilih "Pencocokan awalan" sebagai Jenis pencocokan, tentukan "/" di kolom Pencocokan jalur, lalu klik Selesai.
- Pilih Ambil dari Asal di bagian Tindakan utama, lalu pilih asal yang Anda konfigurasi di menu drop-down.

- Klik KONFIGURASI LANJUTAN untuk memperluas opsi konfigurasi lainnya.
- Di Tindakan rute, klik TAMBAHKAN ITEM. Kemudian, lakukan hal berikut:
- Untuk Jenis, pilih "Kebijakan CDN".
- Untuk Mode cache, pilih "Paksa cache semua".
- Biarkan bagian lainnya sesuai default.
- Klik Selesai.
- Klik Simpan.

- Klik CREATE SERVICE.
Resource EdgeCacheService yang baru dibuat akan muncul di halaman Services dalam daftar layanan di project Anda.
Mengambil 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 mengirimkan permintaan dan memeriksa respons.
curl -svo /dev/null "http://MEDIA_CDN_IP_ADDRESS/file.txt"
Perintah 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 Asal.
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 gcloud artifacts repositories 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. Misalnya, 'service-extension-$PROJECT_ID'.
- Format - 'Docker', Mode - 'Standard', Location Type - 'Region', dan pilih 'us-central1 (Iowa)'
- Klik tombol CREATE.

Resource Repositori Artifact Registry yang baru dibuat akan muncul di halaman Repositori.
Setelah resource Repository dibuat, jalankan perintah berikut di Cloud Shell untuk mengonfigurasi klien Docker Cloud Shell Anda agar dapat melakukan push dan pull 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 Service Extensions di Media CDN
Sekarang, kita akan mendemonstrasikan cara menulis dan membangun plugin Ekstensi Layanan (Proxy-Wasm) yang dapat di-deploy ke Media CDN, menggunakan bahasa pemrograman Rust.
Dalam contoh ini, kita akan membuat plugin Proxy-Wasm yang memverifikasi bahwa setiap permintaan HTTP berisi header Authorization dengan nilai "secret". Jika permintaan tidak berisi header ini, plugin akan menghasilkan respons HTTP 403 Forbidden.
Berikut ringkasan singkat tentang Ekstensi Layanan: ada tiga resource utama: WasmAction, WasmPlugin, dan WasmPluginVersion.
- Resource WasmAction adalah resource yang terhubung ke EdgeCacheService Media CDN Anda. WasmAction mereferensikan resource WasmPlugin.
- Resource WasmPlugin memiliki versi utama yang sesuai dengan WasmPluginVersion aktif saat ini.
- WasmPluginVersions mereferensikan image container dari Artifact Registry. Saat Anda membuat perubahan pada plugin proxy-wasm, Anda akan membuat WasmPluginVersion yang berbeda.
Lihat diagram di bawah untuk lebih memahami hubungan antara resource ini.

Menulis dan membuat 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, konfigurasi paket Rust Anda dengan mengedit file
Cargo.toml. Setelah baris[dependencies]dalam file Cargo.toml, tambahkan kode 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 pengeditan, file
Cargo.tomlakan 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 pengeditan, file
lib.rsakan 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.tomldan menulis kode Proxy-Wasm dalam filelib.rs, kita dapat membuat 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 apakah file telah dibuat:
ls ./target
Anda akan melihat output seperti yang ditunjukkan di bawah:
CACHEDIR.TAG release wasm32-wasi
Memublikasikan plugin Proxy-Wasm ke Artifact Registry
Sekarang, kita akan memublikasikan plugin Proxy-Wasm ke Repositori Artifact Registry yang Anda buat sebelumnya agar dapat di-deploy ke Media CDN.
Pertama, kita mengemas plugin Proxy-Wasm dalam image container.
- Buat file bernama
Dockerfiledi direktori yang sama my-wasm-plugin, dengan konten berikut:
FROM scratch
COPY target/wasm32-wasi/release/my_wasm_plugin.wasm plugin.wasm
- Selanjutnya, buat image container:
docker build --no-cache --platform wasm -t my-wasm-plugin .
(khusus prosesor non-x86) Selanjutnya, bangun image container:
docker build --no-cache --platform wasm --provenance=false -t my-wasm-plugin .
Output
[+] Building 0.2s (5/5) FINISHED docker:default ...
- Selanjutnya, publikasikan atau "dorong" plugin Proxy-Wasm Anda ke Artifact Registry. Kita akan memberi tag pada image container dengan tag 'prod'.
docker tag my-wasm-plugin $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod
Sekarang kita akan mengirim image container 'prod' yang diberi tag 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 verifikasi apakah image container plugin Proxy-Wasm berhasil dikirim ke Artifact Registry. Anda akan melihat output yang serupa:
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 Anda
Sekarang kita siap mengaitkan plugin Proxy-Wasm ke deployment Media CDN Anda.
Plugin Proxy-Wasm dikaitkan dengan rute Media CDN di resource EdgeCacheService.
- Pertama, kita membuat resource Wasm-plugin 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 verifikasi bahwa plugin Proxy-Wasm berhasil dikaitkan dengan Image Container yang berada di Repositori Artifact Registry. Anda akan melihat output yang serupa:
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 mereferensikan resource plugin Wasm.
gcloud alpha service-extensions wasm-actions create my-wasm-action-resource \
--wasm-plugin=my-wasm-plugin-resource
Mari kita verifikasi juga bahwa resource WasmAction berhasil dikaitkan dengan plugin Proxy-Wasm. Anda akan melihat output yang serupa:
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 Media CDN EdgeCacheService:
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, kita menyimpan konfigurasi yang telah diupdate dengan konfigurasi Proxy-Wasm ke file
my-service-with-wasm.yaml.
- Terakhir, kita mengimpor konfigurasi yang diperbarui untuk lingkungan Media CDN produksi:
$ gcloud alpha edge-cache services import media-cdn --source=my-service-with-wasm.yaml
9. Memvalidasi plugin Service Extensions Proxy-Wasm di Media CDN
Untuk menguji apakah layanan Anda dikonfigurasi dengan benar untuk menyimpan konten dalam cache, gunakan alat command line curl untuk mengirimkan permintaan dan memeriksa respons.
curl -svo /dev/null "http://IP_ADDRESS/file.txt"
Perintah akan menghasilkan output yang mirip dengan berikut ini:
< HTTP/2 403 Forbidden ... Access forbidden. ...
Sekarang, kirim permintaan lagi dengan header Otorisasi dan nilai rahasianya
curl -svo /dev/null "http://IP_ADDRESS/file.txt" -H "Authorization: secret"
Perintah 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 fungsionalitas baru ke plugin Proxy-Wasm, Anda harus men-deploy plugin yang telah diupdate ke Media CDN. Di bawah ini, kami akan membahas langkah-langkah untuk men-deploy versi plugin yang telah diupdate.
Sebagai contoh, Anda dapat memperbarui kode plugin contoh untuk mengevaluasi header Otorisasi terhadap nilai lain untuk autentikasi, dengan mengubah kode seperti berikut.
Pertama, perbarui file sumber src/lib.rs dengan kode yang ditunjukkan di bawah:
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, buat, 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 –main-version 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 mengupdate resource plugin Wasm untuk mereferensikan versi sebelumnya.
Pertama, kita 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 akan mengupdate 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 ringkasan image dari image Docker Anda setiap kali resource Wasm-plugin baru dibuat, rollback akan menggunakan versi kode Anda yang berjalan 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 dalam konfigurasi Media CDN EdgeCacheService Anda.
Garis referensi yang akan dihapus:
wasmAction: "my-wasm-action-resource"
Kemudian, kita memperbarui konfigurasi EdgeCacheService yang telah diedit.
gcloud alpha edge-cache services import prod-media-service --source=my-service.yaml
Selanjutnya, perbarui versi utama WasmPlugin Anda ke string kosong "".
gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource --main-version=
""
Terakhir, lakukan langkah-langkah penghapusan di bawah 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 menyelesaikan CodeLab, jangan lupa untuk membersihkan resource lab. Jika tidak, resource tersebut akan terus berjalan dan menimbulkan biaya.
Perintah berikut akan menghapus Layanan EdgeCache Media CDN, Konfigurasi EdgeCache, dan Plugin Ekstensi Layanan. Lakukan langkah-langkah penghapusan di bawah 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 Service Extensions 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 memperbarui, mereferensikan, mengembalikan, dan menghapus versi plugin tertentu
Apa selanjutnya?
Lihat beberapa codelab ini...
Bacaan lebih lanjut
- Pemuatan pekerja layanan berperforma tinggi
- Strategi Penyimpanan dalam Cache Service Worker Berdasarkan Jenis Permintaan