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}
で定義されています。
イメージリンクを定義するには
-
イメージを次のイメージタグにプッシュします。
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
-
次の内容で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
を使用して設定をオーバーライドできます。現在、resources
、replicas
、labels
、annotations
、およびnodeSelector
がサポートされています。
リソースのオーバーライド¶
KnativeEventingカスタムリソースは、Deploymentに基づいてKnativeシステムコンテナのシステムリソースを設定できます。リクエストと制限は、eventing-controller
、eventing-webhook
、imc-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
を使用して設定をオーバーライドできます。現在、labels
、annotations
、selector
がサポートされています。
ラベル、アノテーション、セレクターのオーバーライド¶
以下の 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%