1. Wprowadzenie
Ostatnia aktualizacja: 1.05.2024
Sieci dostarczania treści (CDN) zwiększają wydajność użytkowników przez buforowanie często używanych treści bliżej użytkowników, przerywanie połączeń bliżej klientów, ponowne wykorzystywanie połączeń ze źródłem oraz stosowanie nowoczesnych protokołów sieciowych i dostosowań.
Media CDN, globalna sieć brzegowa GCP do strumieniowego przesyłania multimediów, ma wiele wbudowanych Podstawowe funkcje są przeznaczone do obsługi typowych przypadków użycia, ale mogą też obowiązywać wymagania, na które nie ma odpowiedzi w ramach podstawowego zestawu funkcji.
Rozszerzenia usług dla Media CDN, zwane też czasami programowalnością brzegową, umożliwiają uruchamianie własnego kodu na brzegu sieci w celu dostosowania działania Media CDN. Odblokowuje to dodatkowe przypadki użycia – od normalizowania klucza pamięci podręcznej, uwierzytelniania niestandardowego tokena i unieważniania tokena, dodatkowych niestandardowych pól logu, testów A/B i niestandardowej strony błędu.
Co utworzysz
W tym module kodu omówimy kroki wdrażania środowiska wyświetlania CDN obsługującego Edge Compute z Media CDN (CDN) + rozszerzenia usług (programowanie brzegowe) i Cloud Storage (źródło CDN).
Czego się nauczysz
- Jak skonfigurować Media CDN z zasobnikiem Cloud Storage ustawionym jako punkt początkowy
- Jak utworzyć wtyczkę rozszerzenia usługi z niestandardowym uwierzytelnianiem HTTP i powiązać ją z Media CDN
- Jak sprawdzić, czy wtyczka rozszerzenia usługi działa zgodnie z oczekiwaniami
- (opcjonalnie) Jak zarządzać wtyczką rozszerzenia usług, np. aktualizować, odwoływać się do niej, wycofywać ją i usuwać
Czego potrzebujesz
- Podstawowa znajomość sieci i znajomości protokołu HTTP
- Podstawowa wiedza na temat wiersza poleceń systemu Unix/Linux.
2. Zanim zaczniesz
Prośba o dodanie listy dozwolonych Media CDN Lista dozwolonych rozszerzeń usług
Zanim zaczniesz, sprawdź, czy Twój projekt został dodany do listy dozwolonych w prywatnej wersji testowej dla Media CDN i rozszerzeń usług dla Media CDN.
- Aby poprosić o dostęp zarówno do Media CDN, jak i do rozszerzeń usług dla Media CDN, skontaktuj się ze swoim zespołem kont Google w sprawie utworzenia w Twoim imieniu prośby o dostęp do Media CDN oraz rozszerzeń usług.
3. Konfiguracja i wymagania
Uruchamianie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w chmurze.
W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym module możesz wykonać w przeglądarce.
Zanim zaczniesz
Role Dostęp
Uprawnienia usługi Identity and Access Management (IAM) wymagane do tworzenia zasobów Media CDN i Artifact Registry:
- roles/networkservices.edgeCacheAdmin
- roles/networkservices.edgeCacheUser
- roles/networkservices.edgeCacheViewer
- roles/artifactregistry.repoAdmin
W Cloud Shell sprawdź, czy zmienne środowiskowe project_id, project_num, location i repository są skonfigurowane.
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
włączyć interfejsy API,
Włącz Media CDN & Interfejsy API rozszerzeń usług za pomocą poniższych poleceń
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. Tworzenie zasobnika Cloud Storage
Treści Media CDN mogą pochodzić z takich lokalizacji jak zasobnik Cloud Storage, lokalizacja pamięci innej firmy lub dowolny publiczny dostępny punkt końcowy HTTP(HTTPS).
W ramach tego ćwiczenia w programie zapiszemy treść w zasobniku Cloud Storage.
Do utworzenia zasobnika użyjemy polecenia gsutil mb
gsutil mb gs://mediacdn-bucket-$PROJECT_ID
Opcjonalnie możesz utworzyć zasobnik Cloud Storage, korzystając z GUI w ten sposób:
- W konsoli Google Cloud otwórz stronę Cloud Storage.
- Kliknij przycisk UTWÓRZ.
- Wpisz nazwę zasobnika. – np. „mediacdn-bucket-$PROJECT_ID”.
- Pozostałe ustawienia pozostaw domyślne.
- Kliknij przycisk UTWÓRZ.
5. Przesyłanie obiektu testowego do zasobnika Cloud Storage
Teraz prześlesz obiekt do zasobnika Cloud Storage.
- Utwórz plik w Cloud Shell, a następnie prześlij go do zasobnika przy użyciu polecenia gsutil
echo media-cdn-service-extensions-test > file.txt gsutil cp file.txt gs://mediacdn-bucket-$PROJECT_ID
- Przyznawanie dostępu Media CDN do zasobnika
gsutil iam ch \ serviceAccount:service-$PROJECT_NUM@gcp-sa-mediaedgefill.iam.gserviceaccount.com:objectViewer gs://mediacdn-bucket-$PROJECT_ID
6. Skonfiguruj Media CDN
Następnie utworzymy konfigurację Media CDN.
Każda konfiguracja Media CDN składa się z 2 głównych zasobów:
- EdgeCacheService jest odpowiedzialny za konfigurację (TLS, adresowanie IP), routing, konfigurację CDN (tryby pamięci podręcznej, wartości TTL, podpisywanie) i zasady zabezpieczeń.
- EdgeCacheOrigin, który odpowiada za konfigurację źródeł opartych na protokole HTTP, a także za warunki ponawiania prób w poszczególnych źródłach, gdy treść nie jest dostępna lub osiągalna.
Konfigurowanie punktu początkowego tymczasowego przechowywania danych na serwerach brzegowych
Utwórzmy teraz punkt początkowy wskazujący utworzony przed chwilą zasobnik Cloud Storage.
- W konsoli Google Cloud otwórz stronę Media CDN.
- Kliknij kartę Źródła.
- Kliknij UTWÓRZ LOKALIZACJĘ.
- Wpisz „cloud-storage-origin” jako nazwę punktu początkowego tymczasowego przechowywania danych na serwerach brzegowych.
- W sekcji Adres punktu początkowego:
- kliknij „Wybierz zasobnik Google Cloud Storage”.
- PRZEGLĄDAJ zasobnik Cloud Storage o nazwie „mediacdn-bucket-$PROJECT_ID”.
- kliknij WYBIERZ.
- Pozostałe ustawienia pozostaw domyślne.
- Kliknij UTWÓRZ LOKALIZACJĘ.
Nowo utworzony zasób EdgeCacheOrigin pojawi się na liście źródeł w projekcie na stronie Origin.
Konfigurowanie usługi tymczasowego przechowywania danych na serwerach brzegowych
- W konsoli Google Cloud otwórz stronę Media CDN.
- Kliknij kartę USŁUGI.
- Kliknij UTWÓRZ USŁUGĘ.
- Wpisz niepowtarzalną nazwę usługi, np. „media-cdn” a potem kliknij Dalej.
- W sekcji Routing kliknij DODAJ REGUŁĘ HOSTA.
- Wpisz symbol wieloznaczny – „*” w polu Hosts (Hosty).
- Kliknij DODAJ REGUŁĘ TRASY.
- W polu Priorytet wpisz „1”.
- Kliknij DODAJ WARUNEK DOPASOWANIA. W przypadku dopasowania ścieżki wybierz „Dopasowanie prefiksu”. jako typ dopasowania wpisz „/” w polu Dopasowanie ścieżki i kliknij Gotowe.
- W obszarze Główne działanie wybierz Pobierz z punktu początkowego, a następnie wybierz z listy skonfigurowane źródło.
- Aby zobaczyć więcej opcji konfiguracji, kliknij KONFIGURACJE ZAAWANSOWANE.
- W działaniu trasy kliknij DODAJ ELEMENT. Następnie wykonaj te czynności:
- Jako Typ wybierz „Zasada CDN”.
- Dla trybu pamięci podręcznej wybierz „Wymuś przechowywanie w pamięci podręcznej wszystkich plików”.
- Pozostałe wartości pozostaw domyślne
- Kliknij Gotowe.
- Kliknij Zapisz.
- Kliknij UTWÓRZ USŁUGĘ.
Nowo utworzony zasób EdgeCacheService pojawi się na stronie Usługi na liście usług w projekcie.
Pobieranie adresu IP MediaCDN i testowanie
- W konsoli Google Cloud otwórz stronę Media CDN.
- Przejdź do Media CDN
- Kliknij kartę Usługi.
- Informacje o usłudze znajdziesz w kolumnie Adresy.
Aby sprawdzić, czy usługa jest prawidłowo skonfigurowana do buforowania treści, użyj narzędzia wiersza poleceń curl do wysyłania żądań i sprawdzania odpowiedzi.
curl -svo /dev/null "http://MEDIA_CDN_IP_ADDRESS/file.txt"
Polecenie powinno wyświetlić dane wyjściowe podobne do tych:
< HTTP/2 200 OK ... media-cdn-service-extensions-test ...
Udało Ci się utworzyć wdrożenie MediaCDN z Cloud Storage jako punktem początkowym.
7. Konfigurowanie Artifact Registry pod kątem rozszerzeń usług
Przed utworzeniem rozszerzeń usług musimy skonfigurować Artifact Registry. Artifact Registry to uniwersalny menedżer pakietów Google Cloud do zarządzania artefaktami kompilacji. Wtyczki rozszerzenia usługi (Proxy-Wasm) są publikowane w Artifact Registry. Po opublikowaniu w Artifact Registry wtyczki Proxy-Wasm można wdrożyć we wdrożeniu Media CDN.
Do utworzenia repozytorium użyjemy polecenia gcloud APIs instances create.
gcloud artifacts repositories create service-extension-$PROJECT_ID \ --repository-format=docker \ --location=$LOCATION \ --description="Repo for Service Extension" \ --async
Opcjonalnie możesz utworzyć repozytorium przy użyciu graficznego interfejsu użytkownika w ten sposób:
- W konsoli Google Cloud otwórz stronę Artifact Registry.
- Kliknij przycisk + UTWÓRZ REPOZYTORIUM.
- Wpisz nazwę repozytorium. np. „service-extension-$PROJECT_ID”.
- Format – „Docker”, Tryb – „Standardowy”, „Typ lokalizacji” – „Region” i wybrać „us-central1 (Iowa)”
- Kliknij przycisk UTWÓRZ.
Nowo utworzony zasób repozytorium Artifact Registry powinien pojawić się na stronie Repozytoria.
Po utworzeniu zasobu repozytorium uruchom następujące polecenie w Cloud Shell, aby skonfigurować klienta Dockera Cloud Shell do wypychania i pobierania pakietów przy użyciu tego repozytorium.
gcloud auth configure-docker $LOCATION-docker.pkg.dev
Dane wyjściowe:
... Adding credentials for: us-central1-docker.pkg.dev Docker configuration file updated.
8. Konfigurowanie rozszerzeń usług w Media CDN
Teraz zademonstrujemy, jak utworzyć i utworzyć wtyczkę rozszerzenia usługi (Proxy-Wasm), którą można wdrożyć w Media CDN za pomocą języka programowania Rusta.
W tym przykładzie utworzymy wtyczkę Proxy-Wasm, która sprawdza, czy każde żądanie HTTP zawiera nagłówek autoryzacji z wartością „secret”. Jeśli żądanie nie zawiera tego nagłówka, wtyczka generuje odpowiedź HTTP 403 (Zabroniony).
Krótkie przypomnienie dotyczące rozszerzeń usług – istnieją trzy kluczowe zasoby: WasmAction, WasmPlugin i wamPluginVersion.
- Zasób WasmAction jest dołączany do usługi Media CDN EdgeCacheService. WasmAction odwołuje się do zasobu WasmPlugin.
- Zasób WasmPlugin ma wersję główną, która odpowiada bieżącej aktywnej wersji WasmPluginVersion.
- WasmPluginVersions odwołuje się do obrazu kontenera z Artifact Registry. Podczas wprowadzania zmian we wtyczkach proxy-wasm tworzysz różne wersje WasmPluginVersion.
Aby lepiej zrozumieć relacje między tymi zasobami, zapoznaj się z tym schematem.
Pisanie i tworzenie wtyczki rozszerzenia usługi
- Zainstaluj łańcuch narzędzi Rust, wykonując instrukcje podane na stronie https://www.rust-lang.org/tools/install.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Następnie dodaj obsługę Wasm do łańcucha narzędzi Rust, uruchamiając to polecenie:
rustup target add wasm32-wasi
- Utwórz pakiet Rust o nazwie my-wasm-plugin:
cargo new --lib my-wasm-plugin
Dane wyjściowe:
Created library `my-wasm-plugin` package
- Wejdź do katalogu my-wasm-plugin. Powinny być tam widoczne pliki
Cargo.toml
i katalogsrc
.
cd my-wasm-plugin ls
Dane wyjściowe:
Cargo.toml src
- Następnie skonfiguruj pakiet Rust, edytując plik
Cargo.toml
. Po wierszu[dependencies]
w pliku Cargo.toml dodaj:
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"
- Po wprowadzeniu zmian plik
Cargo.toml
powinien wyglądać mniej więcej tak:
[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"
- Po wprowadzeniu zmian plik
lib.rs
powinien wyglądać mniej więcej tak:
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 {}
- Po skonfigurowaniu pliku manifestu
Cargo.toml
i zapisaniu kodu Proxy-Wasm w plikulib.rs
możemy utworzyć wtyczkę Proxy-Wasm.
cargo build --release --target wasm32-wasi
Gdy kompilacja się zakończy, pojawi się następujący komunikat:
Finished release [optimized] target(s) in 1.01s
Sprawdźmy też katalog target
i sprawdźmy, czy pliki zostały utworzone:
ls ./target
Zostaną wyświetlone dane wyjściowe, które będą wyglądać tak:
CACHEDIR.TAG release wasm32-wasi
Publikowanie wtyczki Proxy-Wasm w Artifact Registry
Teraz opublikujemy naszą wtyczkę Proxy-Wasm w utworzonym wcześniej repozytorium Artifact Registry, aby można było ją wdrożyć w Media CDN.
Najpierw umieszczamy wtyczki Proxy-Wasm w obrazie kontenera.
- W tym samym katalogu my-wasm-plugin utwórz plik o nazwie
Dockerfile
z następującą zawartością:
FROM scratch
COPY target/wasm32-wasi/release/my_wasm_plugin.wasm plugin.wasm
- Następnie utwórz obraz kontenera:
docker build --no-cache --platform wasm -t my-wasm-plugin .
(tylko procesory inne niż x86) Następnie utwórz obraz kontenera:
docker build --no-cache --platform wasm --provenance=false -t my-wasm-plugin .
Wyniki
[+] Building 0.2s (5/5) FINISHED docker:default ...
- Następnie opublikuj ją lub przekaż wtyczki Proxy-Wasm do Artifact Registry. Do obrazu kontenera dodamy tag „prod” .
docker tag my-wasm-plugin $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod
Teraz przejdziemy do przekazania tagu „prod” do repozytorium.
docker push $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod
Dane wyjściowe:
The push refers to repository ... 8564ddd9910a: Pushed prod: digest: sha256:f3ae4e392eb45393bfd9c200cf8c0c261762f7f39dde5c7cd4b9a8951c6f2812 size: 525
Sprawdźmy, czy obraz kontenera wtyczki Proxy-Wasm został przesłany do Artifact Registry. Powinny być widoczne podobne dane wyjściowe:
gcloud artifacts docker images list $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin --include-tags
Dane wyjściowe:
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
Powiązanie wtyczki Proxy-Wasm z wdrożeniem Media CDN
Teraz możemy powiązać wtyczkę Proxy-Wasm z Twoim wdrożeniem Media CDN.
Wtyczki Proxy-Wasm są powiązane z trasami Media CDN w zasobie EdgeCacheService.
- Najpierw tworzymy zasób wtyczki Wasm dla naszej wtyczki Proxy-Wasm.
gcloud alpha service-extensions wasm-plugins create my-wasm-plugin-resource
- Następnie tworzymy wersję 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"
- Następnie określamy główną wersję naszej wtyczki Proxy-Wasm.
gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource \ --main-version=my-version-1
Sprawdźmy, czy wtyczka Proxy-Wasm została powiązana z obrazem kontenera w repozytorium Artifact Registry. Powinny być widoczne podobne dane wyjściowe:
gcloud alpha service-extensions wasm-plugin-versions list --wasm-plugin=my-wasm-plugin-resource
Dane wyjściowe:
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... ... ... ...
- Następnie tworzymy zasób WasmAction odwołujący się do naszego zasobu wtyczki Wasm.
gcloud alpha service-extensions wasm-actions create my-wasm-action-resource \ --wasm-plugin=my-wasm-plugin-resource
Sprawdźmy też, czy zasób WasmAction został prawidłowo powiązany z wtyczką Proxy-Wasm. Powinny być widoczne podobne dane wyjściowe:
gcloud alpha service-extensions wasm-actions list
Dane wyjściowe:
NAME WASMPLUGIN my-wasm-action-resource projects/805782461588/locations/global/wasmPlugins/myenvoyfilter-resource ...
- Teraz musimy wyeksportować konfigurację usługi Media CDN EdgeCacheService:
gcloud edge-cache services export media-cdn --destination=my-service.yaml
- Następnie otwórz plik my-service.yaml i dodaj wasmAction do routeAction dla danej trasy, która odwołuje się do utworzonego wcześniej zasobu WasmPlugin.
wasmAction: "my-wasm-action-resource"
- Po wprowadzeniu zmian plik my-service.yaml powinien wyglądać mniej więcej tak:
...
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"
...
- Następnie zapisujemy zaktualizowaną konfigurację z konfiguracją serwera proxy w pliku
my-service-with-wasm.yaml
.
- Na koniec importujemy zaktualizowaną konfigurację środowiska produkcyjnego Media CDN:
$ gcloud alpha edge-cache services import media-cdn --source=my-service-with-wasm.yaml
9. Sprawdzanie poprawności wtyczki Proxy-Wasm rozszerzeń usług w Media CDN
Aby sprawdzić, czy usługa jest prawidłowo skonfigurowana do buforowania treści, użyj narzędzia wiersza poleceń curl do wysyłania żądań i sprawdzania odpowiedzi.
curl -svo /dev/null "http://IP_ADDRESS/file.txt"
Polecenie powinno wyświetlić dane wyjściowe podobne do tych:
< HTTP/2 403 Forbidden ... Access forbidden. ...
Następnie wyślij żądanie ponownie, podając nagłówek autoryzacji i wartość obiektu tajnego.
curl -svo /dev/null "http://IP_ADDRESS/file.txt" -H "Authorization: secret"
Polecenie powinno wyświetlić dane wyjściowe podobne do tych:
< HTTP/2 200 OK ... media-cdn-service-extensions-test ...
10. Opcjonalnie: zarządzanie wtyczkami Proxy-Wasm
Aktualizowanie wtyczki Proxy-Wasm
Gdy wprowadzasz ulepszenia lub dodajesz nowe funkcje do wtyczek Proxy-Wasm, musisz wdrażać zaktualizowane wtyczki w Media CDN. Poniżej opisujemy czynności, jakie należy wykonać, aby wdrożyć zaktualizowaną wersję wtyczki.
Możesz na przykład zaktualizować przykładowy kod wtyczki, aby porównać nagłówek autoryzacji z inną wartością uwierzytelniania, modyfikując kod w następujący sposób.
Najpierw zaktualizuj plik źródłowy src/lib.rs przy użyciu poniższego kodu:
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 {}
Następnie skompiluj, spakuj i opublikuj zaktualizowaną wtyczkę:
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
Po zaktualizowaniu obrazu kontenera w Artifact Registry musimy utworzyć nową wersję WasmPluginVersion, a następnie zaktualizować –main-wersję wtyczki WasmPlugin, tak aby odwoływała się do nowej wersji.
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
Udało Ci się zaktualizować wersję obrazu kontenera, aby zaimportować ją z Artifact Registry i przekazać do wdrożenia Media CDN.
Przywracanie poprzedniej wersji
Aby przywrócić poprzednią wersję wtyczki, możesz zaktualizować zasób wtyczki Wasm, aby odwoływał się do poprzedniej wersji.
Najpierw podajemy dostępne wersje:
gcloud alpha service-extensions wasm-plugin-versions list --wasm-plugin=my-wasm-plugin-resource
Powinny się wyświetlić dane wyjściowe:
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... ... ...
Następnie aktualizujemy zasób wtyczki Wasm, aby odwoływał się do poprzedniej wersji – „a2a8ce”:
$ gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource \ --main-version="a2a8ce"
Gdy operacja się powiedzie, powinny pojawić się te dane wyjściowe:
✓ WASM Plugin [my-wasm-plugin-resource] is now serving version "a2a8ce"
Media CDN zapisuje skrót obrazu obrazu Dockera za każdym razem, gdy tworzony jest nowy zasób wtyczki Wasm, przy przywracaniu będzie używana wersja kodu prowadzona przed ostatnim wdrożeniem.
gcloud alpha service-extensions wasm-plugins describe my-wasm-plugin-resource \ --expand-config
W przypadku wersji „a2a8ce” jest to wersja z skrótem 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"
Usuwanie działania WasmAction WasmPlugin
Aby usunąć działanie WasmAction, WasmPlugin i powiązane wersje WasmPluginVersion, wykonaj te czynności.
Najpierw usuń odwołanie do działania WasmAction w konfiguracji Media CDN EdgeCacheService.
Wiersz referencyjny do usunięcia:
wasmAction: "my-wasm-action-resource"
Następnie aktualizujemy zmienioną konfigurację EdgeCacheService.
gcloud alpha edge-cache services import prod-media-service --source=my-service.yaml
Następnie zaktualizuj główną wersję wtyczki WasmPlugin do pustego ciągu "".
gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource --main-version=
""
Na koniec wykonaj po kolei podane niżej czynności usuwania.
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. Uporządkuj środowisko modułu
Po ukończeniu modułu CodeLab nie zapomnij wyczyścić zasobów. W przeciwnym razie będą one nadal działać i generować koszty.
Następujące polecenia powodują usunięcie usługi Media CDN EdgeCache, konfiguracji EdgeCache i wtyczki rozszerzeń usług. Wykonaj po kolei te czynności.
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
Każde z powyższych poleceń powinno wymagać potwierdzenia usunięcia zasobu.
12. Gratulacje!
Gratulujemy ukończenia ćwiczenia z programowania w usłudze Media CDN w zakresie rozszerzeń usług.
Omówione zagadnienia
- Jak skonfigurować Media CDN z zasobnikiem Cloud Storage ustawionym jako punkt początkowy
- Jak utworzyć wtyczkę rozszerzenia usługi z niestandardowym uwierzytelnianiem HTTP i powiązać ją z Media CDN
- Jak sprawdzić, czy wtyczka rozszerzenia usługi działa zgodnie z oczekiwaniami
- (opcjonalnie) Jak zarządzać wtyczką rozszerzenia usług, np. aktualizować, odwoływać się do niej, wycofywać ją i usuwać
Co dalej?
Zapoznaj się z tymi ćwiczeniami z programowania...
Więcej informacji
- Wczytywanie skryptu service worker o wysokiej wydajności
- Strategie buforowania przez mechanizmy Service Worker oparte na typach żądań