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

1f19151bdd96acb0.png

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:

1dec6f9683153af0.png

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 & 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:

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

50475e01c5a3adbe.png

5. Mengupload objek pengujian ke Bucket Cloud Storage

Sekarang kita akan mengupload objek ke dalam bucket Cloud Storage.

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

  1. Di konsol Google Cloud, buka halaman Media CDN.
  2. Klik tab ASAL.
  3. Klik CREATE ORIGIN.
  4. Masukkan 'cloud-storage-origin' sebagai nama untuk asal cache tepi.
  5. Di bagian Alamat asal:
  6. pilih 'Pilih bucket Google Cloud Storage'.
  7. JELAJAHI bucket Cloud Storage bernama 'mediacdn-bucket-$PROJECT_ID'.
  8. Klik PILIH.
  9. Biarkan setelan lainnya sebagai default.
  10. Klik CREATE ORIGIN.

e6eb0faa94838c4.png

Resource EdgeCacheOrigin yang baru dibuat akan muncul dalam daftar server asal di project Anda di halaman Origins.

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 - misalnya, 'media-cdn' - lalu klik Berikutnya.

d2f9ac837bc5d45a.png

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

25d3e25000934e59.png

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

d1975f366233521a.png

  1. Klik KONFIGURASI LANJUTAN untuk memperluas opsi konfigurasi lainnya.
  2. Di Tindakan rute, klik TAMBAHKAN ITEM. Kemudian, lakukan hal berikut:
  3. Untuk Jenis, pilih "Kebijakan CDN".
  4. Untuk Mode cache, pilih "Paksa cache semua".
  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 Services dalam daftar layanan di project Anda.

Mengambil 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.png

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:

  1. Di Konsol Google Cloud, buka halaman Artifact Registry.
  2. Klik tombol + CREATE REPOSITORY.
  3. Masukkan Nama untuk repositori. Misalnya, 'service-extension-$PROJECT_ID'.
  4. Format - 'Docker', Mode - 'Standard', Location Type - 'Region', dan pilih 'us-central1 (Iowa)'
  5. Klik tombol CREATE.

b525b3bc0867dc42.png

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.

22b3548b3a61c379.png

Menulis dan membuat 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, 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"
  1. Setelah pengeditan, 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 seluruh konten file sample_code ke file lib.rs di direktori src di Cloud Shell.
  1. Setelah pengeditan, 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 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.

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

  1. Pertama, kita membuat resource Wasm-plugin 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 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... ... ... 
...
  1. 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
...
  1. Sekarang, kita perlu mengekspor konfigurasi Media CDN EdgeCacheService:
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, kita menyimpan konfigurasi yang telah diupdate dengan konfigurasi Proxy-Wasm ke file my-service-with-wasm.yaml.
  1. 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

Dokumen referensi