创建插件

本页面介绍了如何创建 Service Extensions 插件,以便您 使用 Google Cloud 服务实现可扩展性。

此功能处于 Media CDN 的预览版阶段。

如需了解产品概览,请参阅 Service Extensions 概览

准备工作

  1. 准备并上传创建插件所需的文件

  2. 获取所需的 Identity and Access Management (IAM) 角色和权限。

  3. 启用 Network Services API(如果尚未启用)。

    gcloud services enable networkservices.googleapis.com
    
  4. 对于 Media CDN 插件,如果您打算启用日志记录,请启用 Network Actions API。

    gcloud services enable networkactions.googleapis.com
    

创建插件资源

如要创建插件资源,您需要指定包含插件代码的映像,并指定插件的标签和日志记录选项。

控制台

如需创建插件,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Service Extensions 页面。

    前往 Service Extensions

  2. 点击插件 标签页。

  3. 点击创建插件

  4. 基本信息 部分中,执行以下操作:

    1. 对于范围,选择全球区域级

      如果您将范围设置为区域级,请同时选择相应区域。

    2. 输入唯一的插件名称。

      名称必须以小写字母开头,后面最多可跟 62 个小写字母、数字或连字符,但不能以连字符结尾。

    3. 可选:输入简短的插件说明,最多 1024 个字符。

  5. Wasm 映像 部分中,执行以下操作:

    1. 对于插件版本名称,指定插件版本的名称。

      名称必须以小写字母开头,后面最多可跟 62 个小写字母、数字或连字符,但不能以连字符结尾。

    2. 可选:对于插件版本说明,输入简短的 插件版本说明,最多 1024 个字符。

    3. 对于映像网址,输入 具有 Wasm 模块的通用制品或容器映像 在 Artifact Registry 窗格中的网址。使用通用代码库的选项 处于 预览版阶段

      如果您想在 Docker 代码库中指定容器映像,也可以点击选择 进行浏览和选择。Artifact Registry 窗格会显示与当前项目关联的代码库中的文件夹。

      如需从其他项目中选择映像, 请确保 Service Extensions 有权访问该映像, 然后点击项目名称旁边的更改

  6. 可选:在插件配置 部分中,如需将 配置数据 与插件相关联,请选中添加插件配置 复选框,然后 选择以下任一选项:

  7. 可选:在标签 部分中,点击添加标签 。然后,在显示的行中,执行以下操作:

    1. 对于,输入键名称。
    2. 对于,输入该键的值。

    您最多可以添加 64 个键值对。如需添加更多键值对,请点击添加标签

    如需详细了解标签,请参阅 为项目创建和更新标签

  8. 加密 部分中,选择插件的加密机制。此选项仅适用于区域级插件。

    • Google 管理的加密密钥 。使用 Google 默认加密机制加密插件内容 。
    • Cloud KMS 密钥 。使用通过 Cloud Key Management Service 创建的 客户管理的加密密钥 加密插件内容。在这种情况下,对于 密钥管理类型,选择 Cloud KMS。然后,选择一个 Cloud KMS 密钥。
  9. 可选:在日志记录 部分中,选择启用日志记录 ,然后执行以下操作:

    • 对于采样率,指定一个介于01之间的值。值 0 表示不存储日志消息。默认值 1 表示存储所有日志消息。介于 0.01.0 之间的浮点值表示存储一部分日志消息。

    • 对于最低日志级别,选择要导出到 Cloud Logging 的插件日志消息的最低 严重级别 。默认值为 Info and higher

  10. 点击创建

gcloud

  1. 运行 gcloud service-extensions wasm-plugins create 命令以创建插件:

    gcloud service-extensions wasm-plugins create WASM_PLUGIN \
        --description=PLUGIN_DESCRIPTION \
        --location=LOCATION \
        --labels=[LABELS,...] \
        --log-config=[LOG_CONFIG,...] \
        --image=IMAGE \
        --main-version=MAIN_VERSION \
        --plugin-config=PLUGIN_CONFIG |
            --plugin-config-file=PLUGIN_CONFIG_FILE |
            --plugin-config-uri=PLUGIN_CONFIG_URI \
        --kms-key-name=KEY_NAME
    

    替换以下内容:

    • WASM_PLUGIN:插件的 ID 或完全限定名称
    • PLUGIN_DESCRIPTION:插件的说明
    • LOCATION:插件的位置,可以是 global 或区域
    • LABELS:以英文逗号分隔的键值对形式的标签
    • LOG_CONFIG:插件的日志记录选项。 当 enable 选项设置为 false 时,系统不会捕获插件的日志。如需启用日志记录,请将 enable 选项设置为 true。然后,指定以下详细信息:

      • sample-rate:活动日志的采样率,介于 01 之间。值 0 表示不存储日志消息。默认值 1 表示存储所有日志消息。介于 0.01.0 之间的浮点值表示存储一部分日志消息。

      • min-log-level:要导出到 Cloud Logging 的插件日志消息的最低 严重级别 。默认值为 INFO

    • IMAGE:包含存储在 Artifact Registry 代码库中的 Wasm 模块的 制品的 URI。在指定来自其他项目的 容器映像之前,请确保 Service Extensions 有权访问该映像

    • MAIN_VERSION:要创建并设置为主要(活跃)版本的插件版本的 ID。

    • PLUGIN_CONFIGPLUGIN_CONFIG_FILEPLUGIN_CONFIG_URI:可选配置数据,可以分别指定为文本、本地文件或 Artifact Registry 中的容器映像。

    • KEY_NAME:对于区域级插件,客户管理的加密密钥的完全限定名称,格式如下:projects/PROJECT/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME

      替换以下内容:

      • PROJECT:包含密钥的项目的 ID
      • LOCATION:密钥的位置
      • KEYRING_NAME:密钥环名称
      • KEY_NAME:密钥名称

      如果未指定此选项,则使用 Google 默认加密机制

    例如:

    gcloud service-extensions wasm-plugins create my-plugin \
        --description="This is my plugin." \
        --log-config=enable=true,sample-rate=0.5,min-log-level=INFO \
        --labels=key1=value1,key2=value2 \
        --image=...-docker.pkg.dev/my-project/repository/container:tag \
        --main-version=v1 \
        --plugin-config-file=config.txt
    

    如需部署新版本,请使用 gcloud service-extensions wasm-plugins update 命令。 指定新的映像和版本名称:

    gcloud service-extensions wasm-plugins update my-plugin \
        --image=...-docker.pkg.dev/my-project/repository/container:tag \
        --main-version=v2
    

如需运行这些插件,您可以配置 Cloud Load Balancing 扩展程序Media CDN 扩展程序

访问其他项目中的映像

如需从其他项目中选择映像, Service Extensions 服务代理必须有权访问项目代码库 ,并且根据 Wasm 模块的打包方式,对项目拥有以下权限之一:

  • 对于通用制品:artifactregistry.files.download
  • 对于容器映像:artifactregistry.repositories.downloadArtifacts

Service Extensions 服务代理的命名方式如下:

service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com

PROJECT_NUMBER 替换为您的 项目编号

后续步骤