Le code personnalisé que vous créez pour les plug-ins Service Extensions doit être empaqueté et importé dans Artifact Registry avant que d'autres services puissent y accéder. Cette page explique comment créer du code de plug-in, l'empaqueter et l'importer dans un dépôt Artifact Registry.
Cette fonctionnalité est disponible en version preview pour Media CDN.
Pour en savoir plus sur les extensions de service, consultez la présentation des extensions de service.
Avant de commencer, consultez les bonnes pratiques pour écrire du code de plug-in.
Pour en savoir plus, consultez Exemples de code pour les plug-ins.
Avant de commencer
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
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.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
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.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
Configurer la chaîne d'outils
C++
Le SDK Proxy-Wasm C++ permet aux développeurs d'utiliser C++ pour implémenter des plug-ins WebAssembly (Wasm) pour les Service Extensions. Le SDK utilise la chaîne d'outils WebAssembly C++ Emscripten, ainsi que d'autres bibliothèques, telles que protobuf et, éventuellement, Abseil.
Étant donné que la création de plug-ins écrits en C++ dépend de versions spécifiques de ces outils et bibliothèques, nous vous recommandons d'utiliser l'image Docker fournie par le SDK Proxy-Wasm C++. Les instructions pour C++ sur cette page utilisent la méthode Docker. Pour créer des plug-ins C++ sans utiliser Docker, consultez la documentation du SDK Proxy-Wasm C++.
Installez Docker si ce n'est pas déjà fait. Docker est inclus dans Cloud Shell, l'environnement de shell interactif Google Cloud .
Téléchargez une copie du SDK C++ Proxy-Wasm. La façon la plus simple de le faire est de cloner le dépôt Git :
git clone https://github.com/proxy-wasm/proxy-wasm-cpp-sdk.gitCréez l'image Docker du SDK Proxy-Wasm C++ à partir du fichier Dockerfile fourni par le SDK :
cd proxy-wasm-cpp-sdk docker build -t wasmsdk:v3 -f Dockerfile-sdk .Une fois la commande terminée, les bibliothèques et les dépendances du SDK sont créées. L'image Docker résultante est associée au tag spécifié, qui est
wasmsdk:v3dans cet exemple.
Go
Le SDK Go Proxy-Wasm fournit un SDK Go complet. Go offre de bonnes performances et une prise en charge étendue des bibliothèques tierces écrites en Go pur.
Rust
La fonctionnalité de personnalisation des Service Extensions est fournie par l'utilisation de WebAssembly et de Proxy-Wasm. WebAssembly est compatible avec plusieurs langages de programmation. Google recommande Rust, car il offre une excellente compatibilité avec WebAssembly et Proxy-Wasm fournit un SDK Rust complet. Rust offre également de bonnes performances et une sécurité de type élevée.
Installez la chaîne d'outils Rust.
À la fin du processus d'installation, suivez les instructions imprimées sur la console pour terminer la configuration.
Ajoutez la prise en charge de Wasm à la chaîne d'outils Rust :
rustup target add wasm32-wasip1
Créer le package de plug-in
C++
Créez un répertoire distinct de
proxy-wasm-cpp-sdk:mkdir myprojectDans le répertoire, créez un fichier Makefile avec le contenu suivant :
# 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}/MakefileAjoutez un fichier source C++ pour le plug-in dans le même répertoire. Les noms des fichiers sources C++ doivent correspondre aux fichiers Wasm ciblés par le fichier Makefile, avec le suffixe
.wasmremplacé par.cc. Dans cet exemple, le fichier source doit être nommémyproject.cc.Ajoutez le code de votre plug-in au fichier source.
L'exemple de code source suivant est un plug-in qui réécrit l'hôte de la requête et émet un en-tête de réponse :
La méthode
onRequestHeadersest un rappel que les extensions de service invoquent.
Go
Créez un répertoire pour le plug-in :
mkdir go-pluginDans le répertoire, créez un fichier
go.modà l'aide de l'outil Go :go mod init go-pluginDans le même répertoire, créez un fichier source nommé
main.goet ajoutez-y le code de votre plug-in.L'exemple de code source suivant est un plug-in qui réécrit l'hôte de la requête et émet un en-tête de réponse :