第10章 イベント設定のチューニング
10.1. Knative Eventing システムのデプロイメント設定のオーバーライド
KnativeEventing
カスタムリソース (CR) の ワークロード
仕様を変更することで、特定のデプロイメントのデフォルト設定をオーバーライドできます。現在、デフォルトの構成設定のオーバーライドは、eventing-controller
、eventing-webhook
、および imc-controller
フィールド、およびプローブの readiness
フィールドと liveness
フィールドでサポートされています。
replicas
の仕様は、Horizontal Pod Autoscaler (HPA) を使用するデプロイのレプリカの数をオーバーライドできず、eventing-webhook
デプロイでは機能しません。
デフォルトでデプロイメントに定義されているプローブのみをオーバーライドできます。
Knative Serving デプロイメントはすべて、以下の例外を除き、デフォルトで readiness および liveness プローブを定義します。
-
net-kourier-controller
および3scale-kourier-gateway
は readiness プローブのみを定義します。 -
net-istio-controller
およびnet-istio-webhook
はプローブを定義しません。
10.1.1. デプロイメント設定のオーバーライド
現在、デフォルトの構成設定のオーバーライドは、eventing-controller
、eventing-webhook
、および imc-controller
フィールド、およびプローブの readiness
フィールドと liveness
フィールドでサポートされています。
replicas
の仕様は、Horizontal Pod Autoscaler (HPA) を使用するデプロイのレプリカの数をオーバーライドできず、eventing-webhook
デプロイでは機能しません。
次の例では、KnativeEventing
CR が eventing-controller
デプロイメントをオーバーライドして、次のようにします。
-
readiness
プローブのタイムアウトeventing-controller
は 10 秒に設定されています。 - デプロイメントには、CPU およびメモリーのリソース制限が指定されています。
- デプロイメントには 3 つのレプリカがあります。
-
example-label:labellabel
が追加されました。 -
example-annotation: annotation
が追加されます。 -
nodeSelector
フィールドは、disktype: hdd
ラベルを持つノードを選択するように設定されます。
KnativeEventing CR の例
apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
workloads:
- name: eventing-controller
readinessProbes: 1
- container: controller
timeoutSeconds: 10
resources:
- container: eventing-controller
requests:
cpu: 300m
memory: 100Mi
limits:
cpu: 1000m
memory: 250Mi
replicas: 3
labels:
example-label: label
annotations:
example-annotation: annotation
nodeSelector:
disktype: hdd
- 1
readiness
およびliveness
プローブオーバーライドを使用して、プローブハンドラーに関連するフィールド (exec
、grpc
、httpGet
、およびtcpSocket
) を除き、Kubernetes API で指定されているデプロイメントのコンテナー内のプローブのすべてのフィールドをオーバーライドできます。
KnativeEventing
CR ラベルおよびアノテーション設定は、デプロイメント自体と結果として生成される Pod の両方のデプロイメントのラベルおよびアノテーションを上書きします。
10.1.2. コンシューマーグループ ID とトピック名の変更
トリガー、ブローカー、チャネルで使用されるコンシューマーグループ ID とトピック名を生成するためのテンプレートを変更できます。
前提条件
- OpenShift Container Platform でクラスターまたは専用の管理者パーミッションを持っている。
-
OpenShift Serverless Operator、Knative Eventing、および
KnativeKafka
カスタムリソース (CR) が OpenShift Container Platform クラスターにインストールされている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
-
OpenShift CLI (
oc
) がインストールされている。
手順
トリガー、ブローカー、チャネルで使用されるコンシューマーグループ ID とトピック名を生成するためのテンプレートを変更するには、
KnativeKafka
リソースを変更します。apiVersion: v1 kind: KnativeKafka metadata: name: knative-kafka namespace: knative-eventing # ... spec: config: config-kafka-features: triggers.consumergroup.template: <template> 1 brokers.topic.template: <template> 2 channels.topic.template: <template> 3
- 1
- トリガーで使用されるコンシューマーグループ ID を生成するためのテンプレート。有効な Go
text/template
値を使用します。デフォルトは{% raw %}"knative-trigger-{{ .Namespace }}-{{ .Name }}"{% endraw %}
です。 - 2
- ブローカーが使用する Kafka トピック名を生成するためのテンプレート。有効な Go
text/template
値を使用します。デフォルトは{% raw %}"knative-broker-{{ .Namespace }}-{{ .Name }}"{% endraw %}
です。 - 3
- チャネルで使用される Kafka トピック名を生成するためのテンプレート。有効な Go
text/template
値を使用します。デフォルトは{% raw %}"messaging-kafka.{{ .Namespace }}.{{ .Name }}"{% endraw %}
です。
テンプレート設定の例
apiVersion: v1 kind: KnativeKafka metadata: name: knative-kafka namespace: knative-eventing # ... spec: config: config-kafka-features: triggers.consumergroup.template: "{% raw %}"knative-trigger-{{ .Namespace }}-{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}" brokers.topic.template: "{% raw %}"knative-broker-{{ .Namespace }}-{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}" channels.topic.template: "{% raw %}"messaging-kafka.{{ .Namespace }}.{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}"
KnativeKafka
YAML ファイルを適用します。$ oc apply -f <knative_kafka_filename>