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によって有効化された拡張機能を使用する前に、次の手順を実行する必要があります。
- クラスタの準備
- 使用する拡張機能を使用してビルドされたQueue Proxyイメージを使用していることを確認してください - QPOptionsを使用したQueue Proxyイメージの拡張を参照してください。
- クラスタのconfig-featuresが
queueproxy.mount-podinfo: allowed
に設定されていることを確認してください。Queue Proxy Pod Infoの有効化で詳細を確認してください。 - サービスの作成の前提条件を満たしてください。
手順¶
ヒント
次のコマンドは、このサービスに対してtest-gate
拡張機能を有効化および構成しながら、helloworld-go
サンプルサービスを作成します。有効化する拡張機能や拡張機能の構成など、これらのコマンドを変更できます。
サンプルサービスの作成
-
次の例を使用して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"
-
次のコマンドを実行して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"}
で構成されます。