跳到内容

注意

此集成目前处于 Alpha 阶段。我们正尝试评估其使用情况,因此如果您正在使用或对此感兴趣,请通过 #knative-serving Slack 频道与我们联系。

使用 QPOptions 启用的扩展

QPOptions 是一项队列代理 (Queue Proxy) 功能,它能够使用额外的 Go 包来扩展队列代理。例如,security-guard 仓库通过添加运行时安全功能来保护用户服务,从而扩展了队列代理。

一旦您的集群使用 QPOptions 启用的扩展进行了设置,服务就可以决定它希望使用哪些扩展以及如何配置这些扩展。激活和配置扩展的说明见此处。

概述

服务可以通过在 Service 自定义资源定义 (CRD) 的 `spec.template.metadata` 下添加 qpoption.knative.dev/* 注解来激活和配置扩展。

设置值为:qpoption.knative.dev/<ExtensionName>-activate: "enable" 可激活该扩展。

设置值为:qpoption.knative.dev/<extension-name>-config-<key>: "<value>" 可向该扩展添加一个配置:key: value

此外,服务必须确保 Pod 信息卷 (Pod Info volume) 已挂载,方法是在 Service CRD 的 `spec.template.metadata` 下添加 features.knative.dev/queueproxy-podinfo: enabled 注解。

您可以通过应用 YAML 文件或使用 kn service create CLI 命令来创建 Knative 服务。

先决条件

在使用 QPOptions 启用的扩展之前,您必须

步骤

提示

以下命令创建一个 helloworld-go 示例服务,同时为该服务激活并配置 test-gate 扩展。您可以修改这些命令,包括要激活的扩展和扩展的配置。

创建一个示例服务

  1. 使用以下示例创建 YAML 文件

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
      namespace: default
    spec:
      template:
        metadata:
            annotations:
              features.knative.dev/queueproxy-podinfo: enabled
              qpoption.knative.dev/testgate-activate: enable
              qpoption.knative.dev/testgate-config-response: CU
              qpoption.knative.dev/testgate-config-sender: Joe
        spec:
          containers:
            - image: ghcr.io/knative/helloworld-go:latest
              env:
                - name: TARGET
                  value: "World"
    
  2. 通过运行命令应用 YAML 文件

    kubectl apply -f <filename>.yaml
    
    其中 <filename> 是您在上一步中创建的文件的名称。

kn service create helloworld-go \
    --image ghcr.io/knative/helloworld-go:latest \
    --env TARGET=World \
    --annotation features.knative.dev/queueproxy-podinfo=enabled \
    --annotation qpoption.knative.dev/testgate-activate=enable \
    --annotation qpoption.knative.dev/testgate-config-response=Goodbye \
    --annotation qpoption.knative.dev/testgate-config-sender=Joe

创建服务后,Knative 会将这些注解传播到服务的部署 (deployment) 的 podSpec。当创建服务 Pod 时,队列代理 sidecar 会挂载一个包含 pod 注解的卷,并激活 testgate 扩展。如果 testgate 扩展在队列代理镜像中可用,则会发生这种情况。然后,testgate 扩展将使用配置:{ sender: "Joe", response: "CU"} 进行配置。

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。