Lab: Ekstensi Layanan di Media CDN

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).

1f19151bdd96acb0.pngS

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:

1dec6f9683153af0.pngS

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

de496bb88f9a0b10.png

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:

  1. Di konsol Google Cloud, buka halaman Cloud Storage.
  2. Klik tombol CREATE.
  3. Masukkan nama untuk bucket. - misalnya "mediacdn-bucket-$PROJECT_ID".
  4. Biarkan setelan lainnya sesuai default.
  5. Klik Tombol CREATE.

50475e01c5a3adbe.pngS

5. Mengupload objek pengujian ke Bucket Cloud Storage

Sekarang kita akan mengupload objek ke dalam bucket Cloud Storage.

  1. 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
  1. 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.

  1. Di konsol Google Cloud, buka halaman Media CDN.
  2. Klik tab ASAL.
  3. Klik BUAT ASAL.
  4. Masukkan 'cloud-storage-origin' sebagai nama untuk origin edge cache.
  5. Di bagian Alamat asal:
  6. pilih 'Select a Google Cloud Storage bucket'.
  7. BROWSE ke bucket Cloud Storage bernama ‘mediacdn-bucket-$PROJECT_ID'.
  8. klik PILIH.
  9. Biarkan setelan lainnya sesuai default.
  10. Klik BUAT ASAL.

e6eb0faa94838c4.png

Resource EdgeCacheOrigin yang baru dibuat akan muncul dalam daftar origin di project Anda di halaman Origin.

Mengonfigurasi Layanan Edge Cache

  1. Di konsol Google Cloud, buka halaman Media CDN.
  2. Klik tab LAYANAN.
  3. Klik CREATE SERVICE.
  4. Masukkan nama unik untuk layanan Anda - yaitu 'media-cdn' - lalu klik Berikutnya.

d2f9ac837bc5d45a.png

  1. Di bagian Pemilihan Rute, klik TAMBAHKAN ATURAN HOST.
  2. Masukkan karakter pengganti - "*" di kolom {i>Host<i}.

25d3e25000934e59.pngS

  1. Klik TAMBAHKAN ATURAN RUTE.
  2. Untuk Prioritas, tentukan "1".
  3. Klik TAMBAHKAN KONDISI KECOCOKAN, untuk Pencocokan jalur, pilih "Pencocokan awalan" sebagai Jenis pencocokan, tentukan "/" di bidang Pencocokan jalur, lalu klik Selesai.
  4. Pilih Fetch from an Origin di bagian Tindakan utama, lalu pilih origin yang Anda konfigurasi di menu drop-down.

d1975f366233521a.png

  1. Klik KONFIGURASI LANJUTAN untuk memperluas opsi konfigurasi lainnya.
  2. Di tindakan Route, klik ADD AN ITEM. Kemudian, lakukan hal berikut:
  3. Untuk Jenis, pilih "Kebijakan CDN".
  4. Untuk mode Cache, pilih "Paksa semua cache".
  5. Biarkan bagian lainnya sesuai default
  6. Klik Selesai.
  7. Klik Simpan.

b7e77d059db84ab6.png

  1. 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

  1. Di konsol Google Cloud, buka halaman Media CDN.
  2. Buka Media CDN
  3. Klik tab Layanan.
  4. Untuk layanan Anda, lihat kolom Alamat.

4031b6d1eac89041.pngS

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:

  1. Di konsol Google Cloud, buka halaman Artifact Registry.
  2. Klik tombol + CREATE REPOSITORY.
  3. Masukkan Nama untuk repositori. yaitu ‘service-extension-$PROJECT_ID'.
  4. Format - 'Docker', Mode - 'Standar', Jenis Lokasi - 'Region', dan pilih ‘us-central1 (Iowa)'
  5. Klik tombol CREATE.

b525b3bc0867dc42.png

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.

22b3548b3a61c379.pngS

Menulis dan membangun plugin Ekstensi Layanan

  1. 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
  1. Selanjutnya, tambahkan dukungan Wasm ke toolchain Rust Anda dengan menjalankan perintah berikut:
rustup target add wasm32-wasi
  1. Buat paket Rust bernama my-wasm-plugin:
cargo new --lib my-wasm-plugin

Output:

Created library `my-wasm-plugin` package
  1. Masukkan direktori my-wasm-plugin dan Anda akan melihat file Cargo.toml, dan direktori src.
cd my-wasm-plugin
ls

Output:

Cargo.toml  src
  1. 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"
  1. 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"
  1. . Salin konten lengkap file sample_code ke file lib.rs di direktori src di Cloud Shell.
  1. 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 {}
  1. Setelah mengonfigurasi file manifes Cargo.toml dan menulis kode Proxy-Wasm dalam file lib.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.

  1. 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
  1. 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
...
  1. 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.

  1. Pertama, kita membuat resource plugin Wasm untuk plugin Proxy-Wasm.
gcloud alpha service-extensions wasm-plugins create my-wasm-plugin-resource
  1. 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"
  1. 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... ... ... 
...
  1. 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
...
  1. Sekarang, kita perlu mengekspor konfigurasi EdgeCacheService Media CDN kita:
gcloud edge-cache services export media-cdn --destination=my-service.yaml
  1. 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"
  1. 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"
...
  1. Kemudian, simpan konfigurasi terbaru dengan konfigurasi Proxy-Wasm ke file my-service-with-wasm.yaml.
  1. 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

Dokumen referensi