Il codice personalizzato che crei per i plug-in Service Extensions deve essere pacchettizzato e caricato in Artifact Registry prima che altri servizi possano accedervi. Questa pagina descrive come creare il codice del plug-in, creare il pacchetto del codice e caricarlo in un repository Artifact Registry.
Questa funzionalità è in anteprima per Media CDN.
Per informazioni su Service Extensions, consulta la panoramica di Service Extensions.
Prima di iniziare, consulta le best practice per la scrittura del codice del plug-in.
Per altri esempi, vedi Esempi di codice per i plug-in.
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Network Services, Network Actions, Artifact Registry, Cloud Build, Cloud Logging, and Cloud Monitoring APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Network Services, Network Actions, Artifact Registry, Cloud Build, Cloud Logging, and Cloud Monitoring APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init
Configura la toolchain
C++
L'SDK Proxy-Wasm C++ consente agli sviluppatori di utilizzare C++ per implementare plug-in WebAssembly (Wasm) per Service Extensions. L'SDK utilizza la toolchain C++ WebAssembly Emscripten, nonché altre librerie, come protobuf e, facoltativamente, Abseil.
Poiché la creazione di plug-in scritti in C++ dipende da versioni specifiche di questi strumenti e librerie, ti consigliamo di utilizzare l'immagine Docker fornita dall'SDK Proxy-Wasm C++. Le istruzioni per C++ in questa pagina utilizzano il metodo Docker. Per creare plug-in C++ senza utilizzare Docker, consulta la documentazione dell'SDK Proxy-Wasm C++.
Installa Docker se non è già installato. Docker è incluso in Cloud Shell, l'ambiente shell interattivo Google Cloud .
Scarica una copia dell'SDK Proxy-Wasm C++. Il modo più semplice per farlo è clonare il repository Git:
git clone https://github.com/proxy-wasm/proxy-wasm-cpp-sdk.gitCrea l'immagine Docker dell'SDK Proxy-Wasm C++ dal Dockerfile fornito dall'SDK:
cd proxy-wasm-cpp-sdk docker build -t wasmsdk:v3 -f Dockerfile-sdk .Al termine della creazione delle librerie e delle dipendenze dell'SDK, l'immagine Docker risultante viene associata al tag specificato, che in questo esempio è
wasmsdk:v3.
Go
L'SDK Go Proxy-Wasm fornisce un SDK Go completo. Go offre buone prestazioni e un ricco supporto per le librerie di terze parti scritte in Go puro.
Rust
La funzionalità di personalizzazione di Service Extensions viene fornita tramite l'utilizzo di WebAssembly e Proxy-Wasm. WebAssembly supporta diversi linguaggi di programmazione. Google consiglia Rust perché offre un eccellente supporto di WebAssembly e Proxy-Wasm fornisce un SDK Rust completo. Rust offre anche buone prestazioni e una forte sicurezza dei tipi.
-
Al termine della procedura di installazione, segui le istruzioni stampate sulla console per completare la procedura di configurazione.
Aggiungi il supporto Wasm alla toolchain Rust:
rustup target add wasm32-wasip1
Crea il pacchetto del plug-in
C++
Crea una nuova directory separata da
proxy-wasm-cpp-sdk:mkdir myprojectNella directory, crea un Makefile con il seguente contenuto:
# Express any dependencies PROTOBUF= # full / lite / none WASM_DEPS= # absl_base re2 ... # Include the SDK Makefile PROXY_WASM_CPP_SDK=/sdk include ${PROXY_WASM_CPP_SDK}/MakefileAggiungi un file di origine C++ per il plug-in nella stessa directory. I nomi dei file di origine C++ devono corrispondere ai file Wasm a cui fa riferimento il Makefile, con il suffisso
.wasmsostituito da.cc. In questo esempio, il file di origine deve essere denominatomyproject.cc.Aggiungi il codice del plug-in al file di origine.
Il seguente codice sorgente di esempio è un plug-in che riscrive l'host della richiesta ed emette un'intestazione della risposta: