コンテンツへスキップ

QPOptionsによって有効化された拡張機能の使用

QPOptionsは、追加のGoパッケージを使用してQueue Proxyを拡張できるQueue Proxy機能です。たとえば、security-guardリポジトリは、ユーザーサービスを保護するためのランタイムセキュリティ機能を追加することでQueue Proxyを拡張します。

QPOptionsによって有効化された拡張機能を使用してクラスタが設定されたら、サービスは使用する拡張機能とそれらの拡張機能の構成方法を決定できます。拡張機能の有効化と構成については、こちらで説明します。

概要

サービスは、サービスカスタムリソース定義(CRD)のspec.template.metadataの下にqpoption.knative.dev/*アノテーションを追加することで、拡張機能を有効化および構成できます。

qpoption.knative.dev/<ExtensionName>-activate: "enable"という値を設定すると、拡張機能が有効になります。

qpoption.knative.dev/<extension-name>-config-<key>: "<value>"という値を設定すると、key: valueの構成が拡張機能に追加されます。

さらに、サービスは、サービスCRDのspec.template.metadataの下にfeatures.knative.dev/queueproxy-podinfo: enabledアノテーションを追加することで、Pod Infoボリュームがマウントされていることを確認する必要があります。

YAMLファイルを使用するか、kn service create CLIコマンドを使用して、Knativeサービスを作成できます。

前提条件

QPOptionsによって有効化された拡張機能を使用する前に、次の手順を実行する必要があります。

手順

ヒント

次のコマンドは、このサービスに対してtest-gate拡張機能を有効化および構成しながら、helloworld-goサンプルサービスを作成します。有効化する拡張機能や拡張機能の構成など、これらのコマンドを変更できます。

サンプルサービスの作成

  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はアノテーションをサービスデプロイメントのpodSpecに伝播します。サービスポッドが作成されると、Queue Proxyサイドカーはポッドアノテーションを含むボリュームをマウントし、testgate拡張機能を有効にします。これは、testgate拡張機能がQueue Proxyイメージで使用可能な場合に発生します。その後、testgate拡張機能は、構成:{ sender: "Joe", response: "CU"}で構成されます。

サイトトラフィックを理解するために、分析とCookieを使用しています。その目的で、お客様のサイト利用に関する情報はGoogleと共有されます。詳細はこちら。