コンテンツにスキップ

Eventing Operatorカスタムリソースの設定

KnativeEventingカスタムリソース(CR)の設定を変更することで、Knative Eventing Operatorを設定できます。

デフォルトチャネルの設定

KafkaChannelなどの異なるチャネル実装を使用している場合、またはInMemoryChannelの特定の設定をデフォルト設定にしたい場合は、default-ch-webhook ConfigMapを更新することでデフォルトの動作を変更できます。

これはKnativeEventing CRを変更することで行えます。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  config:
    default-ch-webhook:
      default-ch-config: |
        clusterDefault:
          apiVersion: messaging.knative.dev/v1beta1
          kind: KafkaChannel
          spec:
            numPartitions: 10
            replicationFactor: 1
        namespaceDefaults:
          my-namespace:
            apiVersion: messaging.knative.dev/v1
            kind: InMemoryChannel
            spec:
              delivery:
                backoffDelay: PT0.5S
                backoffPolicy: exponential
                retry: 5

注記

clusterDefault設定は、グローバルなクラスタ全体のデフォルトチャネルタイプを決定します。 namespaceDefaults設定を使用することで、個々の名前空間のチャネルデフォルトを設定できます。

Brokerのデフォルトチャネルの設定

ChannelベースのBrokerを使用している場合、config-br-default-channel ConfigMapを更新することで、BrokerのデフォルトChannelタイプをInMemoryChannelからKafkaChannelに変更できます。

これはKnativeEventing CRを変更することで行えます。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  config:
    config-br-default-channel:
      channel-template-spec: |
        apiVersion: messaging.knative.dev/v1beta1
        kind: KafkaChannel
        spec:
          numPartitions: 6
          replicationFactor: 1

プライベートリポジトリとプライベートシークレット

Knative Eventing Operator CRは、Knative Serving Operator CRと同じ方法で設定されます。 プライベートリポジトリとプライベートシークレットに関するドキュメントを参照してください。

Knative Eventingも、各Deploymentリソース内に1つのコンテナのみを指定します。ただし、コンテナは親Deploymentと同じ名前を使用しないため、Knative Eventingのコンテナ名は、Knative Servingの場合と同じ一意の識別子ではありません。

各Deploymentリソース内のコンテナのリスト

コンポーネント Deployment名 コンテナ名
コアEventing eventing-controller eventing-controller
コアEventing eventing-webhook eventing-webhook
Eventing Broker broker-controller eventing-controller
インメモリChannel imc-controller controller
インメモリChannel imc-dispatcher dispatcher

defaultフィールドを使用して、定義済みの形式でイメージを置き換えることができます。ただし、コンテナ名が、たとえばeventing-controllerなど、一意の識別子でない場合は、deployment/containerを一意のキーとして指定することで、overrideフィールドを使用して置き換える必要があります。

一部のイメージは、Knative Eventingの環境変数を使用して定義されています。これらは、overrideフィールドを利用することで置き換えることができます。

シークレットなしで定義済み形式のイメージをダウンロードする

この例では、簡略化された形式docker.io/knative-images/${NAME}:{CUSTOM-TAG}を使用してKnativeEventing CRで定義できるカスタムイメージリンクを定義する方法を示します。

この例では

  • カスタムタグlatestがすべてのイメージに使用されます。
  • すべてのイメージリンクは、シークレットを使用せずにアクセスできます。
  • イメージは、受け入れられる形式docker.io/knative-images/${NAME}:{CUSTOM-TAG}で定義されています。

イメージリンクを定義するには

  1. イメージを次のイメージタグにプッシュします。

    Deployment コンテナ Dockerイメージ
    eventing-controller eventing-controller docker.io/knative-images/eventing-controller:latest
    eventing-webhook docker.io/knative-images/eventing-webhook:latest
    broker-controller eventing-controller docker.io/knative-images/broker-eventing-controller:latest
    controller docker.io/knative-images/controller:latest
    dispatcher docker.io/knative-images/dispatcher:latest
  2. 次の内容でKnativeEventing CRを定義します。

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeEventing
    metadata:
      name: knative-eventing
      namespace: knative-eventing
    spec:
      registry:
        default: docker.io/knative-images/${NAME}:latest
        override:
          broker-controller/eventing-controller: docker.io/knative-images-repo1/broker-eventing-controller:latest
    

次のコマンドを実行して、同等の変更を行うこともできます。

```bash
kn operator configure images --component eventing --imageKey default --imageURL docker.io/knative-images/${NAME}:latest -n knative-eventing
kn operator configure images --component eventing --deployName broker-controller --imageKey eventing-controller --imageURL docker.io/knative-images-repo1/broker-eventing-controller:latest -n knative-eventing
```

- `${NAME}` maps to the container name in each `Deployment` resource.
- `default` is used to define the image format for all containers, except the container `eventing-controller` in the deployment `broker-controller`. To replace the image for this container, use the `override`
field to specify individually, by using `broker-controller/eventing-controller` as the key.

シークレットなしで異なるリポジトリからイメージをダウンロードする

カスタムイメージリンクが統一された形式で定義されていない場合は、KnativeEventing CRに各リンクを個別に含める必要があります。

たとえば、次のイメージのリストが与えられたとします。

Deployment コンテナ Dockerイメージ
eventing-controller eventing-controller docker.io/knative-images-repo1/eventing-controller:latest
eventing-webhook docker.io/knative-images-repo2/eventing-webhook:latest
controller docker.io/knative-images-repo3/imc-controller:latest
dispatcher docker.io/knative-images-repo4/imc-dispatcher:latest
broker-controller eventing-controller docker.io/knative-images-repo5/broker-eventing-controller:latest

リスト全体が含まれるようにKnativeEventing CRを変更する必要があります。たとえば、

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  registry:
    override:
      eventing-controller/eventing-controller: docker.io/knative-images-repo1/eventing-controller:latest
      eventing-webhook/eventing-webhook: docker.io/knative-images-repo2/eventing-webhook:latest
      imc-controller/controller: docker.io/knative-images-repo3/imc-controller:latest
      imc-dispatcher/dispatcher: docker.io/knative-images-repo4/imc-dispatcher:latest
      broker-controller/eventing-controller: docker.io/knative-images-repo5/broker-eventing-controller:latest

次のコマンドを実行して、同等の変更を行うこともできます。

kn operator configure images --component eventing --deployName eventing-controller --imageKey eventing-controller --imageURL docker.io/knative-images-repo1/eventing-controller:latest -n knative-eventing
kn operator configure images --component eventing --deployName eventing-webhook --imageKey eventing-webhook --imageURL docker.io/knative-images-repo2/eventing-webhook:latest -n knative-eventing
kn operator configure images --component eventing --deployName imc-controller --imageKey controller --imageURL docker.io/knative-images-repo3/imc-controller:latest -n knative-eventing
kn operator configure images --component eventing --deployName imc-dispatcher --imageKey dispatcher --imageURL docker.io/knative-images-repo4/imc-dispatcher:latest -n knative-eventing
kn operator configure images --component eventing --deployName broker-controller --imageKey eventing-controller --imageURL docker.io/knative-images-repo5/broker-eventing-controller:latest -n knative-eventing

環境変数で定義されたイメージを置き換える場合は、KnativeEventing CRを変更する必要があります。たとえば、Deployment imc-controllerのコンテナcontrollerで環境変数DISPATCHER_IMAGEで定義されたイメージを置き換え、ターゲットイメージがdocker.io/knative-images-repo5/DISPATCHER_IMAGE:latestである場合、KnativeEventing CRは次のようになります。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  registry:
    override:
      eventing-controller/eventing-controller: docker.io/knative-images-repo1/eventing-controller:latest
      eventing-webhook/eventing-webhook: docker.io/knative-images-repo2/eventing-webhook:latest
      imc-controller/controller: docker.io/knative-images-repo3/imc-controller:latest
      imc-dispatcher/dispatcher: docker.io/knative-images-repo4/imc-dispatcher:latest
      broker-controller/eventing-controller: docker.io/knative-images-repo5/broker-eventing-controller:latest
      DISPATCHER_IMAGE: docker.io/knative-images-repo5/DISPATCHER_IMAGE:latest

次のコマンドを実行して、同等の変更を行うこともできます。

kn operator configure images --component eventing --deployName eventing-controller --imageKey eventing-controller --imageURL docker.io/knative-images-repo1/eventing-controller:latest -n knative-eventing
kn operator configure images --component eventing --deployName eventing-webhook --imageKey eventing-webhook --imageURL docker.io/knative-images-repo2/eventing-webhook:latest -n knative-eventing
kn operator configure images --component eventing --deployName imc-controller --imageKey controller --imageURL docker.io/knative-images-repo3/imc-controller:latest -n knative-eventing
kn operator configure images --component eventing --deployName imc-dispatcher --imageKey dispatcher --imageURL docker.io/knative-images-repo4/imc-dispatcher:latest -n knative-eventing
kn operator configure images --component eventing --deployName broker-controller --imageKey eventing-controller --imageURL docker.io/knative-images-repo5/broker-eventing-controller:latest -n knative-eventing
kn operator configure images --component eventing --imageKey DISPATCHER_IMAGE -controller --imageURL docker.io/knative-images-repo5/DISPATCHER_IMAGE:latest -n knative-eventing

シークレットを使用してイメージをダウンロードする

イメージリポジトリにアクセスするためにプライベートシークレットが必要な場合は、imagePullSecrets属性をKnativeEventing CRに追加する必要があります。

この例では、regcredという名前のシークレットを使用します。独自のプライベートシークレットを作成するには、Kubernetesのドキュメントを参照してください。

シークレットを作成した後、KnativeEventing CRを編集します。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  registry:
    ...
    imagePullSecrets:
      - name: regcred

imagePullSecretsフィールドには、シークレットのリストが必要です。イメージにアクセスするために複数のシークレットを追加できます。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  registry:
    ...
    imagePullSecrets:
      - name: regcred
      - name: regcred-2
      ...

デフォルトのBrokerクラスの設定

Knative Eventingでは、ユーザーがBrokerクラスを指定しない場合にデフォルトのBrokerクラスを定義できます。Operatorは、デフォルトでChannelBasedBrokerとMTChannelBasedBrokerの2つのBrokerクラスを提供します。

defaultBrokerClassフィールドは、使用するクラスを示します。空の場合、ChannelBasedBrokerが使用されます。

次のCRの例では、MTChannelBasedBrokerをデフォルトとして指定しています。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  defaultBrokerClass: MTChannelBasedBroker

システムDeploymentのオーバーライド

特定のDeploymentの設定をオーバーライドしたい場合は、CRのspec.deploymentsを使用して設定をオーバーライドできます。現在、resourcesreplicaslabelsannotations、およびnodeSelectorがサポートされています。

リソースのオーバーライド

KnativeEventingカスタムリソースは、Deploymentに基づいてKnativeシステムコンテナのシステムリソースを設定できます。リクエストと制限は、eventing-controllereventing-webhookimc-controllerなど、Deployment内で使用可能なすべてのコンテナに対して設定できます。

たとえば、次のKnativeEventingリソースは、Deployment eventing-controller内のコンテナeventing-controllerが0.3 CPUと100MBのRAMをリクエストし、1 CPUと250MBのRAMのハード制限を設定するように設定します。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  workloads:
  - name: eventing-controller
    resources:
    - container: eventing-controller
      requests:
        cpu: 300m
        memory: 100M
      limits:
        cpu: 1000m
        memory: 250M

次のコマンドを実行して、同等の変更を行うこともできます。

kn operator configure resources --component eventing --deployName eventing-controller --container eventing-controller --requestCPU 300m --requestMemory 100M --limitCPU 1000m --limitMemory 250M -n knative-eventing

nodeSelectorのオーバーライド

KnativeEventingリソースは、Knative Eventing DeploymentリソースのnodeSelectorをオーバーライドできます。たとえば、次の容認を追加したい場合、

nodeSelector:
  disktype: hdd

Deployment eventing-controllerに、以下のようにKnativeEventing CRを変更する必要があります。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  workloads:
  - name: eventing-controller
    nodeSelector:
      disktype: hdd

次のコマンドを実行して、同等の変更を行うこともできます。

kn operator configure nodeSelector --component eventing --deployName eventing-controller --key disktype --value hdd -n knative-eventing

容認のオーバーライド

KnativeEventingリソースは、Knative Eventing Deploymentリソースの容認をオーバーライドできます。たとえば、次の容認を追加したい場合、

tolerations:
- key: "key1"
  operator: "Equal"
  value: "value1"
  effect: "NoSchedule"

Deployment eventing-controllerに、以下のようにKnativeEventing CRを変更する必要があります。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  workloads:
  - name: eventing-controller
    tolerations:
    - key: "key1"
      operator: "Equal"
      value: "value1"
      effect: "NoSchedule"

次のコマンドを実行して、同等の変更を行うこともできます。

kn operator configure tolerations --component eventing --deployName eventing-controller --key key1 --operator Equal --value value1 --effect NoSchedule -n knative-eventing

affinityのオーバーライド

KnativeEventingリソースは、Knative Eventing Deploymentリソースのaffinity(nodeAffinity、podAffinity、podAntiAffinityを含む)をオーバーライドできます。たとえば、次のnodeAffinityを追加したい場合、

affinity:
  nodeAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 1
      preference:
        matchExpressions:
        - key: disktype
          operator: In
          values:
          - ssd

Deployment eventing-controllerに、以下のようにKnativeEventing CRを変更する必要があります。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  workloads:
  - name: eventing-controller
    affinity:
      nodeAffinity:
        preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 1
          preference:
            matchExpressions:
            - key: disktype
              operator: In
              values:
              - ssd

環境変数のオーバーライド

KnativeEventingリソースは、Knative Eventing Deploymentリソースのコンテナの環境変数をオーバーライドまたは追加できます。たとえば、Deployment eventing-controllerのコンテナeventing-controllerの環境変数METRICS_DOMAINの値を "knative.dev/my-repo" に変更したい場合は、以下のようにKnativeEventing CRを変更する必要があります。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  workloads:
  - name: eventing-controller
    env:
    - container: eventing-controller
      envVars:
      - name: METRICS_DOMAIN
        value: "knative.dev/my-repo"

次のコマンドを実行して、同等の変更を行うこともできます。

kn operator configure envvars --component eventing --deployName eventing-controller --container eventing-controller --name METRICS_DOMAIN --value "knative.dev/my-repo" -n knative-eventing

システムサービスのオーバーライド

特定のサービスの設定をオーバーライドしたい場合は、CR で spec.services を使用して設定をオーバーライドできます。現在、labelsannotationsselector がサポートされています。

ラベル、アノテーション、セレクターのオーバーライド

以下の KnativeEventing リソースは、eventing-webhook サービスをオーバーライドして、ラベル mylabel: foo、アノテーション myannotations: bar、セレクター myselector: bar を持つようにします。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  services:
  - name: eventing-webhook
    labels:
      mylabel: foo
    annotations:
      myannotations: bar
    selector:
      myselector: bar

次のコマンドを実行して、同等の変更を行うこともできます。

kn operator configure labels --component eventing --serviceName eventing-webhook --key mylabel --value foo -n knative-eventing
kn operator configure annotations --component eventing --serviceName eventing-webhook --key myannotations --value bar -n knative-eventing
kn operator configure selectors --component eventing --serviceName eventing-webhook --key myselector --value bar -n knative-eventing

システム PodDisruptionBudget のオーバーライド

Pod Disruption Budget(PDB)を使用すると、メンテナンスのために Pod の再スケジュールが必要な場合に、アプリケーションへの中断を制限できます。Knative Operator を使用すると、Eventing 内の特定の podDisruptionBudget リソースの minAvailable を名前で設定できます。 podDisruptionBudget リソースの設定の詳細については、こちらをクリックしてください。たとえば、eventing-webhook という名前の podDisruptionBudget の minAvailable を 70% に変更する場合は、KnativeEventing CR を以下のように変更する必要があります。

apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
  name: knative-eventing
  namespace: knative-eventing
spec:
  podDisruptionBudgets:
  - name: eventing-webhook
    minAvailable: 70%

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