O código personalizado criado para plug-ins do Service Extensions precisa ser empacotado e enviado ao Artifact Registry antes que outros serviços possam acessá-lo. Esta página descreve como criar código de plug-in, empacotar o código e fazer upload dele para um repositório do Artifact Registry.
Esse recurso está em pré-lançamento para a Media CDN.
Para mais informações sobre as Service Extensions, consulte Visão geral das Service Extensions.
Antes de começar, consulte as práticas recomendadas para escrever código de plug-in.
Para mais exemplos, consulte Exemplos de código para plug-ins.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
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.-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte 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.-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
Configurar o conjunto de ferramentas
C++
O SDK C++ do Proxy-Wasm permite que os desenvolvedores usem C++ para implementar plug-ins do WebAssembly (Wasm) para Service Extensions. O SDK usa a cadeia de ferramentas WebAssembly C++ Emscripten, além de outras bibliotecas, como protobuf e, opcionalmente, Abseil.
Como a criação de plug-ins escritos em C++ depende de versões específicas dessas ferramentas e bibliotecas, recomendamos usar a imagem Docker fornecida pelo SDK do Proxy-Wasm C++. As instruções para C++ nesta página usam o método Docker. Para criar plug-ins C++ sem usar o Docker, consulte a documentação do SDK Proxy-Wasm C++.
Instale o Docker se ele ainda não estiver instalado. O Docker está incluído no Cloud Shell, o ambiente shell interativo Google Cloud .
Faça o download de uma cópia do SDK C++ do Proxy-Wasm. A maneira mais simples de fazer isso é clonar o repositório Git:
git clone https://github.com/proxy-wasm/proxy-wasm-cpp-sdk.gitCrie a imagem Docker do SDK C++ do Proxy-Wasm com o Dockerfile fornecido pelo SDK:
cd proxy-wasm-cpp-sdk docker build -t wasmsdk:v3 -f Dockerfile-sdk .Quando o comando terminar de criar as bibliotecas e dependências do SDK, a imagem Docker resultante será associada à tag especificada, que é
wasmsdk:v3neste exemplo.
Go
O SDK do Proxy-Wasm Go oferece um SDK do Go completo. O Go oferece bom desempenho e suporte completo para bibliotecas de terceiros escritas em Go puro.
Rust
A capacidade de personalização das Service Extensions é fornecida pelo uso do WebAssembly e do Proxy-Wasm. O WebAssembly é compatível com várias linguagens de programação. O Google recomenda o Rust porque ele oferece excelente suporte ao WebAssembly, e o Proxy-Wasm fornece um SDK Rust completo. O Rust também oferece bom desempenho e segurança de tipos.
Instale a cadeia de ferramentas do Rust.
Ao final do processo de instalação, siga as instruções impressas no console para concluir a configuração.
Adicione suporte ao Wasm ao conjunto de ferramentas do Rust:
rustup target add wasm32-wasip1
Criar o pacote de plug-in
C++
Crie um novo diretório, separado de
proxy-wasm-cpp-sdk:mkdir myprojectNo diretório, crie um Makefile com o seguinte conteúdo:
# 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}/MakefileAdicione um arquivo de origem C++ para o plug-in no mesmo diretório. Os nomes dos arquivos de origem C++ precisam corresponder aos arquivos Wasm que o Makefile segmenta, com o sufixo
.wasmsubstituído por.cc. Neste exemplo, o arquivo de origem precisa ser chamado demyproject.cc.Adicione o código do plug-in ao arquivo de origem.
O exemplo de código-fonte a seguir é um plug-in que reescreve o host da solicitação e emite um cabeçalho de resposta: