Streams for Apache Kafka API リファレンス
OpenShift Container Platform 上の Streams for Apache Kafka 2.8 のデプロイメントを設定する
概要
はじめに
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。
改善を提案するには、Jira 課題を作成し、変更案を説明してください。ご要望に迅速に対応できるよう、できるだけ詳細にご記入ください。
前提条件
-
Red Hat カスタマーポータルのアカウントがある。このアカウントを使用すると、Red Hat Jira Software インスタンスにログインできます。
アカウントをお持ちでない場合は、アカウントを作成するように求められます。
手順
- 以下の Create issue をクリックします。
- Summary テキストボックスに、問題の簡単な説明を入力します。
Description テキストボックスに、次の情報を入力します。
- 問題が見つかったページの URL。
-
問題の詳細情報
他のフィールドの情報はデフォルト値のままにすることができます。
- レポーター名を追加します。
- Create をクリックして、Jira 課題をドキュメントチームに送信します。
フィードバックをご提供いただきありがとうございました。
第1章 スキーマプロパティーを使用したカスタムリソースの設定
カスタムリソースは、設定プロパティーを使用して、Streams for Apache Kafka コンポーネントの操作を柔軟に管理および微調整する方法を提供します。このリファレンスガイドでは、複数のカスタムリソースに適用される共通の設定プロパティーと、Streams for Apache Kafka で使用できる各カスタムリソーススキーマで使用できる設定プロパティーを説明します。必要に応じて、プロパティーの詳しい説明とその設定方法の例を提示します。
各スキーマに定義されたプロパティーは、構造化かつ体系化して、カスタムリソースの設定を指定する方法を提供します。リソース割り当てを調整する場合でも、アクセス制御を指定する場合でも、スキーマのプロパティーを使用すると、詳細なレベルの設定が可能になります。たとえば、KafkaClusterSpec
スキーマのプロパティーを使用して、Kafka クラスターのストレージのタイプを指定したり、Kafka ブローカーへの安全なアクセスを提供するリスナーを追加したりできます。
プロパティーの説明にあるように、スキーマ内のプロパティーオプションによっては制約がある場合があります。このような制約で、対象のプロパティーに割り当てることができる値に対して特定のオプションまたは制限を定義します。制約を使用して、カスタムリソースを有効かつ適切な値に設定します。
第2章 共通の設定プロパティー
共通の設定プロパティーを使用して、Streams for Apache Kafka のカスタムリソースを設定します。カスタムリソースに対して、そのリソースでサポートされている他の設定と同様に、共通の設定プロパティーを追加します。
2.1. replicas
replicas
プロパティーを使用してレプリカを設定します。
レプリケーションのタイプはリソースによって異なります。
-
KafkaTopic
はレプリケーション係数を使用して、Kafka クラスター内で各パーティションのレプリカ数を設定します。 - Kafka コンポーネントはレプリカを使用してデプロイメントの Pod 数を設定し、可用性とスケーラビリティーを向上します。
OpenShift で Kafka コンポーネントを実行している場合、高可用性のために複数のレプリカを実行する必要がない場合があります。コンポーネントがデプロイされたノードがクラッシュすると、OpenShift によって自動的に Kafka コンポーネント Pod が別のノードに再スケジュールされます。ただし、複数のレプリカで Kafka コンポーネントを実行すると、他のノードが稼働しているため、フェイルオーバー時間が短縮されます。
2.2. bootstrapServers
bootstrapServers
プロパティーを使用してブートストラップサーバーのリストを設定します。
ブートストラップサーバーリストは、同じ OpenShift クラスターにデプロイされていない Kafka クラスターを参照できます。また、Streams for Apache Kafka によってデプロイされていない Kafka クラスターを参照することもできます。
同じ OpenShift クラスターである場合、各リストに CLUSTER-NAME-kafka-bootstrap
という名前の Kafka クラスターブートストラップサービスとポート番号が含まれる必要があります。Streams for Apache Kafka によって異なる OpenShift クラスターにデプロイされた場合、リストの内容は、クラスターを公開するために使用された方法 (route、ingress、nodeport、または loadbalancer) によって異なります。
Streams for Apache Kafka によって管理されていない Kafka クラスターで Kafka を使用する場合は、特定のクラスターの設定に応じてブートストラップサーバーリストを指定できます。
2.3. ssl
(サポートされている TLS バージョンと暗号スイート)
SSL 設定と暗号スイートの仕様を組み込んで、クライアントアプリケーションと Kafka クラスター間の TLS ベースの通信をさらに保護できます。標準の TLS 設定に加えて、サポートされている TLS バージョンを指定し、Kafka ブローカーの設定で暗号スイートを有効にすることができます。クライアントが使用する TLS バージョンと暗号スイートを制限する場合は、クライアントに設定を追加することもできます。クライアントの設定では、ブローカーで有効になっているプロトコルと暗号スイートのみを使用する必要があります。
暗号スイートは、セキュアな接続とデータ転送のための一連のセキュリティーメカニズムです。たとえば、暗号スイート TLS_AES_256_GCM_SHA384
は、TLS プロトコルと組み合わせて使用される次のメカニズムで構成されています。
- AES (Advanced Encryption Standard) 暗号化 (256 ビットキー)
- GCM (Galois/Counter Mode) 認証暗号化
- SHA384 (Secure Hash Algorithm) データ整合性保護
この組み合わせは、TLS_AES_256_GCM_SHA384
暗号スイート仕様にカプセル化されています。
ssl.enabled.protocols
プロパティーは、クラスターとそのクライアントの間のセキュアな通信に使用できる TLS バージョンを指定します。ssl.protocol
プロパティーは、全接続のデフォルトの TLS バージョンを設定します。有効なプロトコルから選択する必要があります。ssl.endpoint.identification.algorithm
プロパティーを使用して、ホスト名検証を有効または無効にします (Kafka クライアントに基づくコンポーネント (Kafka Connect、MirrorMaker 1/2、および Kafka Bridge) でのみ設定可能)。
SSL の設定例
... ...
# ...
config:
ssl.cipher.suites: TLS_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
ssl.enabled.protocols: TLSv1.3, TLSv1.2
ssl.protocol: TLSv1.3
ssl.endpoint.identification.algorithm: HTTPS
# ...
2.4. trustedCertificates
tls
および trustedCertificates
プロパティーを使用して TLS 暗号化を有効にし、TLS 証明書を X.509 形式で保存するシークレットを指定します。この設定を Kafka Connect、Kafka MirrorMaker、および Kafka Bridge コンポーネントに追加して、Kafka クラスターへの TLS 接続を実現できます。
Kafka クラスターの Cluster Operator によって作成されるシークレットを使用するか、独自の TLS 証明書ファイルを作成してから、ファイルから Secret
を作成できます。
シークレットの作成
oc create secret generic <my_secret> \ --from-file=<my_tls_certificate_file.crt>
oc create secret generic <my_secret> \
--from-file=<my_tls_certificate_file.crt>
-
<my_secret>
は、シークレット名に置き換えます。 -
<my_tls_certificate_file.crt>
は、TLS 証明書ファイルへのパスに置き換えます。
パターンに一致するすべてのファイルをシークレットに含めるには、pattern
プロパティーを使用します。pattern
プロパティーを使用すると、証明書ファイル名が変更されてもカスタムリソースを更新する必要がなくなります。ただし、pattern
プロパティーの代わりに certificate
プロパティーを使用して、特定のファイルを指定することもできます。
コンポーネントの TLS 暗号化設定の例
tls: trustedCertificates: - secretName: my-cluster-cluster-cert pattern: "*.crt" - secretName: my-cluster-cluster-cert certificate: ca2.crt
tls:
trustedCertificates:
- secretName: my-cluster-cluster-cert
pattern: "*.crt"
- secretName: my-cluster-cluster-cert
certificate: ca2.crt
TLS 暗号化を有効にし、Java に同梱されるデフォルトの公開認証局のセットを使用する場合は、trustedCertificates
を空の配列として指定できます。
デフォルトの Java 証明書で TLS を有効にする例
tls: trustedCertificates: []
tls:
trustedCertificates: []
同様に、認可サーバーと統合する oauth
、keycloak
、および opa
認証および認可タイプの設定で tlstrustedCertificates
プロパティーを使用できます。この設定により、認可サーバーへの暗号化された TLS 接続が設定されます。
認証タイプの TLS 暗号化設定の例
tlsTrustedCertificates: - secretName: oauth-server-ca pattern: "*.crt"
tlsTrustedCertificates:
- secretName: oauth-server-ca
pattern: "*.crt"
mTLS 認証の設定に関する詳細は、KafkaClientAuthenticationTls
schema reference を参照してください。
2.5. resources
Streams for Apache Kafka のリソースを制御するために、リソース 要求 と 制限 を設定します。メモリー
および cpu
リソースの要求および制限を指定できます。要求には、Kafka の安定したパフォーマンスを確保できる十分な値が必要です。
実稼働環境でリソースを設定する方法は、さまざまな要因によって異なります。たとえば、アプリケーションは OpenShift クラスターでリソースを共有する可能性があります。
Kafka では、デプロイメントの以下の要素が、必要なリソースに影響を与える可能性があります。
- メッセージのスループットとサイズ
- メッセージを処理するネットワークスレッドの数
- プロデューサーおよびコンシューマーの数
- トピックおよびパーティションの数
リソース要求に指定の値は予約され、常にコンテナーで利用可能になります。リソース制限によって、指定のコンテナーが消費可能な最大リソースが指定されます。要求数から制限数の間は予約されず、常に利用できるとは限りません。コンテナーは、リソースが利用できる場合のみ、制限以下のリソースを使用できます。リソースの制限は一時的で、再割り当てが可能です。
リソース要求および制限
要求なしに制限を設定する場合や、その逆の場合、OpenShift は両方に同じ値を使用します。OpenShift は制限を超えない限りコンテナーを強制終了しないので、リソースに対して、要求と制限を同じ数に設定すると、QoS (Quality of Service) が保証されます。
次のカスタムリソースの spec
で resources
プロパティーを使用して、コンポーネントのリソース要求および制限を設定します。
次のコンポーネントには KafkaNodePool
カスタムリソースを使用します。
-
KRaft ベースの Kafka ノード (
spec.resources
) -
ノードプールを使用する ZooKeeper ベースの Kafka ノード (
spec.resources
)
次のコンポーネントには Kafka
カスタムリソースを使用します。
-
ノードプールを使用しない ZooKeeper ベースのクラスターの Kafka (
spec.kafka.resources
) -
ZooKeeper (
spec.zookeeper.resources
) -
Topic Operator (
spec.entityOperator.topicOperator.resources
) -
User Operator (
spec.entityOperator.userOperator.resources
) -
Cruise Control (
spec.cruiseControl.resources
) -
Kafka Exporter (
spec.kafkaExporter.resources
)
その他のコンポーネントには、対応するカスタムリソースでリソースを設定します。以下に例を示します。
-
Kafka Connect の場合は
KafkaConnect
リソース (spec.resources
) -
MirrorMaker の場合は
KafkaMirrorMaker2
リソース (spec.resources
) -
Kafka Bridge の場合は
KafkaBridge
リソース (spec.resources
)
ノードプールのリソース設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaNodePool metadata: name: pool-a labels: strimzi.io/cluster: my-cluster spec: replicas: 3 roles: - broker resources: requests: memory: 64Gi cpu: "8" limits: memory: 64Gi cpu: "12" # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaNodePool
metadata:
name: pool-a
labels:
strimzi.io/cluster: my-cluster
spec:
replicas: 3
roles:
- broker
resources:
requests:
memory: 64Gi
cpu: "8"
limits:
memory: 64Gi
cpu: "12"
# ...
Topic Operator のリソース設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # .. entityOperator: #... topicOperator: #... resources: requests: memory: 512Mi cpu: "1" limits: memory: 512Mi cpu: "1"
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ..
entityOperator:
#...
topicOperator:
#...
resources:
requests:
memory: 512Mi
cpu: "1"
limits:
memory: 512Mi
cpu: "1"
リソース要求が OpenShift クラスターで利用可能な空きリソースを超える場合、Pod はスケジュールされません。
Streams for Apache Kafka では、OpenShift 構文を使用して memory
および cpu
リソースを指定します。OpenShift におけるコンピュートリソースの管理に関する詳細は、Managing Compute Resources for Containers を参照してください。
- メモリーリソース
メモリーリソースを設定する場合は、コンポーネントの合計要件を考慮してください。
Kafka は JVM 内で実行され、オペレーティングシステムページキャッシュを使用してディスクに書き込む前にメッセージデータを保存します。Kafka のメモリー要求は、JVM ヒープおよびページキャッシュに適合する必要があります。
jvmOptions
プロパティーを設定 すると、最小および最大ヒープサイズを制御できます。他のコンポーネントはページキャッシュに依存しません。メモリーリソースは、ヒープサイズを制御する
jvmOptions
を指定せずに、設定できます。メモリー要求および制限は、メガバイト、ギガバイト、メビバイト、およびギビバイトで指定されます。仕様では、以下の接尾辞を使用します。
-
M
(メガバイト) -
G
(ギガバイト) -
Mi
(メビバイト) -
Gi
(ギビバイト)
異なるメモリー単位を使用するリソースの例
... ...
# ... resources: requests: memory: 512Mi limits: memory: 2Gi # ...
Copy to Clipboard Copied! メモリーの指定およびサポートされるその他の単位に関する詳細は、Meaning of memory を参照してください。
-
- CPU リソース
常に信頼できるパフォーマンスを発揮させるには、CPU 要求を十分に指定する必要があります。CPU の要求および制限は、コア または ミリ cpu/ミリコア として指定します。
CPU コアは、整数 (
5
CPU コア) または小数 (2.5
CPU コア) で指定します。1000 ミリコア は1
CPU コアと同じです。CPU の単位の例
... ...
# ... resources: requests: cpu: 500m limits: cpu: 2.5 # ...
Copy to Clipboard Copied! 1 つの CPU コアのコンピューティング能力は、OpenShift がデプロイされたプラットフォームによって異なることがあります。
CPU 仕様の詳細は、Meaning of CPUを参照してください。
2.6. image
image
プロパティーを使用して、コンポーネントによって使用されるコンテナーイメージを設定します。
コンテナーイメージのオーバーライドは、別のコンテナーレジストリーやカスタマイズされたイメージを使用する必要がある特別な状況でのみ推奨されます。
たとえば、Streams for Apache Kafka で使用されるコンテナーリポジトリーへのアクセスがネットワークで許可されていない場合は、Streams for Apache Kafka イメージをコピーするか、ソースからビルドすることができます。ただし、設定したイメージが Streams for Apache Kafka イメージと互換性がない場合、正しく機能しない可能性があります。
コンテナーイメージのコピーはカスタマイズでき、デバッグに使用されることもあります。
以下のリソースの image
プロパティーを使用すると、コンポーネントに使用するコンテナーイメージを指定できます。
-
Kafka.spec.kafka
-
Kafka.spec.zookeeper
-
Kafka.spec.entityOperator.topicOperator
-
Kafka.spec.entityOperator.userOperator
-
Kafka.spec.cruiseControl
-
Kafka.spec.kafkaExporter
-
Kafka.spec.kafkaBridge
-
KafkaConnect.spec
-
KafkaMirrorMaker.spec
-
KafkaMirrorMaker2.spec
-
KafkaBridge.spec
Kafka イメージバージョンを変更しても、Kafka Exporter などの他の Kafka コンポーネントのイメージバージョンは自動的に更新されません。これらのコンポーネントはバージョンに依存しないため、Kafka イメージのバージョンを更新するときに追加の設定は必要ありません。
Kafka、Kafka Connect、および Kafka MirrorMaker の image
プロパティーの設定
Kafka、Kafka Connect、および Kafka MirrorMaker では、複数の Kafka バージョンがサポートされます。各コンポーネントには独自のイメージが必要です。異なる Kafka バージョンのデフォルトイメージは、以下の環境変数で設定されます。
-
STRIMZI_KAFKA_IMAGES
-
STRIMZI_KAFKA_CONNECT_IMAGES
-
STRIMZI_KAFKA_MIRROR_MAKER2_IMAGES
-
(非推奨)
STRIMZI_KAFKA_MIRROR_MAKER_IMAGES
これらの環境変数には、Kafka バージョンと対応するイメージ間のマッピングが含まれています。マッピングは、image
プロパティーおよび version
プロパティーとともに使用され、使用されるイメージを決定します。
-
image
とversion
のどちらもカスタムリソースに指定されていない場合、version
は Cluster Operator のデフォルトの Kafka バージョンに設定され、使用されるイメージは、環境変数のこのバージョンに対応するイメージになります。 -
image
が指定されていてもversion
が指定されていない場合、指定されたイメージが使用され、Cluster Operator のデフォルトの Kafka バージョンがversion
であると想定されます。 -
version
が指定されていてもimage
が指定されていない場合、環境変数の指定されたバージョンに対応するイメージが使用されます。 -
version
とimage
の両方を指定すると、指定されたイメージが使用されます。このイメージには、指定のバージョンの Kafka イメージが含まれると想定されます。
コンポーネントの image
および version
は、以下のプロパティーで設定できます。
-
Kafka の場合は
spec.kafka.image
およびspec.kafka.version
。 -
spec.image
およびspec.version
の Kafka Connect および Kafka MirrorMaker の場合。
version
のみを提供し、image
プロパティーを未指定のままにしておくことが推奨されます。これにより、カスタムリソースの設定時に間違いが発生する可能性が低減されます。異なるバージョンの Kafka に使用されるイメージを変更する必要がある場合は、Cluster Operator の環境変数を設定することが推奨されます。
他のリソースでの image
プロパティーの設定
他のコンポーネントのカスタムリソースの image
プロパティーは、デプロイメント時に指定された値が使用されます。image
プロパティーが設定されていない場合は、Cluster Operator 設定で環境変数として指定されたコンテナー image
が使用されます。image
名が Cluster Operator 設定で定義されていない場合は、デフォルト値が使用されます。
イメージ環境変数の詳細は、Cluster Operator の設定 を参照してください。
コンポーネント | 環境変数 | デフォルトのイメージ |
---|---|---|
Topic Operator |
|
|
User Operator |
|
|
Kafka Exporter |
|
|
Cruise Control |
|
|
Kafka Bridge |
|
|
Kafka Initializer |
|
|
コンテナーイメージ設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... image: my-org/my-image:latest # ... zookeeper: # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
image: my-org/my-image:latest
# ...
zookeeper:
# ...
2.7. livenessProbe
および readinessProbe
ヘルスチェック
livenessProbe
および readinessProbe
プロパティーを使用して、Streams for Apache Kafka でサポートされるヘルスチェックプローブを設定します。
ヘルスチェックは、アプリケーションの健全性を検証する定期的なテストです。ヘルスチェックプローブが失敗すると、OpenShift によってアプリケーションが正常でないと見なされ、その修正が試行されます。
プローブの詳細は、Configure Liveness and Readiness Probes を参照してください。
livenessProbe
および readinessProbe
の両方で以下のオプションがサポートされます。
-
initialDelaySeconds
-
timeoutSeconds
-
periodSeconds
-
successThreshold
-
failureThreshold
Liveness および Readiness プローブの設定例
... ...
# ...
readinessProbe:
initialDelaySeconds: 15
timeoutSeconds: 5
livenessProbe:
initialDelaySeconds: 15
timeoutSeconds: 5
# ...
livenessProbe
および readinessProbe
オプションの詳細は、Probe スキーマリファレンス を参照してください。
2.8. metricsConfig
metricsConfig
プロパティーを使用して、Prometheus メトリクスを有効化および設定します。
metricsConfig
プロパティーには、Prometheus JMX Exporter の追加設定が含まれる ConfigMap への参照が含まれます。Streams for Apache Kafka は、Prometheus JMX エクスポーターを使用して Prometheus メトリクスをサポートし、Apache Kafka および ZooKeeper でサポートされている JMX メトリクスを Prometheus メトリクスに変換します。
追加設定なしで Prometheus メトリックのエクスポートを有効にするには、metricsConfig.valueFrom.configMapKeyRef.key
配下に空のファイルが含まれる ConfigMap を参照します。空のファイルを参照する場合、名前が変更されていない限り、すべてのメトリックが公開されます。
Kafka のメトリック設定が含まれる ConfigMap の例
kind: ConfigMap apiVersion: v1 metadata: name: my-configmap data: my-key: | lowercaseOutputName: true rules: # Special cases and very specific rules - pattern: kafka.server<type=(.+), name=(.+), clientId=(.+), topic=(.+), partition=(.*)><>Value name: kafka_server_$1_$2 type: GAUGE labels: clientId: "$3" topic: "$4" partition: "$5" # further configuration
kind: ConfigMap
apiVersion: v1
metadata:
name: my-configmap
data:
my-key: |
lowercaseOutputName: true
rules:
# Special cases and very specific rules
- pattern: kafka.server<type=(.+), name=(.+), clientId=(.+), topic=(.+), partition=(.*)><>Value
name: kafka_server_$1_$2
type: GAUGE
labels:
clientId: "$3"
topic: "$4"
partition: "$5"
# further configuration
Kafka のメトリック設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... metricsConfig: type: jmxPrometheusExporter valueFrom: configMapKeyRef: name: my-config-map key: my-key # ... zookeeper: # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
metricsConfig:
type: jmxPrometheusExporter
valueFrom:
configMapKeyRef:
name: my-config-map
key: my-key
# ...
zookeeper:
# ...
有効になったメトリックは、9404 番ポートで公開されます。
metricsConfig
(または非推奨の metrics
) プロパティーがリソースに定義されていない場合、Prometheus メトリックは無効になります。
Prometheus と Grafana の設定とデプロイの詳細は、Kafka へのメトリクスの導入 を参照してください。
2.9. jvmOptions
次の Streams for Apache Kafka コンポーネントは、Java 仮想マシン (JVM) 内で実行されます。
- Apache Kafka
- Apache ZooKeeper
- Apache Kafka Connect
- Apache Kafka MirrorMaker
- Kafka Bridge
異なるプラットフォームやアーキテクチャーでパフォーマンスを最適化するには、以下のリソースに jvmOptions
プロパティーを設定します。
-
Kafka.spec.kafka
-
Kafka.spec.zookeeper
-
Kafka.spec.entityOperator.userOperator
-
Kafka.spec.entityOperator.topicOperator
-
Kafka.spec.cruiseControl
-
KafkaNodePool.spec
-
KafkaConnect.spec
-
KafkaMirrorMaker.spec
-
KafkaMirrorMaker2.spec
-
KafkaBridge.spec
設定では、以下のオプションを指定できます。
-Xms
- JVM の起動時に最初に割り当てられる最小ヒープサイズ。
-Xmx
- 最大ヒープサイズ
-XX
- JVM の高度なランタイムオプション
javaSystemProperties
- 追加のシステムプロパティー
gcLoggingEnabled
- ガベッジコレクターのロギングを有効にします
-Xmx
や -Xms
などの JVM 設定で使用できる単位は、対応するイメージの JDK java
バイナリーで使用できる単位と同じです。そのため、1g
または 1G
は 1,073,741,824 バイトを意味し、Gi
は接尾辞として有効な単位ではありません。これは、1G
が 1,000,000,000 バイトを意味し、1Gi
が 1,073,741,824 バイトを意味する OpenShift 規則に従う、メモリー要求および制限 に使用される単位とは異なります。
-Xms
および -Xmx
オプション
コンテナーのメモリー要求および制限値を設定するだけでなく、-Xms
および -Xmx
JVM オプションを使用して、JVM に特定のヒープサイズを設定できます。-Xms
オプションを使用して初期ヒープサイズを設定し、-Xmx
オプションを使用して最大ヒープサイズを設定します。
JVM に割り当てられたメモリーをより詳細に制御するには、ヒープサイズを指定します。ヒープサイズは、コンテナーの メモリー制限 (および要求) を最大限に活用し、それを超えないようにする必要があります。ヒープサイズとその他のメモリー要件は、指定されたメモリー制限内に収まる必要があります。設定でヒープサイズを指定せずに、メモリーリソースの制限 (および要求) を設定する場合、Cluster Operator はデフォルトのヒープサイズを自動的に適用します。Cluster Operator は、メモリーリソース設定の割合に基づいて、デフォルトの最大および最小ヒープ値を設定します。
次の表に、デフォルトのヒープ値を示します。
コンポーネント | ヒープに割り当てられた使用可能なメモリーの割合 | 上限 |
---|---|---|
Kafka | 50% | 5 GB |
ZooKeeper | 75% | 2 GB |
Kafka Connect | 75% | なし |
MirrorMaker 2 | 75% | なし |
MirrorMaker | 75% | なし |
Cruise Control | 75% | なし |
Kafka Bridge | 50% | 31 Gi |
メモリー制限 (および要求) が指定されていない場合、JVM の最小ヒープサイズは 128M
に設定されます。JVM の最大ヒープサイズは、必要に応じてメモリーを増やすことができるように定義されていません。これは、テストおよび開発での単一ノード環境に適しています。
適切なメモリー要求を設定すると、次のことを防ぐことができます。
- ノードで実行されている他の Pod からのメモリーに圧力がかかる場合、OpenShift はコンテナーを強制終了します。
-
OpenShift がメモリー不足のノードにコンテナーをスケジューリングする。
-Xms
が-Xmx
に設定されている場合には、コンテナーはすぐにクラッシュし、存在しない場合、コンテナーは後でクラッシュします。
この例では、JVM のヒープに 2 GiB (2,147,483,648 バイト) が使用されます。JVM メモリー使用量の合計は、最大ヒープサイズを超える可能性があります。
-Xmx
および -Xms
の設定例
... ...
# ...
jvmOptions:
"-Xmx": "2g"
"-Xms": "2g"
# ...
最初のヒープサイズ (-Xms
) および最大ヒープサイズ (-Xmx
) に同じ値を設定すると、JVM が必要以上のヒープを割り当てて起動後にメモリーを割り当てないようにすることができます。
Kafka ブローカーコンテナーなど、多数のディスク I/O を実行するコンテナーには、オペレーティングシステムのページキャッシュとして使用できるメモリーが必要です。このようなコンテナーの場合、要求されるメモリーは、JVM が使用するメモリーよりも大幅に大きくする必要があります。
-XX オプション
-XX
オプションは、Apache Kafka の KAFKA_JVM_PERFORMANCE_OPTS
オプションの設定に使用されます。
例 -XX
設定
jvmOptions: "-XX": "UseG1GC": "true" "MaxGCPauseMillis": "20" "InitiatingHeapOccupancyPercent": "35" "ExplicitGCInvokesConcurrent": "true"
jvmOptions:
"-XX":
"UseG1GC": "true"
"MaxGCPauseMillis": "20"
"InitiatingHeapOccupancyPercent": "35"
"ExplicitGCInvokesConcurrent": "true"
-XX
設定から生成される JVM オプション
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
-XX
オプションを指定しないと、Apache Kafka の KAFKA_JVM_PERFORMANCE_OPTS
のデフォルト設定が使用されます。
javaSystemProperties
javaSystemProperties
は、デバッグユーティリティーなどの追加の Java システムプロパティーの設定に使用されます。
javaSystemProperties
の設定例
jvmOptions: javaSystemProperties: - name: javax.net.debug value: ssl
jvmOptions:
javaSystemProperties:
- name: javax.net.debug
value: ssl
jvmOptions
の詳細は、JvmOptions
スキーマリファレンス を参照してください。
2.10. ガベッジコレクターのロギング
jvmOptions
プロパティーでは、ガベージコレクター (GC) のロギングを有効または無効にすることもできます。GC ロギングはデフォルトで無効になっています。これを有効にするには、以下のように gcLoggingEnabled
プロパティーを設定します。
GC ロギングの設定例
... ...
# ...
jvmOptions:
gcLoggingEnabled: true
# ...
2.11. 追加ボリューム
Streams for Apache Kafka は、次のコンポーネントで追加のボリュームとボリュームマウントの指定をサポートしています。
- Kafka
- Kafka Connect
- Kafka Bridge
- Kafka MirrorMaker2
- Entitiy Operator
- Cruise Control
- Kafka Exporter
- Zookeeper
- User Operator
- Topic Operator
今後の Kafka および Streams for Apache Kafka 更新との互換性を確保するために、マウントされた追加パスは、すべて /mnt
内に配置されます。
サポートされているボリュームタイプ
- シークレット
- ConfigMap
- EmptyDir
- PersistentVolumeClaims
追加ボリュームの設定例
kind: Kafka spec: kafka: # ... template: pod: volumes: - name: example-secret secret: secretName: secret-name - name: example-configmap configMap: name: config-map-name - name: temp emptyDir: {} - name: example-pvc-volume persistentVolumeClaim: claimName: myclaim kafkaContainer: volumeMounts: - name: example-secret mountPath: /mnt/secret-volume - name: example-configmap mountPath: /mnt/cm-volume - name: temp mountPath: /mnt/temp - name: example-pvc-volume mountPath: /mnt/data
kind: Kafka
spec:
kafka:
# ...
template:
pod:
volumes:
- name: example-secret
secret:
secretName: secret-name
- name: example-configmap
configMap:
name: config-map-name
- name: temp
emptyDir: {}
- name: example-pvc-volume
persistentVolumeClaim:
claimName: myclaim
kafkaContainer:
volumeMounts:
- name: example-secret
mountPath: /mnt/secret-volume
- name: example-configmap
mountPath: /mnt/cm-volume
- name: temp
mountPath: /mnt/temp
- name: example-pvc-volume
mountPath: /mnt/data
ボリュームを使用して、Kafka コンポーネントの設定値を含むファイルを保存し、設定プロバイダーを使用してその値を読み込むことができます。詳細は、外部ソースからの設定値の読み込み を参照してください。
第3章 Kafka
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | Kafka および ZooKeeper クラスター、Topic Operator の仕様。 | |
status | Kafka および ZooKeeper クラスター、Topic Operator のステータス。 |
第4章 KafkaSpec
スキーマリファレンス
Kafka
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
kafka | Kafka クラスターの設定。 | |
zookeeper | ZooKeeper クラスターの設定。このセクションは、ZooKeeper ベースの Apache Kafka クラスターを実行する場合に必要です。 | |
entityOperator | Entity Operator の設定。 | |
clusterCa | クラスター認証局の設定。 | |
clientsCa | クライアント認証局の設定。 | |
cruiseControl | Cruise Control デプロイメントの設定。指定時に Cruise Control インスタンスをデプロイします。 | |
jmxTrans |
| |
kafkaExporter | Kafka Exporter の設定。Kafka Exporter は追加のメトリックを提供できます (例: トピック/パーティションでのコンシューマーグループのラグなど)。 | |
maintenanceTimeWindows | string 配列 | メンテナンスタスク (証明書の更新) 用の時間枠の一覧。それぞれの時間枠は、cron 式で定義されます。 |
第5章 KafkaClusterSpec
スキーマリファレンス
KafkaSpec
で使用
KafkaClusterSpec
スキーマプロパティーの全リスト
Kafka
カスタムリソースを使用して Kafka クラスターを設定します。
config
プロパティーは、リソースの全体的な設定の一部です。config
プロパティーを使用して、Kafka ブローカーオプションをキーとして設定します。
Kafka の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: version: 3.8.0 metadataVersion: 3.8 # ... config: auto.create.topics.enable: "false" offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 default.replication.factor: 3 min.insync.replicas: 2 # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
version: 3.8.0
metadataVersion: 3.8
# ...
config:
auto.create.topics.enable: "false"
offsets.topic.replication.factor: 3
transaction.state.log.replication.factor: 3
transaction.state.log.min.isr: 2
default.replication.factor: 3
min.insync.replicas: 2
# ...
値は以下の JSON タイプのいずれかになります。
- 文字列
- 数値
- ブール値
例外
Apache Kafka ドキュメント にリストされているオプションを指定および設定できます。
ただし、次の項目に関連するオプションの設定と管理は、Streams for Apache Kafka が行います。これらは変更できません。
- セキュリティー (暗号化、認証、および認可)
- リスナーの設定
- Broker ID の設定
- ログデータディレクトリーの設定
- ブローカー間の通信
- ZooKeeper の接続
次の接頭辞を持つプロパティーは設定できません。
-
advertised.
-
authorizer.
-
broker.
-
controller
-
cruise.control.metrics.reporter.bootstrap.
-
cruise.control.metrics.topic
-
host.name
-
inter.broker.listener.name
-
listener.
-
listeners
-
log.dir
-
password.
-
port
-
process.roles
-
sasl.
-
security.
-
servers,node.id
-
ssl.
-
super.user
-
zookeeper.clientCnxnSocket
-
zookeeper.connect
-
zookeeper.set.acl
-
zookeeper.ssl
config
プロパティーに変更できないオプションが含まれている場合、そのオプションは無視され、警告メッセージが Cluster Operator ログファイルに記録されます。サポートされているその他のすべてのオプションは、Streams for Apache Kafka によって設定されたオプションの次の例外も含め、Kafka に転送されます。
-
サポートされている TLS バージョンと暗号スイート の任意の
ssl
設定 -
zookeeper.connection.timeout.ms
プロパティーを設定して、ZooKeeper 接続の確立に許可される最大時間の設定。 Cruise Control メトリックのプロパティー:
-
cruise.control.metrics.topic.num.partitions
-
cruise.control.metrics.topic.replication.factor
-
cruise.control.metrics.topic.retention.ms
-
cruise.control.metrics.topic.auto.create.retries
-
cruise.control.metrics.topic.auto.create.timeout.ms
-
cruise.control.metrics.topic.min.insync.replicas
-
コントローラーのプロパティー:
-
controller.quorum.election.backoff.max.ms
-
controller.quorum.election.timeout.ms
-
controller.quorum.fetch.timeout.ms
-
5.1. ラックアウェアネスと init コンテナーイメージの設定
ラックアウェアネスは、rack
プロパティーを使用して有効にします。ラックアウェアネス (Rack Awareness) が有効である場合、Kafka ブローカー Pod は init コンテナーを使用して OpenShift クラスターノードからラベルを収集します。この init コンテナーのコンテナーイメージは、brokerRackInitImage
プロパティーを使用して指定できます。brokerRackInitImage
フィールドが指定されていない場合、使用されるイメージは次のように優先順位付けされます。
-
Cluster Operator 設定の
STRIMZI_DEFAULT_KAFKA_INIT_IMAGE
環境変数に指定されたコンテナーイメージ -
registry.redhat.io/amq-streams/strimzi-rhel9-operator:2.8.0
コンテナーイメージ
brokerRackInitImage
の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... rack: topologyKey: topology.kubernetes.io/zone brokerRackInitImage: my-org/my-image:latest # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
brokerRackInitImage: my-org/my-image:latest
# ...
コンテナーイメージのオーバーライドは、特別な状況でのみ推奨されます。たとえば、Streams for Apache Kafka で使用されるコンテナーレジストリーへのアクセスがネットワークで許可されていない場合などです。このような場合は、Streams for Apache Kafka イメージをコピーするか、ソースからビルドする必要があります。設定されたイメージが Streams for Apache Kafka イメージと互換性がない場合、正しく動作しない可能性があることに注意してください。
5.2. Logging
Kafka には、次のような独自の設定可能なロガーがあります。
-
log4j.logger.org.apache.zookeeper
-
log4j.logger.kafka
-
log4j.logger.org.apache.kafka
-
log4j.logger.kafka.request.logger
-
log4j.logger.kafka.network.Processor
-
log4j.logger.kafka.server.KafkaApis
-
log4j.logger.kafka.network.RequestChannel$
-
log4j.logger.kafka.controller
-
log4j.logger.kafka.log.LogCleaner
-
log4j.logger.state.change.logger
-
log4j.logger.kafka.authorizer.logger
Kafka では Apache log4j
ロガー実装が使用されます。
logging
プロパティーを使用してロガーおよびロガーレベルを設定します。
ログレベルを設定するには、ロガーとレベルを直接指定 (インライン) するか、カスタム (外部) ConfigMap を使用します。ConfigMap を使用する場合、logging.valueFrom.configMapKeyRef.name
プロパティーを外部ロギング設定が含まれる ConfigMap の名前に設定します。ConfigMap 内では、ロギング設定は log4j.properties
を使用して記述されます。logging.valueFrom.configMapKeyRef.name
および logging.valueFrom.configMapKeyRef.key
プロパティーはいずれも必須です。Cluster Operator の実行時に、指定された正確なロギング設定を使用する ConfigMap がカスタムリソースを使用して作成され、その後は調整のたびに再作成されます。カスタム ConfigMap を指定しない場合、デフォルトのロギング設定が使用されます。特定のロガー値が設定されていない場合、上位レベルのロガー設定がそのロガーに継承されます。ログレベルの詳細は、Apache logging services を参照してください。
ここで、inline
および external
ロギングの例を示します。inline
ロギングでは、ルートロガーレベルを指定します。特定のクラスまたはロガーを loggers プロパティーに追加することで、それらのログレベルを設定することもできます。
inline ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka spec: # ... kafka: # ... logging: type: inline loggers: kafka.root.logger.level: INFO log4j.logger.kafka.coordinator.transaction: TRACE log4j.logger.kafka.log.LogCleanerManager: DEBUG log4j.logger.kafka.request.logger: DEBUG log4j.logger.io.strimzi.kafka.oauth: DEBUG log4j.logger.org.openpolicyagents.kafka.OpaAuthorizer: DEBUG # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
# ...
kafka:
# ...
logging:
type: inline
loggers:
kafka.root.logger.level: INFO
log4j.logger.kafka.coordinator.transaction: TRACE
log4j.logger.kafka.log.LogCleanerManager: DEBUG
log4j.logger.kafka.request.logger: DEBUG
log4j.logger.io.strimzi.kafka.oauth: DEBUG
log4j.logger.org.openpolicyagents.kafka.OpaAuthorizer: DEBUG
# ...
ログレベルを DEBUG
に設定すると、大量のログが出力され、パフォーマンスに影響を及ぼす可能性があります。
外部ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka spec: # ... logging: type: external valueFrom: configMapKeyRef: name: customConfigMap key: kafka-log4j.properties # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: kafka-log4j.properties
# ...
設定されていない利用可能なロガーのレベルは OFF
に設定されています。
Cluster Operator を使用して Kafka がデプロイされた場合、Kafka のロギングレベルの変更は動的に適用されます。
外部ロギングを使用する場合は、ロギングアペンダーが変更されるとローリング更新がトリガーされます。
ガベージコレクター (GC)
ガベッジコレクターのロギングは jvmOptions
プロパティーを使用して 有効 (または無効) にすることもできます。
5.3. KafkaClusterSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
version | string | Kafka ブローカーのバージョン。デフォルトは最新バージョンです。バージョンのアップグレードまたはダウングレードに必要なプロセスを理解するには、ユーザードキュメントを参照してください。 |
metadataVersion | string |
Streams for Apache Kafka 2.7 で追加されました。Kafka クラスターによって使用される KRaft メタデータのバージョン。ZooKeeper モードで実行していると、このプロパティーは無視されます。このプロパティーが設定されていない場合は、デフォルトで |
replicas | integer | クラスター内の Pod 数。このプロパティーは、ノードプールを使用しない場合に必要です。 |
image | string |
Kafka Pod に使用されるコンテナーイメージ。このプロパティーが設定されていない場合、デフォルトの Kafka イメージバージョンは |
listeners | Kafka ブローカーへのアクセスを提供するようにリスナーを設定します。 | |
config | map | 次の接頭辞を持つ Kafka ブローカー設定プロパティーは設定できません。listeners、advertised.、broker.、listener.、host.name、port、inter.broker.listener.name、sasl.、ssl.、security.、password.、log.dir、zookeeper.connect、zookeeper.set.acl、zookeeper.ssl、zookeeper.clientCnxnSocket、authorizer.、super.user、cruise.control.metrics.topic、cruise.control.metrics.reporter.bootstrap.servers、node.id、process.roles、controller.、metadata.log.dir、zookeeper.metadata.migration.enable、client.quota.callback.static.kafka.admin.、client.quota.callback.static.produce、client.quota.callback.static.fetch、client.quota.callback.static.storage.per.volume.limit.min.available.、client.quota.callback.static.excluded.principal.name.list (例外: zookeeper.connection.timeout.ms、sasl.server.max.receive.size、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols、ssl.secure.random.implementation、cruise.control.metrics.topic.num.partitions、cruise.control.metrics.topic.replication.factor、cruise.control.metrics.topic.retention.ms、cruise.control.metrics.topic.auto.create.retries、cruise.control.metrics.topic.auto.create.timeout.ms、cruise.control.metrics.topic.min.insync.replicas、controller.quorum.election.backoff.max.ms、controller.quorum.election.timeout.ms、controller.quorum.fetch.timeout.ms)。 |
storage | ストレージの設定 (ディスク)。これを更新することはできません。このプロパティーは、ノードプールを使用しない場合に必要です。 | |
authorization |
| Kafka ブローカーの認可設定。 |
rack |
| |
brokerRackInitImage | string |
|
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
jvmOptions | Pod の JVM オプション。 | |
jmxOptions | Kafka ブローカーの JMX オプション。 | |
resources | 予約する CPU およびメモリーリソース。 | |
metricsConfig | メトリックの設定。 | |
logging | Kafka のロギング設定。 | |
template | Kafka クラスターリソースのテンプレート。このテンプレートを使用すると、ユーザーは OpenShift リソースの生成方法を指定できます。 | |
tieredStorage | Kafka ブローカーの階層化ストレージ機能を設定します。 | |
quotas |
Kafka ブローカーのクォータプラグイン設定を使用すると、ディスク使用量、生成/取得レートなどのクォータを設定できます。サポートされているプラグインの種類は、 |
第6章 Generic KafkaListener
スキーマリファレンス
KafkaClusterSpec
で使用
GenericKafkaListener
スキーマプロパティーの全リスト
OpenShift 内外の Kafka ブローカーに接続するようにリスナーを設定します。
Kafka
リソースの listeners
プロパティーを使用して、Kafka ブローカーリスナーを設定します。リスナーは配列として定義されます。
リスナー設定を示す Kafka
リソースの例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: #... listeners: - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: true authentication: type: tls - name: external1 port: 9094 type: route tls: true - name: external2 port: 9095 type: ingress tls: true authentication: type: tls configuration: bootstrap: host: bootstrap.myingress.com brokers: - broker: 0 host: broker-0.myingress.com - broker: 1 host: broker-1.myingress.com - broker: 2 host: broker-2.myingress.com #...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
#...
listeners:
- name: plain
port: 9092
type: internal
tls: false
- name: tls
port: 9093
type: internal
tls: true
authentication:
type: tls
- name: external1
port: 9094
type: route
tls: true
- name: external2
port: 9095
type: ingress
tls: true
authentication:
type: tls
configuration:
bootstrap:
host: bootstrap.myingress.com
brokers:
- broker: 0
host: broker-0.myingress.com
- broker: 1
host: broker-1.myingress.com
- broker: 2
host: broker-2.myingress.com
#...
名前およびポートは Kafka クラスター内で一意である必要があります。各リスナーに一意の名前とポートを指定することで、複数のリスナーを設定できます。名前は最大 25 文字で、小文字と数字で構成できます。
6.1. ポート番号の指定
ポート番号は Kafka クラスターで使用されるポートで、クライアントによるアクセスに使用されるポートとは異なる場合があります。
-
loadbalancer
リスナーは、指定されたポート番号を使用します。internal
およびcluster-ip
リスナーも同様です。 -
ingress
およびroute
リスナーはアクセスにポート 443 を使用します。 -
nodeport
リスナーは OpenShift によって割り当てられたポート番号を使用します。
クライアント接続の場合は、リスナーのブートストラップサービスのアドレスおよびポートを使用します。これは、Kafka
リソースのステータスから取得できます。
クライアント接続のアドレスおよびポートを取得するコマンドの例
oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'
oc get kafka <kafka_cluster_name> -o=jsonpath='{.status.listeners[?(@.name=="<listener_name>")].bootstrapServers}{"\n"}'
ブローカーへのクライアントアクセス用にリスナーを設定する場合、いくつかの例外を除き、ポート 9092 以降 (9093、9094 など) を使用できます。ブローカー間通信 (9090 および 9091)、Prometheus メトリック (9404)、および JMX (Java Management Extensions) モニタリング (9999) 用に予約されているポートを使用するようにリスナーを設定できません。
6.2. リスナータイプの指定
内部リスナーの場合は、タイプを internal
に設定します。外部リスナーの場合は、route
、loadbalancer
、nodeport
、または ingress
から選択します。cluster-ip
リスナーを設定することもできます。これはカスタムアクセスメカニズムの構築に使用される内部タイプです。
- internal
tls
プロパティーを使用して、暗号化の有無に関わらず内部リスナーを設定できます。internal
リスナーの設定例#... spec: kafka: #... listeners: #... - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: true authentication: type: tls #...
#... spec: kafka: #... listeners: #... - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: true authentication: type: tls #...
Copy to Clipboard Copied! - route
OpenShift
Routes
および HAProxy ルーターを使用して Kafka を公開するように外部リスナーを設定します。Kafka ブローカー Pod ごとに専用の
Route
が作成されます。追加のRoute
が作成され、Kafka ブートストラップアドレスとして提供されます。これらのRoutes
を使用すると、Kafka クライアントを 443 番ポートで Kafka に接続することができます。クライアントはデフォルトのルーターポートであるポート 443 に接続しますが、トラフィックは設定するポート (この例では9094
) にルーティングされます。route
リスナーの設定例#... spec: kafka: #... listeners: #... - name: external1 port: 9094 type: route tls: true #...
#... spec: kafka: #... listeners: #... - name: external1 port: 9094 type: route tls: true #...
Copy to Clipboard Copied! - ingress
Kubernetes
Ingress
および Ingress NGINX Controller for Kubernetes を使用して、Kafka を公開するように外部リスナーを設定します。各 Kafka ブローカー Pod に専用の
Ingress
リソースが作成されます。追加のIngress
リソースが作成され、Kafka ブートストラップアドレスとして提供されます。これらのIngress
リソースを使用すると、Kafka クライアントを 443 番ポートで Kafka に接続することができます。クライアントはデフォルトのコントローラーポートであるポート 443 に接続しますが、トラフィックは設定するポート (以下の例では9095
にルーティングされます)。GenericKafkaListenerConfigurationBootstrap
およびGenericKafkaListenerConfigurationBroker
プロパティーを使用して、ブートストラップおよびブローカーごとのサービスによって使用されるホスト名を指定する必要があります。ingress
リスナーの設定例#... spec: kafka: #... listeners: #... - name: external2 port: 9095 type: ingress tls: true authentication: type: tls configuration: bootstrap: host: bootstrap.myingress.com brokers: - broker: 0 host: broker-0.myingress.com - broker: 1 host: broker-1.myingress.com - broker: 2 host: broker-2.myingress.com #...
#... spec: kafka: #... listeners: #... - name: external2 port: 9095 type: ingress tls: true authentication: type: tls configuration: bootstrap: host: bootstrap.myingress.com brokers: - broker: 0 host: broker-0.myingress.com - broker: 1 host: broker-1.myingress.com - broker: 2 host: broker-2.myingress.com #...
Copy to Clipboard Copied! 注記Ingress
を使用する外部リスナーは、現在 Ingress NGINX Controller for Kubernetes でのみテストされています。- loadbalancer
Loadbalancer
タイプのService
を使用して Kafka を公開するように外部リスナーを設定します。Kafka ブローカー Pod ごとに新しいロードバランサーサービスが作成されます。追加のロードバランサーが作成され、Kafka の ブートストラップ アドレスとして提供されます。ロードバランサーは指定のポート番号をリッスンします。以下の例ではポート
9094
です。loadBalancerSourceRanges
プロパティーを使用して、指定された IP アドレスへのアクセスを制限する ソース範囲 を設定できます。loadbalancer
リスナーの設定例#... spec: kafka: #... listeners: - name: external3 port: 9094 type: loadbalancer tls: true configuration: loadBalancerSourceRanges: - 10.0.0.0/8 - 88.208.76.87/32 #...
#... spec: kafka: #... listeners: - name: external3 port: 9094 type: loadbalancer tls: true configuration: loadBalancerSourceRanges: - 10.0.0.0/8 - 88.208.76.87/32 #...
Copy to Clipboard Copied! - nodeport
NodePort
タイプのService
を使用して Kafka を公開するように外部リスナーを設定します。Kafka クライアントは OpenShift のノードに直接接続します。追加の
NodePort
タイプのサービスが作成され、Kafka ブートストラップアドレスとして提供されます。Kafka ブローカー Pod にアドバタイズされたアドレスを設定する場合、Streams for Apache Kafka は、該当する Pod が実行されているノードのアドレスを使用します。
preferredNodePortAddressType
プロパティーを使用して、チェックした最初のアドレスタイプをノードアドレスとして設定することができます。nodeport
リスナーの設定例#... spec: kafka: #... listeners: #... - name: external4 port: 9095 type: nodeport tls: false configuration: preferredNodePortAddressType: InternalDNS #...
#... spec: kafka: #... listeners: #... - name: external4 port: 9095 type: nodeport tls: false configuration: preferredNodePortAddressType: InternalDNS #...
Copy to Clipboard Copied! 注記ノードポートを使用して Kafka クラスターを公開する場合、現在 TLS ホスト名の検証はサポートされません。
- cluster-ip
ブローカーごとの
ClusterIP
タイプService
を使用して Kafka を公開するように内部リスナーを設定します。リスナーは、ヘッドレスサービスとその DNS 名を使用してトラフィックを Kafka ブローカーにルーティングしません。ヘッドレスサービスの使用が不適切な場合は、このタイプのリスナーを使用して Kafka クラスターを公開できます。特定の Ingress コントローラーや OpenShift Gateway API を使用するものなど、カスタムアクセスメカニズムで使用できます。
Kafka ブローカー Pod ごとに新しい
ClusterIP
サービスが作成されます。このサービスには、ブローカーごとのポート番号を持つ Kafka ブートストラップ アドレスとして機能するClusterIP
アドレスが割り当てられます。たとえば、TCP ポート設定を使用して、Nginx Ingress Controller を介して Kafka クラスターを公開するようにリスナーを設定できます。cluster-ip
リスナーの設定例#... spec: kafka: #... listeners: - name: clusterip type: cluster-ip tls: false port: 9096 #...
#... spec: kafka: #... listeners: - name: clusterip type: cluster-ip tls: false port: 9096 #...
Copy to Clipboard Copied!
6.3. リスナーのアクセスを制限するネットワークポリシーの設定
ネットワークレベルでリスナーへのアクセスを制限するネットワークポリシーを設定するには、networkPolicyPeers
を使用します。次の例では、plain
と tls
リスナーの networkPolicyPeers
の設定を示しています。
以下の例では、下記の点を前提としています。
-
ラベル
app: kafka-sasl-consumer
およびapp: kafka-sasl-producer
と一致するアプリケーション Pod のみがplain
リスナーに接続できます。アプリケーション Pod は Kafka ブローカーと同じ namespace で実行されている必要があります。 -
ラベル
project: myproject
およびproject: myproject2
と一致する namespace で稼働しているアプリケーション Pod のみ、tls
リスナーに接続できます。
networkPolicyPeers
プロパティーの構文は、NetworkPolicy
リソースの from
プロパティーと同じです。
ネットワークポリシー設定の例
listeners: #... - name: plain port: 9092 type: internal tls: true authentication: type: scram-sha-512 networkPolicyPeers: - podSelector: matchLabels: app: kafka-sasl-consumer - podSelector: matchLabels: app: kafka-sasl-producer - name: tls port: 9093 type: internal tls: true authentication: type: tls networkPolicyPeers: - namespaceSelector: matchLabels: project: myproject - namespaceSelector: matchLabels: project: myproject2 # ...
listeners:
#...
- name: plain
port: 9092
type: internal
tls: true
authentication:
type: scram-sha-512
networkPolicyPeers:
- podSelector:
matchLabels:
app: kafka-sasl-consumer
- podSelector:
matchLabels:
app: kafka-sasl-producer
- name: tls
port: 9093
type: internal
tls: true
authentication:
type: tls
networkPolicyPeers:
- namespaceSelector:
matchLabels:
project: myproject
- namespaceSelector:
matchLabels:
project: myproject2
# ...
6.4. GenericKafkaListener
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
name | string | リスナーの名前。名前は、リスナーおよび関連する OpenShift オブジェクトの識別に使用されます。指定の Kafka クラスター内で一意となる必要があります。名前は小文字と数字で構成でき、最大 11 文字まで使用できます。 |
port | integer | Kafka 内でリスナーによって使用されるポート番号。ポート番号は指定の Kafka クラスター内で一意である必要があります。許可されるポート番号は 9092 以上ですが、すでに Prometheus および JMX によって使用されているポート 9404 および 9999 以外になります。リスナーのタイプによっては、ポート番号は Kafka クライアントに接続するポート番号と同じではない場合があります。 |
type | string ([ingress、internal、route、loadbalancer、cluster-ip、nodeport] のいずれか) | リスナーのタイプ。サポートされるタイプは次のとおりです。
|
tls | boolean |
リスナーで TLS による暗号化を有効にします。これは必須プロパティーです。 |
認証 |
| このリスナーの認証設定。 |
configuration | 追加のリスナー設定。 | |
networkPolicyPeers | このリスナーに接続できるピアのリスト。このリストのピアは、論理演算子 OR を使用して組み合わせます。このフィールドが空であるか、存在しない場合、このリスナーのすべてのコネクションが許可されます。このフィールドが存在し、1 つ以上の項目が含まれる場合、リスナーはこのリストの少なくとも 1 つの項目と一致するトラフィックのみを許可します。 |
第7章 KafkaListenerAuthenticationTls
スキーマリファレンス
type
プロパティーは、KafkaListenerAuthenticationTls
タイプと、KafkaListenerAuthenticationScramSha512
、KafkaListenerAuthenticationOAuth
、KafkaListenerAuthenticationCustom
とを区別して使用するための識別子です。KafkaListenerAuthenticationTls
タイプには tls
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
第8章 KafkaListenerAuthenticationScramSha512
スキーマリファレンス
type
プロパティーは、KafkaListenerAuthenticationScramSha512
タイプと、KafkaListenerAuthenticationTls
、KafkaListenerAuthenticationOAuth
、KafkaListenerAuthenticationCustom
とを区別して使用するための識別子です。KafkaListenerAuthenticationScramSha512
タイプには scram-sha-512
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
第9章 KafkaListenerAuthenticationOAuth
スキーマリファレンス
type
プロパティーは、KafkaListenerAuthenticationOAuth
タイプと、KafkaListenerAuthenticationTls
、KafkaListenerAuthenticationScramSha512
、KafkaListenerAuthenticationCustom
とを区別して使用するための識別子です。KafkaListenerAuthenticationOAuth
タイプには oauth
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
clientId | string | Kafka ブローカーは、OAuth クライアント ID を使用して認可サーバーに対して認証し、イントロスペクションエンドポイント URI を使用することができます。 |
clientSecret | OAuth クライアントシークレットが含まれる OpenShift シークレットへのリンク。Kafka ブローカーは、OAuth クライアントシークレットを使用して認可サーバーに対して認証し、イントロスペクションエンドポイント URI を使用することができます。 | |
validIssuerUri | string | 認証に使用されるトークン発行者の URI。 |
checkIssuer | boolean |
発行元のチェックを有効または無効にします。デフォルトでは、 |
checkAudience | boolean |
オーディエンスのチェックを有効または無効にします。オーディエンスのチェックによって、トークンの受信者が特定されます。オーディエンスチェックが有効な場合、OAuth クライアント ID も |
jwksEndpointUri | string | ローカルの JWT 検証に使用できる JWKS 証明書エンドポイントの URI。 |
jwksRefreshSeconds | integer |
JWKS 証明書が更新される頻度を設定します。更新間隔は、 |
jwksMinRefreshPauseSeconds | integer | 連続する 2 回の更新の間に適用される最小の一時停止期間。不明な署名鍵が検出されると、更新は即座にスケジュールされますが、この最小一時停止の期間は待機します。デフォルトは 1 秒です。 |
jwksExpirySeconds | integer |
JWKS 証明書が有効とみなされる頻度を設定します。期限切れの間隔は、 |
jwksIgnoreKeyUse | boolean |
JWKS エンドポイント応答の |
introspectionEndpointUri | string | 不透明な JWT 以外のトークンの検証に使用できるトークンイントロスペクションエンドポイントの URI。 |
userNameClaim | string |
ユーザー ID の取得に使用される JWT 認証トークン、Introspection Endpoint の応答、または User Info Endpoint の応答からの要求の名前。デフォルトは |
fallbackUserNameClaim | string |
|
fallbackUserNamePrefix | string |
ユーザー ID を設定するために |
groupsClaim | string | 認証中にユーザーのグループ抽出に使用される JsonPath クエリー。抽出したグループは、カスタムオーソライザーで使用できます。デフォルトでは、グループは抽出されません。 |
groupsClaimDelimiter | string | グループの解析時に JSON 配列ではなく単一の文字列の値として抽出された場合に使用される区切り文字。デフォルト値は ',' (コンマ) です。 |
userInfoEndpointUri | string | Introspection Endpoint がユーザー ID に使用できる情報を返さない場合に、ユーザー ID 取得のフォールバックとして使用する User Info Endpoint の URL。 |
checkAccessTokenType | boolean |
アクセストークンタイプのチェックを行うかどうかを設定します。認可サーバーの JWT トークンに 'typ' 要求が含まれない場合は、 |
validTokenType | string |
Introspection Endpoint によって返される |
accessTokenIsJwt | boolean |
アクセストークンを JWT として処理するかどうかを設定します。認可サーバーが不透明なトークンを返す場合は、 |
tlsTrustedCertificates | OAuth サーバーへの TLS 接続の信頼済み証明書。 | |
disableTlsHostnameVerification | boolean |
TLS ホスト名の検証を有効または無効にします。デフォルト値は |
enableECDSA | boolean |
|
maxSecondsWithoutReauthentication | integer |
再認証せずに認証されたセッションが有効な状態でいられる最大期間 (秒単位)。これにより、Apache Kafka の再認証機能が有効になり、アクセストークンの有効期限が切れるとセッションが期限切れになります。最大期間の前または最大期間の到達時にアクセストークンが期限切れになると、クライアントは再認証する必要があります。そうでないと、サーバーは接続を切断します。デフォルトでは設定されません。アクセストークンが期限切れになっても認証されたセッションは期限切れになりません。このオプションは、SASL_OAUTHBEARER 認証メカニズムにのみ適用されます ( |
enablePlain | boolean |
SASL_PLAIN で OAuth 認証を有効または無効にします。このメカニズムが使用される場合、再認証はサポートされません。デフォルト値は |
tokenEndpointUri | string |
クライアントが |
enableOauthBearer | boolean |
SASL_OAUTHBEARER での OAuth 認証を有効または無効にします。デフォルト値は |
customClaimCheck | string | JWT トークンに適用される JsonPath フィルタークエリー、または追加のトークン検証のイントロスペクションエンドポイントの応答に適用される JSONPath フィルタークエリー。デフォルトでは設定されません。 |
connectTimeoutSeconds | integer | 認可サーバーへの接続時のタイムアウト (秒単位)。設定しない場合は、実際の接続タイムアウトは 60 秒になります。 |
readTimeoutSeconds | integer | 認可サーバーへの接続時の読み取りタイムアウト (秒単位)。設定しない場合は、実際の読み取りタイムアウトは 60 秒になります。 |
httpRetries | integer | 最初の HTTP リクエストが失敗した場合に試行する最大再試行回数。設定されていない場合、デフォルトでは再試行は行われません。 |
httpRetryPauseMs | integer | 失敗した HTTP リクエストを再試行するまでの一時停止。設定されていない場合、デフォルトでは一時停止せず、ただちにリクエストを繰り返します。 |
clientScope | string |
認可サーバーのトークンエンドポイントにリクエストを送信するときに使用するスコープ。ブローカー間の認証や、 |
clientAudience | string |
認可サーバーのトークンエンドポイントにリクエストを送信するときに使用するオーディエンス。ブローカー間の認証や、 |
enableMetrics | boolean |
OAuth メトリックを有効または無効にします。デフォルト値は |
failFast | boolean |
起動時に回復可能な実行時エラーが発生する可能性があるため、Kafka ブローカープロセスの終了を有効または無効にします。デフォルト値は |
includeAcceptHeader | boolean |
認可サーバーへのリクエストに Accept ヘッダーを設定するかどうか。デフォルト値は |
serverBearerTokenLocation | string | 認可サーバーへの認証時にクライアント ID とシークレットの代わりに使用されるベアラートークンを含むローカルファイルシステム上のファイルへのパス。 |
userNamePrefix | string |
ユーザー ID を構成するために |
第10章 GenericSecretSource
スキーマリファレンス
KafkaClientAuthenticationOAuth
、KafkaListenerAuthenticationCustom
、KafkaListenerAuthenticationOAuth
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
key | string | OpenShift シークレットでシークレット値が保存されるキー。 |
secretName | string | シークレット値が含まれる OpenShift シークレットの名前。 |
第11章 CertSecretSource
スキーマリファレンス
ClientTls
、KafkaAuthorizationKeycloak
、KafkaAuthorizationOpa
、KafkaClientAuthenticationOAuth
、KafkaListenerAuthenticationOAuth
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
secretName | string | 証明書が含まれる Secret の名前。 |
certificate | string | シークレット内のファイル証明書の名前。 |
pattern | string | シークレット内の証明書ファイルのパターン。パターンには glob 構文 を使用します。パターンに一致する、シークレット内のすべてのファイルが使用されます。 |
第12章 KafkaListenerAuthenticationCustom
スキーマリファレンス
KafkaListenerAuthenticationCustom
スキーマプロパティーの全リスト
リスナーのカスタム認証を設定します。
カスタム認証を設定するには、type
プロパティーを custom
に設定します。カスタム認証では、Kafka でサポートされているあらゆるタイプの認証が使用できます。
カスタム OAuth 認証の設定例
spec: kafka: config: principal.builder.class: SimplePrincipal.class listeners: - name: oauth-bespoke port: 9093 type: internal tls: true authentication: type: custom sasl: true listenerConfig: oauthbearer.sasl.client.callback.handler.class: client.class oauthbearer.sasl.server.callback.handler.class: server.class oauthbearer.sasl.login.callback.handler.class: login.class oauthbearer.connections.max.reauth.ms: 999999999 sasl.enabled.mechanisms: oauthbearer oauthbearer.sasl.jaas.config: | org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required ; secrets: - name: example
spec:
kafka:
config:
principal.builder.class: SimplePrincipal.class
listeners:
- name: oauth-bespoke
port: 9093
type: internal
tls: true
authentication:
type: custom
sasl: true
listenerConfig:
oauthbearer.sasl.client.callback.handler.class: client.class
oauthbearer.sasl.server.callback.handler.class: server.class
oauthbearer.sasl.login.callback.handler.class: login.class
oauthbearer.connections.max.reauth.ms: 999999999
sasl.enabled.mechanisms: oauthbearer
oauthbearer.sasl.jaas.config: |
org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required ;
secrets:
- name: example
sasl
および tls
の値を使用して、リスナーにマップするプロトコルを判別するプロトコルマップが生成されます。
- SASL = True, TLS = True → SASL_SSL
- SASL = False, TLS = True → SSL
- SASL = True, TLS = False → SASL_PLAINTEXT
- SASL = False, TLS = False → PLAINTEXT
シークレットは、Kafka ブローカーノードのコンテナー内の /opt/kafka/custom-authn-secrets/custom-listener-<listener_name>-<port>/<secret_name>
にマウントされます。たとえば、設定例ではマウントされたシークレット (example
) は /opt/kafka/custom-authn-secrets/custom-listener-oauth-bespoke-9093/example
にあります。
12.1. カスタムプリンシパルビルダーの設定
Kafka クラスター設定でカスタムプリンシパルビルダーを設定できます。ただし、プリンシパルビルダーは以下の要件に依存します。
- 指定されたプリンシパルビルダークラスがイメージに存在している。独自に構築する 前 に、すでに存在しているかどうかを確認します。必要なクラスを使用して、Streams for Apache Kafka イメージを再ビルドする必要があります。
-
他のリスナーが
oauth
タイプ認証をしていない。これは、OAuth リスナーが独自のプリンシパルビルダーを Kafka 設定に追加するためです。 - 指定したプリンシパルビルダーが、Streams for Apache Kafka と互換性がある。
カスタムプリンシパルビルダーは、認証用のピア証明書をサポートしている必要があります。Streams for Apache Kafka は、Kafka クラスターの管理にピア証明書を使用するためです。
Kafka のデフォルトのプリンシパルビルダークラス は、ピア証明書の名前を基にしたプリンシパルのビルドをサポートします。カスタムプリンシパルビルダーは、SSL ピア証明書の名前を使用して user
タイプのプリンシパルを指定する必要があります。
次の例は、Streams for Apache Kafka の OAuth 要件を満たすカスタムプリンシパルビルダーを示しています。
カスタム OAuth 設定のプリンシパルビルダーの例
public final class CustomKafkaPrincipalBuilder implements KafkaPrincipalBuilder { public KafkaPrincipalBuilder() {} @Override public KafkaPrincipal build(AuthenticationContext context) { if (context instanceof SslAuthenticationContext) { SSLSession sslSession = ((SslAuthenticationContext) context).session(); try { return new KafkaPrincipal( KafkaPrincipal.USER_TYPE, sslSession.getPeerPrincipal().getName()); } catch (SSLPeerUnverifiedException e) { throw new IllegalArgumentException("Cannot use an unverified peer for authentication", e); } } // Create your own KafkaPrincipal here ... } }
public final class CustomKafkaPrincipalBuilder implements KafkaPrincipalBuilder {
public KafkaPrincipalBuilder() {}
@Override
public KafkaPrincipal build(AuthenticationContext context) {
if (context instanceof SslAuthenticationContext) {
SSLSession sslSession = ((SslAuthenticationContext) context).session();
try {
return new KafkaPrincipal(
KafkaPrincipal.USER_TYPE, sslSession.getPeerPrincipal().getName());
} catch (SSLPeerUnverifiedException e) {
throw new IllegalArgumentException("Cannot use an unverified peer for authentication", e);
}
}
// Create your own KafkaPrincipal here
...
}
}
12.2. KafkaListenerAuthenticationCustom
スキーマプロパティー
type
プロパティーは KafkaListenerAuthenticationCustom
タイプと KafkaListenerAuthenticationTls
, KafkaListenerAuthenticationScramSha512
, KafkaListenerAuthenticationOAuth
とを区別して使用するための識別子です。KafkaListenerAuthenticationCustom
タイプには custom
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
sasl | boolean | このリスナーで SASL を有効または無効にします。 |
listenerConfig | map |
特定のリスナーに使用される設定。すべての値に |
secrets |
|
第13章 GenericKafkaListenerConfiguration
スキーマリファレンス
GenericKafkaListenerConfiguration
スキーマプロパティーの全リスト
Kafka リスナーを設定します。
13.1. 独自のリスナー証明書の指定
brokerCertChainAndKey
プロパティーは、TLS 暗号化が有効になっているリスナーでのみ使用されます。このプロパティーを使用して、独自の Kafka リスナー証明書を指定します。
証明書を指定するための loadbalancer
リスナー設定の例
listeners: #... - name: external3 port: 9094 type: loadbalancer tls: true configuration: brokerCertChainAndKey: secretName: my-secret certificate: my-listener-certificate.crt key: my-listener-key.key # ...
listeners:
#...
- name: external3
port: 9094
type: loadbalancer
tls: true
configuration:
brokerCertChainAndKey:
secretName: my-secret
certificate: my-listener-certificate.crt
key: my-listener-key.key
# ...
brokerCertChainAndKey
シークレット内の証明書または鍵が更新されると、Operator が次回の調整で自動的に更新を検出し、Kafka ブローカーのローリング更新をトリガーして証明書をリロードします。
13.2. 他のノードへのホップを回避する
externalTrafficPolicy
プロパティーは、loadbalancer
や nodeport
のリスナーで使用されます。OpenShift の外部で Kafka を公開する場合は、Local
または Cluster
を選択できます。Local
は他のノードへのホップを避け、クライアントの IP を保持しますが、Cluster
はそのどちらでもありません。デフォルトは Cluster
です。
ホップを回避する loadbalancer
リスナー設定の例
listeners: #... - name: external3 port: 9094 type: loadbalancer tls: true configuration: externalTrafficPolicy: Local # ...
listeners:
#...
- name: external3
port: 9094
type: loadbalancer
tls: true
configuration:
externalTrafficPolicy: Local
# ...
13.3. ロードバランサーの CIDR ソース範囲の指定
loadBalancerSourceRanges
プロパティーは、loadbalancer
リスナーでのみ使用されます。OpenShift の外部で Kafka を公開する場合は、ラベルとアノテーションに加えて CIDR (Classless Inter-Domain Routing) ソースの範囲を使用して、サービスの作成方法をカスタマイズします。
ソース範囲を指定するための loadbalancer
リスナー設定の例
listeners: #... - name: external3 port: 9094 type: loadbalancer tls: true configuration: loadBalancerSourceRanges: - 10.0.0.0/8 - 88.208.76.87/32 # ...
listeners:
#...
- name: external3
port: 9094
type: loadbalancer
tls: true
configuration:
loadBalancerSourceRanges:
- 10.0.0.0/8
- 88.208.76.87/32
# ...
13.4. 優先ノードポートアドレスタイプの指定
preferredNodePortAddressType
プロパティーは、nodeport
リスナーでのみ使用されます。リスナー設定でこのプロパティーを使用して、ノードアドレスとしてチェックされる最初のアドレスタイプを指定します。このプロパティーは、たとえば、デプロイメントに DNS サポートがない場合や、ブローカーを内部 DNS または IP アドレスを通じて内部でのみ公開する場合に役立ちます。
該当タイプのアドレスが見つかった場合はそのアドレスが使用されます。優先アドレスタイプが見つからない場合、Streams for Apache Kafka は標準の優先順位に従ってタイプを処理します。
- ExternalDNS
- ExternalIP
- Hostname
- InternalDNS
- InternalIP
優先ノードポートアドレスタイプを使用する nodeport
リスナーの例
listeners: #... - name: external4 port: 9094 type: nodeport tls: false configuration: preferredNodePortAddressType: InternalDNS # ...
listeners:
#...
- name: external4
port: 9094
type: nodeport
tls: false
configuration:
preferredNodePortAddressType: InternalDNS
# ...
13.5. 完全修飾 DNS 名の使用
useServiceDnsDomain
プロパティーは、internal
および cluster-ip
リスナーで使用されます。クラスターサービスの接尾辞 (通常は .cluster.local
) を含む完全修飾 DNS 名を使用するかどうかを定義します。
-
アドバタイズされるアドレスをサービス接尾辞なしで生成するには、
false
(デフォルト) に設定します (例:my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc
)。 -
アドバタイズされるアドレスをサービス接尾辞付きで生成するには、
true
に設定します (例:my-cluster-kafka-0.my-cluster-kafka-brokers.myproject.svc.cluster.local
)。
サービス DNS ドメインを使用した internal
リスナーの例
listeners: #... - name: plain port: 9092 type: internal tls: false configuration: useServiceDnsDomain: true # ...
listeners:
#...
- name: plain
port: 9092
type: internal
tls: false
configuration:
useServiceDnsDomain: true
# ...
13.6. ホスト名の指定
ブートストラップリソースまたはブローカーに使用するホスト名を指定するには、host
プロパティーを使用します。host
プロパティーは、route
および ingress
リスナーでのみ使用されます。
Ingress リスナー設定には host
プロパティー値が必須です。Ingress コントローラーはホスト名を自動的に割り当てません。ホスト名が Ingress エンドポイントに解決されることを確認してください。Streams for Apache Kafka では、要求されたホストが利用可能であり、Ingress エンドポイントに適切にルーティングされることを確認するための検証は実行されません。
ホスト設定を使用した ingress
リスナーの例
listeners: #... - name: external2 port: 9094 type: ingress tls: true configuration: bootstrap: host: bootstrap.myingress.com brokers: - broker: 0 host: broker-0.myingress.com - broker: 1 host: broker-1.myingress.com - broker: 2 host: broker-2.myingress.com # ...
listeners:
#...
- name: external2
port: 9094
type: ingress
tls: true
configuration:
bootstrap:
host: bootstrap.myingress.com
brokers:
- broker: 0
host: broker-0.myingress.com
- broker: 1
host: broker-1.myingress.com
- broker: 2
host: broker-2.myingress.com
# ...
デフォルトでは、route リスナーのホストは OpenShift によって自動的に割り当てられます。ただし、ホストを指定して、割り当てられたルートをオーバーライドすることができます。
Streams for Apache Kafka では、要求されたホストが利用可能であることを確認するための検証は実行されません。ホストが使用可能であることを確認する必要があります。
ホスト設定の route
リスナーの例
... ...
# ...
listeners:
#...
- name: external1
port: 9094
type: route
tls: true
configuration:
bootstrap:
host: bootstrap.myrouter.com
brokers:
- broker: 0
host: broker-0.myrouter.com
- broker: 1
host: broker-1.myrouter.com
- broker: 2
host: broker-2.myrouter.com
# ...
13.7. 割り当てられたノードポートのオーバーライド
デフォルトでは、ブートストラップおよびブローカーサービスに使用されるポート番号は OpenShift によって自動的に割り当てられます。必要なポート番号を指定することにより、nodeport
リスナーに割り当てられたノードポートをオーバーライドできます。
Streams for Apache Kafka では、要求されたポートに対する検証は実行されません。ポートが使用できることを確認する必要があります。
ノードポートのオーバーライドが設定された nodeport
リスナー設定の例
... ...
# ...
listeners:
#...
- name: external4
port: 9094
type: nodeport
tls: true
configuration:
bootstrap:
nodePort: 32100
brokers:
- broker: 0
nodePort: 32000
- broker: 1
nodePort: 32001
- broker: 2
nodePort: 32002
# ...
13.8. 特定のロードバランサーの IP アドレスを要求する
ロードバランサーの作成時に特定の IP アドレスを要求するには、loadBalancerIP
プロパティーを使用します。このプロパティーは、特定の IP アドレスを持つロードバランサーを使用する必要がある場合に便利です。クラウドプロバイダーがこの機能をサポートしていない場合、loadBalancerIP
プロパティーは無視されます。
特定の IP アドレスを使用した loadbalancer
リスナーの例
... ...
# ...
listeners:
#...
- name: external3
port: 9094
type: loadbalancer
tls: true
configuration:
bootstrap:
loadBalancerIP: 172.29.3.10
brokers:
- broker: 0
loadBalancerIP: 172.29.3.1
- broker: 1
loadBalancerIP: 172.29.3.2
- broker: 2
loadBalancerIP: 172.29.3.3
# ...
13.9. OpenShift リソースへのリスナーアノテーションの追加
annotations
を使用して、リスナーに関連する OpenShift リソースにアノテーションを追加します。このアノテーションは、たとえば、ロードバランサーサービスに DNS 名を自動的に割り当てる External DNS などの DNS ツールを提供するために使用できます。
annotations
を使用した loadbalancer
リスナーの例
... ...
# ...
listeners:
#...
- name: external3
port: 9094
type: loadbalancer
tls: true
configuration:
bootstrap:
annotations:
external-dns.alpha.kubernetes.io/hostname: kafka-bootstrap.mydomain.com.
external-dns.alpha.kubernetes.io/ttl: "60"
brokers:
- broker: 0
annotations:
external-dns.alpha.kubernetes.io/hostname: kafka-broker-0.mydomain.com.
external-dns.alpha.kubernetes.io/ttl: "60"
- broker: 1
annotations:
external-dns.alpha.kubernetes.io/hostname: kafka-broker-1.mydomain.com.
external-dns.alpha.kubernetes.io/ttl: "60"
- broker: 2
annotations:
external-dns.alpha.kubernetes.io/hostname: kafka-broker-2.mydomain.com.
external-dns.alpha.kubernetes.io/ttl: "60"
# ...
13.10. GenericKafkaListenerConfiguration
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
brokerCertChainAndKey |
このリスナーに使用される証明書とプライベートキーのペアを保持する | |
class | string |
使用するコントローラーを定義する
|
externalTrafficPolicy | string ([Local、Cluster] のいずれか) | サービスで外部トラフィックをクラスター全体のエンドポイントにルーティングするか、ノードのローカルのエンドポイントにルーティングするかを指定します。
指定されていない場合、OpenShift では |
loadBalancerSourceRanges | string 配列 |
クライアントがロードバランサーリスナーに接続する際に使用できる接続元の CIDR 範囲のリスト (たとえば、 |
bootstrap | ブートストラップの設定。 | |
brokers | ブローカーごとの設定。 | |
ipFamilyPolicy | string ([RequireDualStack、SingleStack、PreferDualStack] のいずれか) |
サービスによって使用される IP Family Policy を指定します。利用可能なオプションは、
指定されていない場合、OpenShift はサービスタイプに基づいてデフォルト値を選択します。 |
ipFamilies | string ([IPv6、IPv4] のうち 1 つ以上) 配列 |
サービスによって使用される IP Families を指定します。利用可能なオプションは、 |
createBootstrapService | boolean |
ブートストラップサービスを作成するかどうか。ブートストラップサービスはデフォルトで作成されます (指定されない場合)。このフィールドは、 |
finalizers | string 配列 |
このリスナー用に作成された |
useServiceDnsDomain | boolean | 生成されるアドレスに OpenShift サービス DNS ドメインを含めるかどうかを設定します。
デフォルトは |
maxConnections | integer | ブローカーのこのリスナーでいつでも許可される最大接続数。制限に達すると、新しい接続はブロックされます。 |
maxConnectionCreationRate | integer | このリスナーでいつでも許可される最大接続作成率。制限に達すると、新しい接続はスロットリングされます。 |
preferredNodePortAddressType | string ([ExternalDNS、ExternalIP、Hostname、InternalIP、InternalDNS] のいずれか) |
ノードアドレスとして使用するアドレスタイプを定義します。使用可能なタイプは、
このプロパティーは、最初にチェックされる優先アドレスタイプを選択するために使用されます。このアドレスタイプのアドレスが見つからない場合は、他のタイプがデフォルトの順序でチェックされます。 |
publishNotReadyAddresses | boolean |
Pod 自体が準備完了でなくても、サービスエンドポイントが "準備完了" であるとみなすかどうかを設定します。デフォルトは |
第14章 CertAndKeySecretSource
スキーマリファレンス
GenericKafkaListenerConfiguration
、KafkaClientAuthenticationTls
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
secretName | string | 証明書が含まれる Secret の名前。 |
certificate | string | Secret のファイル証明書の名前。 |
key | string | Secret の秘密鍵の名前。 |
第15章 GenericKafkaListenerConfigurationBootstrap
スキーマリファレンス
GenericKafkaListenerConfiguration
で使用
GenericKafkaListenerConfigurationBootstrap
スキーマプロパティーの全リスト
リスナーのブートストラップサービス設定を指定します。
host
、nodePort
、loadBalancerIP
、および annotations
プロパティーの設定例は、GenericKafkaListenerConfiguration
スキーマ セクションに示されています。
15.1. 代替ブートストラップアドレスの指定
ブートストラップアドレスの代替名を指定するには、alternativeNames
プロパティーを使用します。このプロパティーは、すべてのタイプのリスナーに適用できます。名前はブローカー証明書に追加され、TLS ホスト名の検証に使用できます。
追加のブートストラップアドレスを含む route
リスナー設定の例
listeners: #... - name: external1 port: 9094 type: route tls: true configuration: bootstrap: alternativeNames: - example.hostname1 - example.hostname2 # ...
listeners:
#...
- name: external1
port: 9094
type: route
tls: true
configuration:
bootstrap:
alternativeNames:
- example.hostname1
- example.hostname2
# ...
15.2. GenericKafkaListenerConfigurationBootstrap
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
alternativeNames | string 配列 | ブートストラップサービスの追加の代替名。代替名は、TLS 証明書のサブジェクト代替名のリストに追加されます。 |
host | string |
ブートストラップリソースに使用するホスト名を指定します。 |
nodePort | integer |
ブートストラップサービスのノードポート。 |
loadBalancerIP | string |
このプロパティーで指定された IP アドレスを使用してロードバランサーが要求されます。この機能は、ロードバランサーの作成時に、基礎となるクラウドプロバイダーが |
annotations | map |
|
labels | map |
|
externalIPs | string 配列 |
nodeport サービスに関連付けられた外部 IP。これらの IP は、OpenShift クラスターの外部のクライアントが Kafka ブローカーにアクセスするために使用されます。このプロパティーは、 |
第16章 GenericKafkaListenerConfigurationBroker
スキーマリファレンス
GenericKafkaListenerConfiguration
で使用
GenericKafkaListenerConfigurationBroker
スキーマプロパティーの全リスト
リスナーのブローカー設定を指定します。
host
、nodePort
、loadBalancerIP
、および annotations
プロパティーの設定例は、GenericKafkaListenerConfiguration
スキーマ セクションに示されています。
16.1. ブローカーのアドバタイズされるアドレスのオーバーライド
デフォルトでは、Streams for Apache Kafka は、Kafka クラスターがクライアントにアドバタイズするホスト名とポートを自動的に決定しようとします。これはあらゆる状況に対応できるわけではありません。Streams for Apache Kafka が実行されているインフラストラクチャーで、Kafka にアクセスできる適切なホスト名またはポートが提供されない可能性があるためです。
ブローカー ID を指定し、リスナーの configuration
プロパティーでアドバタイズされたホスト名とポートをカスタマイズすることができます。その後、Streams for Apache Kafka は、アドバタイズされたアドレスを Kafka ブローカーに自動的に設定し、それをブローカー証明書に追加して、TLS ホスト名検証に使用できるようにします。アドバタイズされたホストおよびポートのオーバーライドは、すべてのタイプのリスナーで利用できます。
アドバタイズされたアドレスのオーバーライドを設定した外部 route
リスナーの例
listeners: #... - name: external1 port: 9094 type: route tls: true configuration: brokers: - broker: 0 advertisedHost: example.hostname.0 advertisedPort: 12340 - broker: 1 advertisedHost: example.hostname.1 advertisedPort: 12341 - broker: 2 advertisedHost: example.hostname.2 advertisedPort: 12342 # ...
listeners:
#...
- name: external1
port: 9094
type: route
tls: true
configuration:
brokers:
- broker: 0
advertisedHost: example.hostname.0
advertisedPort: 12340
- broker: 1
advertisedHost: example.hostname.1
advertisedPort: 12341
- broker: 2
advertisedHost: example.hostname.2
advertisedPort: 12342
# ...
16.2. GenericKafkaListenerConfigurationBroker
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
broker | integer | Kafka ブローカーの ID (ブローカー識別子)。ブローカー ID は 0 から始まり、ブローカーレプリカの数に対応します。 |
advertisedHost | string |
ブローカーの |
advertisedPort | integer |
ブローカーの |
host | string |
ブローカーホスト。このフィールドは、ホスト名を指定するために Ingress リソースまたは Route リソースで使用されます。このフィールドは、 |
nodePort | integer |
ブローカーごとのサービスのノードポート。このフィールドは、 |
loadBalancerIP | string |
ロードバランサーは、このフィールドに指定された IP アドレスで要求されます。この機能は、ロードバランサーの作成時に、基礎となるクラウドプロバイダーが |
annotations | map |
|
labels | map |
|
externalIPs | string 配列 |
nodeport サービスに関連付けられた外部 IP。これらの IP は、OpenShift クラスターの外部のクライアントが Kafka ブローカーにアクセスするために使用されます。このフィールドは、 |
第17章 EphemeralStorage
スキーマリファレンス
使用場所: JbodStorage
、KafkaClusterSpec
、KafkaNodePoolSpec
、ZookeeperClusterSpec
type
プロパティーは、EphemeralStorage
タイプの使用を、PersistentClaimStorage
から区別する識別子です。EphemeralStorage
タイプには ephemeral
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
id | integer | ストレージ ID 番号。これは、'jbod' タイプのストレージで定義されるストレージボリュームのみで必須です。 |
sizeLimit | string | type=ephemeral の場合、この EmptyDir ボリュームに必要なローカルストレージの合計容量を定義します (例: 1Gi)。 |
type | string |
|
kraftMetadata | 文字列 ([shared] のいずれか) |
このボリュームを KRaft メタデータの保存に使用するかどうかを指定します。このプロパティーは任意です。設定されている場合、現在サポートされている値は |
第18章 PersistentClaimStorage
スキーマリファレンス
使用場所: JbodStorage
、KafkaClusterSpec
、KafkaNodePoolSpec
、ZookeeperClusterSpec
type
プロパティーは、PersistentClaimStorage
タイプの使用を、EphemeralStorage
から区別する識別子です。PersistentClaimStorage
タイプには persistent-claim
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
id | integer | ストレージ ID 番号。これは、'jbod' タイプのストレージで定義されるストレージボリュームのみで必須です。 |
type | string |
|
size | string |
|
kraftMetadata | 文字列 ([shared] のいずれか) |
このボリュームを KRaft メタデータの保存に使用するかどうかを指定します。このプロパティーは任意です。設定されている場合、現在サポートされている値は |
class | string | 動的ボリュームの割り当てに使用するストレージクラス。 |
selector | map | 使用する特定の永続ボリュームを指定します。このようなボリュームを選択するラベルを表す key:value ペアが含まれます。 |
deleteClaim | boolean | クラスターのアンデプロイ時に永続ボリューム要求を削除する必要があるかどうかを指定します。 |
overrides |
|
第19章 PersistentClaimStorageOverride
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
class | string | このブローカーの動的ボリュームの割り当てに使用するストレージクラス。 |
broker | integer | Kafka ブローカーの ID (ブローカー ID)。 |
第20章 JbodStorage
スキーマリファレンス
使用場所: KafkaClusterSpec
、KafkaNodePoolSpec
type
プロパティーは、JbodStorage
タイプの使用を EphemeralStorage
と PersistentClaimStorage
から区別する識別子です。JbodStorage
タイプには jbod
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
volumes | JBOD ディスクアレイを表すストレージオブジェクトとしてのボリュームのリスト。 |
第21章 KafkaAuthorizationSimple
スキーマリファレンス
KafkaClusterSpec
で使用
KafkaAuthorizationSimple
スキーマプロパティーの全リスト
簡易認可を使用し、アクセス制御リスト (ACL) を定義するように Kafka
カスタムリソースを設定します。
ACL を使用すると、ユーザーがアクセスできるリソースを細かく定義できます。
Streams for Apache Kafka は次の Kafka の組み込み認可プラグインを使用します。
-
KRaft モードの Kafka の場合は
StandardAuthorizer
-
ZooKeeper ベースの Kafka の場合は
AclAuthorizer
authorization
セクションの type
プロパティーに simple
という値を設定し、スーパーユーザーのリストを設定します。スーパーユーザーは、ACL ルールをクエリーしなくても常に許可されます。
アクセスルールは、ACLRule スキーマリファレンス で説明されているように、KafkaUser
に対して設定されます。
simple
認可設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster namespace: myproject spec: kafka: # ... authorization: type: simple superUsers: - CN=user-1 - user-2 - CN=user-3 # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
namespace: myproject
spec:
kafka:
# ...
authorization:
type: simple
superUsers:
- CN=user-1
- user-2
- CN=user-3
# ...
Kafka.spec.kafka
の config
プロパティーにある super.user
設定オプションは無視されます。この代わりに、authorization
プロパティーでスーパーユーザーを指定します。
21.1. KafkaAuthorizationSimple
スキーマのプロパティー
type
プロパティーは、KafkaAuthorizationSimple
タイプの使用をKafkaAuthorizationOpa
およびKafkaAuthorizationKeycloak
、KafkaAuthorizationCustom
と区別するための識別子です。KafkaAuthorizationSimple
タイプには simple
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
superUsers | string 配列 | スーパーユーザーのリスト。無制限のアクセス権を取得する必要のあるユーザープリンシパルのリストが含まれなければなりません。 |
第22章 KafkaAuthorizationOpa
スキーマリファレンス
KafkaClusterSpec
で使用
KafkaAuthorizationOpa
スキーマプロパティーの全リスト
Open Policy Agent 認可を使用するように Kafka
カスタムリソースを設定します。
Open Policy Agentの認可を使用するには、authorization
セクションの type
プロパティーに opa
という値を設定し、必要に応じて OPA のプロパティーを設定します。Streams for Apache Kafka は、Kafka 認可用の Open Policy Agent プラグインをオーソライザーとして使用します。入力データのフォーマットやポリシーの例は、Open Policy Agent plugin for Kafka authorization を参照してください。
Open Policy Agent オーソライザー設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster namespace: myproject spec: kafka: # ... authorization: type: opa url: http://opa:8181/v1/data/kafka/allow allowOnError: false initialCacheCapacity: 1000 maximumCacheSize: 10000 expireAfterMs: 60000 superUsers: - CN=user-1 - user-2 - CN=user-3 # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
namespace: myproject
spec:
kafka:
# ...
authorization:
type: opa
url: http://opa:8181/v1/data/kafka/allow
allowOnError: false
initialCacheCapacity: 1000
maximumCacheSize: 10000
expireAfterMs: 60000
superUsers:
- CN=user-1
- user-2
- CN=user-3
# ...
22.1. KafkaAuthorizationOpa
スキーマのプロパティー
type
プロパティーは、KafkaAuthorizationOpa
タイプの使用を KafkaAuthorizationSimple
、KafkaAuthorizationKeycloak
、KafkaAuthorizationCustom
と区別するための識別子です。KafkaAuthorizationOpa
タイプには opa
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
url | string | Open Policy Agent サーバーへの接続に使用される URL。URL には、オーソライザーによってクエリーされるポリシーが含まれる必要があります。このオプションは必須です。 |
allowOnError | boolean |
一時的に利用できない場合など、オーソライザーによる Open Policy Agent へのクエリーが失敗した場合に、デフォルトで Kafka クライアントを許可または拒否するかどうかを定義します。デフォルトは |
initialCacheCapacity | integer |
すべてのリクエストに対して Open Policy Agent をクエリーしないようにするために、オーソライザーによって使用されるローカルキャッシュの初期容量。デフォルトは |
maximumCacheSize | integer |
すべてのリクエストに対して Open Policy Agent をクエリーしないようにするために、オーソライザーによって使用されるローカルキャッシュの最大容量。デフォルトは |
expireAfterMs | integer |
すべてのリクエストに対して Open Policy Agent をクエリーしないようにするために、ローカルキャッシュに保持されるレコードの有効期限。キャッシュされた認可の決定が Open Policy Agent サーバーから再ロードされる頻度を定義します。ミリ秒単位です。デフォルトは |
tlsTrustedCertificates | OPA サーバーへの TLS 接続用の信頼された証明書。 | |
superUsers | string 配列 | スーパーユーザーのリスト。これは、無制限のアクセス権限を持つユーザープリンシパルのリストです。 |
enableMetrics | boolean |
Open Policy Agent オーソライザープラグインでメトリックを指定するかどうかを定義します。デフォルトは |
第23章 KafkaAuthorizationKeycloak
スキーマリファレンス
KafkaClusterSpec
で使用
type
プロパティーは、KafkaAuthorizationKeycloak
タイプの使用をKafkaAuthorizationSimple
、KafkaAuthorizationOpa
、KafkaAuthorizationCustom
と区別するための識別子です。KafkaAuthorizationKeycloak
タイプには keycloak
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
clientId | string | Kafka クライアントが OAuth サーバーに対する認証に使用し、トークンエンドポイント URI を使用することができる OAuth クライアント ID。 |
tokenEndpointUri | string | 認可サーバートークンエンドポイント URI。 |
tlsTrustedCertificates | OAuth サーバーへの TLS 接続の信頼済み証明書。 | |
disableTlsHostnameVerification | boolean |
TLS ホスト名の検証を有効または無効にします。デフォルト値は |
delegateToKafkaAcls | boolean |
認可の決定が Red Hat build of Keycloak の Authorization Services サービスポリシーによって拒否された場合に、認可の決定を 'Simple' オーソライザーに委譲するかどうか。デフォルト値は |
grantsRefreshPeriodSeconds | integer | 連続する付与更新実行の間隔 (秒単位)。デフォルト値は 60 です。 |
grantsRefreshPoolSize | integer | アクティブなセッションの付与の更新に使用するスレッドの数。スレッドが多いほど並列処理多くなるため、ジョブがより早く完了します。ただし、使用するスレッドが多いほど、認可サーバーの負荷が大きくなります。デフォルト値は 5 です。 |
grantsMaxIdleTimeSeconds | integer | アイドル許可をキャッシュからエビクトるようになるまでの時間 (秒単位)。デフォルト値は 300 です。 |
grantsGcPeriodSeconds | integer | キャッシュから古い許可を削除するジョブの連続実行間の時間 (秒単位)。デフォルト値は 300 です。 |
grantsAlwaysLatest | boolean |
新しいセッションに対して最新の許可を取得するかどうかを制御します。有効にすると、Red Hat build of Keycloak から許可が取得され、ユーザー用にキャッシュされます。デフォルト値は |
superUsers | string 配列 | スーパーユーザーのリスト。無制限のアクセス権を取得する必要のあるユーザープリンシパルのリストが含まれなければなりません。 |
connectTimeoutSeconds | integer | 認可サーバーへの接続時のタイムアウト (秒単位)。設定しない場合は、実際の接続タイムアウトは 60 秒になります。 |
readTimeoutSeconds | integer | 認可サーバーへの接続時の読み取りタイムアウト (秒単位)。設定しない場合は、実際の読み取りタイムアウトは 60 秒になります。 |
httpRetries | integer | 最初の HTTP リクエストが失敗した場合に試行する最大再試行回数。設定されていない場合、デフォルトでは再試行は行われません。 |
enableMetrics | boolean |
OAuth メトリックを有効または無効にします。デフォルト値は |
includeAcceptHeader | boolean |
認可サーバーへのリクエストに Accept ヘッダーを設定するかどうか。デフォルト値は |
第24章 KafkaAuthorizationCustom
スキーマリファレンス
KafkaClusterSpec
で使用
KafkaAuthorizationCustom
スキーマプロパティーの全リスト
カスタム認証を使用し、アクセス制御リスト (ACL) を定義するように Kafka
カスタムリソースを設定します。
ACL を使用すると、ユーザーがアクセスできるリソースを細かく定義できます。カスタム ACL をサポートするための org.apache.kafka.server.authorizer.Authorizer
インターフェイスを実装するオーソライザークラスを指定するように Kafka
カスタムリソースを設定します。authorization
セクションの type
プロパティーを値 custom
に設定し、スーパーユーザーのリストを設定します。スーパーユーザーは、ACL ルールをクエリーしなくても常に許可されます。Kafka.spec.kafka.config
を使用してカスタムオーソライザーを初期化するための設定をさらに追加します。
custom
認可設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster namespace: myproject spec: kafka: # ... authorization: type: custom authorizerClass: io.mycompany.CustomAuthorizer superUsers: - CN=user-1 - user-2 - CN=user-3 # ... config: authorization.custom.property1=value1 authorization.custom.property2=value2 # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
namespace: myproject
spec:
kafka:
# ...
authorization:
type: custom
authorizerClass: io.mycompany.CustomAuthorizer
superUsers:
- CN=user-1
- user-2
- CN=user-3
# ...
config:
authorization.custom.property1=value1
authorization.custom.property2=value2
# ...
Kafka.spec.kafka
の config
プロパティーにある super.user
設定オプションは無視されます。この代わりに、authorization
プロパティーでスーパーユーザーを指定します。
24.1. コンテナーイメージへのカスタムオーソライザー JAR ファイルの追加
Kafka
カスタムリソース設定に加えて、カスタムオーソライザークラスとその依存関係を含む JAR ファイルが、Kafka ブローカーのクラスパスで使用可能である必要があります。
このファイルは、ソースコードから Streams for Apache Kafka をビルドすることで追加できます。Streams for Apache Kafka のビルドプロセスは、docker-images/artifacts/kafka-thirdparty-libs
ディレクトリー配下の pom.xml
ファイルに依存関係としてカスタムのサードパーティーライブラリーを追加することで、生成された Kafka ブローカーコンテナーイメージにカスタムのサードパーティーライブラリーを追加するメカニズムを備えています。ディレクトリーには、Kafka のバージョンごとに異なるフォルダーが含まれています。適切なフォルダーを選択します。pom.xml
ファイルを変更する前に、サードパーティーライブラリーが Maven リポジトリーで使用可能である必要があります。また、その Maven リポジトリーが、Streams for Apache Kafka のビルドプロセスからアクセス可能である必要があります。
あるいは、既存の Streams for Apache Kafka コンテナーイメージに JAR を追加することもできます。
FROM registry.redhat.io/amq-streams/kafka-38-rhel9:2.8.0 USER root:root COPY ./my-authorizer/ /opt/kafka/libs/ USER 1001
FROM registry.redhat.io/amq-streams/kafka-38-rhel9:2.8.0
USER root:root
COPY ./my-authorizer/ /opt/kafka/libs/
USER 1001
24.2. OAuth 認証でカスタムオーソライザーの使用
groupsClaim
設定で oauth
認証を使用して JWT トークンからユーザーグループ情報を抽出する場合、グループ情報はカスタム認証呼び出しで使用できます。次のように、カスタム認証呼び出し中に OAuthKafkaPrincipal
オブジェクトを通じてグループにアクセスできます。
public List<AuthorizationResult> authorize(AuthorizableRequestContext requestContext, List<Action> actions) { KafkaPrincipal principal = requestContext.principal(); if (principal instanceof OAuthKafkaPrincipal) { OAuthKafkaPrincipal p = (OAuthKafkaPrincipal) principal; for (String group: p.getGroups()) { System.out.println("Group: " + group); } } }
public List<AuthorizationResult> authorize(AuthorizableRequestContext requestContext, List<Action> actions) {
KafkaPrincipal principal = requestContext.principal();
if (principal instanceof OAuthKafkaPrincipal) {
OAuthKafkaPrincipal p = (OAuthKafkaPrincipal) principal;
for (String group: p.getGroups()) {
System.out.println("Group: " + group);
}
}
}
24.3. KafkaAuthorizationCustom
スキーマのプロパティー
type
プロパティーは、KafkaAuthorizationCustom
タイプの使用を KafkaAuthorizationSimple
、KafkaAuthorizationOpa
、KafkaAuthorizationKeycloak
と区別する識別子です。タイプ KafkaAuthorizationCustom
の値が custom
である必要があります。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
authorizerClass | string | 認可実装クラス。クラスパスで使用できる必要があります。 |
superUsers | string 配列 | スーパーユーザーのリスト。これは、無制限のアクセス権限を持つユーザープリンシパルです。 |
supportsAdminApi | boolean |
カスタムオーソライザーが、Kafka Admin API を使用して ACL を管理するための API をサポートしているかどうかを示します。デフォルトは |
第25章 Rack
スキーマリファレンス
使用先: KafkaBridgeSpec
、KafkaClusterSpec
、KafkaConnectSpec
、KafkaMirrorMaker2Spec
rack
オプションは、ラックアウェアネスを設定します。ラックは、アベイラビリティーゾーン、データセンター、またはデータセンターの実際のラックを表すことができます。rackの設定は、topologyKey
で行います。topologyKey
は、OpenShift ノード上のラベルを識別するもので、その値にはトポロジーの名前が含まれています。このようなラベルの例としては、topology.kubernetes.io/zone
(古い OpenShift バージョンでは failure-domain.beta.kubernetes.io/zone
) があり、これには OpenShift ノードが実行されているアベイラビリティゾーンの名前が含まれています。Kafka クラスターが実行するラックを認識するように設定し、パーティションレプリカを異なるラックに分散したり、最も近いレプリカからのメッセージの消費したりするなどの追加機能を有効にできます。
OpenShift ノードラベルの詳細は、Well-Known Labels, Annotations and Taints を参照してください。ノードがデプロイされたゾーンやラックを表すノードラベルについては、OpenShift 管理者に相談します。
25.1. ラック間でのパーティションレプリカの分散
ラックアウェアネスが設定されると、Streams for Apache Kafka が各 Kafka ブローカーに対して broker.rack
を設定します。broker.rack
設定によって、各ブローカーにラック ID が割り当てられます。broker.rack
を設定すると、Kafka ブローカーはパーティションレプリカをできるだけ多くの異なるラックに分散して配置します。レプリカが複数のラックに分散されている場合、複数のレプリカが同時に失敗する可能性は、同じラックにある場合よりも低くなります。レプリカを分散すると回復性が向上し、可用性と信頼性にとっても重要です。Kafka でラックアウェアネスを有効にするには、以下の例のように、Kafka
のカスタムリソースの .spec.kafka
セクションに rack
オプションを追加します。
Kafka の rack
設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... rack: topologyKey: topology.kubernetes.io/zone # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
Pod が削除または再起動すると、ブローカーが実行されているラックは、変更されることがあります。その結果、異なるラックで実行しているレプリカが、同じラックを共有する可能性があります。RackAwareGoal
で Cruise Control と KafkaRebalance
リソースを使用して、レプリカが異なるラックに分散していることを確認します。
Kafka
カスタムリソースでラックアウェアネスが有効になっている場合、Streams for Apache Kafka は、OpenShift の preferredDuringSchedulingIgnoredDuringExecution
アフィニティールールを自動的に追加し、Kafka ブローカーを別々のラックに分散します。ただし、優先 ルールは、ブローカーが分散されることを保証しません。OpenShift と Kafka の設定に応じて、affinity
ルールを追加したり、ZooKeeper と Kafka の両方に topologySpreadConstraints
を設定したりして、できるだけ多くのラックにノードが適切に分散されるようにしてください。詳細は、Pod スケジューリングの設定 を参照してください。
25.2. 最も近いレプリカからのメッセージの消費
ラックアウェアネスをコンシューマーで使用して、最も近いレプリカからデータを取得することもできます。これは、Kafka クラスターが複数のデータセンターにまたがる場合に、ネットワークの負荷を軽減するのに役立ちます。また、パブリッククラウドで Kafka を実行する場合にコストを削減することもできます。ただし、レイテンシーが増加する可能性があります。
最も近いレプリカから使用できるようにするには、Kafka クラスターでラックアウェアネスを設定し、RackAwareReplicaSelector
を有効にする必要があります。レプリカセレクタープラグインは、クライアントが最も近いレプリカから消費できるようにするロジックを提供します。デフォルトの実装では、LeaderSelector
を使用して、常にクライアントのリーダーレプリカを選択します。replica.selector.class
に RackAwareReplicaSelector
を指定すると、デフォルトの実装から切り替わります。
レプリカ対応セレクターを有効にした rack
設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... rack: topologyKey: topology.kubernetes.io/zone config: # ... replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
config:
# ...
replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector
# ...
Kafka ブローカーの設定に加えて、コンシューマーに client.rack
オプションを指定する必要があります。client.rack
オプションには、コンシューマーが稼動しているrack IDを指定する必要があります。RackAwareReplicaSelector
は、マッチングした broker.rack
と client.rack
ID を関連付けて、最も近いレプリカを見つけ、そこからデータを取得します。同じラック内に複数のレプリカがある場合、RackAwareReplicaSelector
は常に最新のレプリカを選択します。ラック ID が指定されていない場合や、同じラック ID を持つレプリカが見つからない場合は、リーダーレプリカにフォールバックします。
図25.1 同じアベイラビリティーゾーンのレプリカから消費するクライアントの例

コネクターが最も近いレプリカからのメッセージを消費するように、Kafka Connect、MirrorMaker 2、および Kafka Bridge を設定することもできます。KafkaConnect
、KafkaMirrorMaker2
、および KafkaBridge
カスタムリソースでラックアウェアネスを有効にします。この設定ではアフィニティールールは設定されませんが、affinity
または topologySpreadConstraints
を設定することもできます。詳細は、Pod スケジューリングの設定 を参照してください。
Streams for Apache Kafka を使用して Kafka Connect をデプロイする場合、KafkaConnect
カスタムリソースの rack
セクションを使用して client.rack
オプションを自動的に設定できます。
Kafka Connect の rack
設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect # ... spec: # ... rack: topologyKey: topology.kubernetes.io/zone # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
Streams for Apache Kafka を使用して MirrorMaker 2 をデプロイする場合、KafkaMirrorMaker2
カスタムリソースの rack
セクションを使用して client.rack
オプションを自動的に設定できます。
MirrorMaker 2 の rack
設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaMirrorMaker2 # ... spec: # ... rack: topologyKey: topology.kubernetes.io/zone # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
Streams for Apache Kafka を使用して Kafka Bridge をデプロイする場合、KafkaBridge
カスタムリソースの rack
セクションを使用して client.rack
オプションを自動的に設定できます。
Kafka Bridge の rack
設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaBridge # ... spec: # ... rack: topologyKey: topology.kubernetes.io/zone # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
25.3. Rack
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
topologyKey | string |
OpenShift クラスターノードに割り当てられたラベルに一致するキー。ラベルの値は、ブローカーの |
第26章 Probe
スキーマリファレンス
CruiseControlSpec
、EntityTopicOperatorSpec
、EntityUserOperatorSpec
、KafkaBridgeSpec
、KafkaClusterSpec
、KafkaConnectSpec
、KafkaExporterSpec
、KafkaMirrorMaker2Spec
、KafkaMirrorMakerSpec
、TlsSidecar
、ZookeeperClusterSpec
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
initialDelaySeconds | integer | 最初に健全性をチェックするまでの初期の遅延。デフォルトは 15 秒です。最小値は 0 です。 |
timeoutSeconds | integer | ヘルスチェック試行のタイムアウト。デフォルトは 5 秒です。最小値は 1 です。 |
periodSeconds | integer | プローブを実行する頻度 (秒単位)。デフォルトは 10 秒です。最小値は 1 です。 |
successThreshold | integer | 失敗後に、プローブが正常とみなされるための最小の連続成功回数。デフォルトは 1 です。liveness は 1 でなければなりません。最小値は 1 です。 |
failureThreshold | integer | 正常に実行された後に失敗とみなされるプローブの連続失敗回数の最小値。デフォルトは 3 です。最小値は 1 です。 |
第27章 JvmOptions
スキーマリファレンス
使用場所: CruiseControlSpec
, EntityTopicOperatorSpec
, EntityUserOperatorSpec
, KafkaBridgeSpec
, KafkaClusterSpec
, KafkaConnectSpec
, KafkaMirrorMaker2Spec
, KafkaMirrorMakerSpec
, KafkaNodePoolSpec
, ZookeeperClusterSpec
プロパティー | プロパティータイプ | 説明 |
---|---|---|
-XX | map | JVM への -XX オプションのマップ。 |
-Xmx | string | JVM への -Xmx オプション。 |
-Xms | string | JVM への -Xms オプション。 |
gcLoggingEnabled | boolean | ガベージコレクションのロギングが有効かどうかを指定します。デフォルトは false です。 |
javaSystemProperties |
|
第28章 SystemProperty
スキーマリファレンス
JvmOptions
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
name | string | システムプロパティー名。 |
value | string | システムプロパティーの値。 |
第29章 KafkaJmxOptions
スキーマリファレンス
KafkaClusterSpec
、KafkaConnectSpec
、KafkaMirrorMaker2Spec
、ZookeeperClusterSpec
で使用
KafkaJmxOptions
スキーマプロパティーの全リスト
JMX 接続オプションを設定します。
ポート 9999 に接続して、Kafka ブローカー、ZooKeeper ノード、Kafka Connect、および MirrorMaker 2 から JMX メトリックを取得します。パスワードで保護された JMX ポート、または保護されていない JMX ポートを設定するには、jmxOptions
プロパティーを使用します。パスワードで保護すると、未許可の Pod によるポートへの不正アクセスを防ぐことができます。
その後、コンポーネントに関するメトリックを取得できます。
たとえば、Kafka ブローカーごとに、クライアントからのバイト/秒の使用度データや、ブローカーのネットワークの要求レートを取得することができます。
JMX ポートのセキュリティーを有効にするには、authentication
フィールドの type
パラメーターを password
に設定します。
Kafka ブローカーと ZooKeeper ノード用のパスワードで保護された JMX 設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... jmxOptions: authentication: type: "password" # ... zookeeper: # ... jmxOptions: authentication: type: "password" #...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
jmxOptions:
authentication:
type: "password"
# ...
zookeeper:
# ...
jmxOptions:
authentication:
type: "password"
#...
次に、対応するブローカーを指定して、Pod をクラスターにデプロイし、ヘッドレスサービスを使用して JMX メトリックを取得できます。
たとえば、ブローカー 0 から JMX メトリックを取得するには、以下を指定します。
"CLUSTER-NAME-kafka-0.CLUSTER-NAME-kafka-brokers"
"CLUSTER-NAME-kafka-0.CLUSTER-NAME-kafka-brokers"
CLUSTER-NAME-kafka-0
はブローカー Pod の名前、CLUSTER-NAME-kafka-brokers
はブローカー Pod の IP を返すヘッドレスサービスの名前です。
JMX ポートがセキュアである場合、Pod のデプロイメントで JMX Secret からユーザー名とパスワードを参照すると、そのユーザー名とパスワードを取得できます。
保護されていない JMX ポートの場合は、空のオブジェクト {}
を使用して、ヘッドレスサービスの JMX ポートを開きます。保護されたポートと同じ方法で Pod をデプロイし、メトリックを取得できますが、この場合はどの Pod も JMX ポートから読み取ることができます。
Kafka ブローカーと ZooKeeper ノードのオープンポート JMX 設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... jmxOptions: {} # ... zookeeper: # ... jmxOptions: {} # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
jmxOptions: {}
# ...
zookeeper:
# ...
jmxOptions: {}
# ...
29.1. KafkaJmxOptions
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
認証 | JMX ポートに接続するための認証設定。 |
第30章 KafkaJmxAuthenticationPassword
スキーマリファレンス
KafkaJmxOptions
で使用
type
プロパティーは、KafkaJmxAuthenticationPassword
タイプの使用と、今後追加される可能性のある他のサブタイプとを区別するための識別情報です。KafkaJmxAuthenticationPassword
タイプには password
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
第31章 JmxPrometheusExporterMetrics
スキーマリファレンス
CruiseControlSpec
、KafkaClusterSpec
、KafkaConnectSpec
、KafkaMirrorMaker2Spec
、KafkaMirrorMakerSpec
、ZookeeperClusterSpec
で使用
type
プロパティーは、JmxPrometheusExporterMetrics
タイプの使用と、将来追加される可能性のある他のサブタイプとを区別する識別子です。JmxPrometheusExporterMetrics
タイプの値 jmxPrometheusExporter
を持つ必要があります。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
valueFrom | Prometheus JMX Exporter 設定が保存される ConfigMap エントリー。 |
第32章 ExternalConfigurationReference
のスキーマリファレンス
ExternalLogging
、JmxPrometheusExporterMetrics
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
configMapKeyRef | 設定が含まれる ConfigMap のキーへの参照。 |
第33章 InlineLogging
スキーマリファレンス
CruiseControlSpec
、EntityTopicOperatorSpec
、EntityUserOperatorSpec
、KafkaBridgeSpec
、KafkaClusterSpec
、KafkaConnectSpec
、KafkaMirrorMaker2Spec
、KafkaMirrorMakerSpec
、ZookeeperClusterSpec
で使用
type
プロパティーは、InlineLogging
タイプの使用と、ExternalLogging
.を区別するための識別子です。InlineLogging
タイプには inline
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
loggers | map | ロガー名からロガーレベルへのマップ。 |
第34章 ExternalLogging
スキーマリファレンス
CruiseControlSpec
、EntityTopicOperatorSpec
、EntityUserOperatorSpec
、KafkaBridgeSpec
、KafkaClusterSpec
、KafkaConnectSpec
、KafkaMirrorMaker2Spec
、KafkaMirrorMakerSpec
、ZookeeperClusterSpec
で使用
type
プロパティーは、ExternalLogging
タイプの使用を、InlineLogging
と区別するための識別子です。ExternalLogging
タイプには external
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
valueFrom |
ロギング設定が保存される |
第35章 KafkaClusterTemplate
スキーマリファレンス
KafkaClusterSpec
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
statefulset |
| |
Pod |
Kafka | |
bootstrapService |
Kafka ブートストラップ | |
brokersService |
Kafka ブローカー | |
externalBootstrapService |
Kafka 外部ブートストラップ | |
perPodService |
OpenShift の外部からアクセスするために使用される Pod ごとの Kafka | |
externalBootstrapRoute |
Kafka 外部ブートストラップ | |
perPodRoute |
OpenShift の外部からアクセスするために使用される Kafka の Pod ごとの | |
externalBootstrapIngress |
Kafka 外部ブートストラップ | |
perPodIngress |
OpenShift の外部からアクセスするために使用される Kafka の Pod ごとの | |
persistentVolumeClaim |
すべての Kafka | |
podDisruptionBudget |
Kafka | |
kafkaContainer | Kafka ブローカーコンテナーのテンプレート。 | |
initContainer | Kafka init コンテナーのテンプレート。 | |
clusterCaCert | Kafka Cluster 証明書の公開鍵が含まれる Secret のテンプレート。 | |
serviceAccount | Kafka サービスアカウントのテンプレート。 | |
jmxSecret | Kafka Cluster JMX 認証の Secret のテンプレートです。 | |
clusterRoleBinding | Kafka ClusterRoleBinding のテンプレート。 | |
podSet |
Kafka |
第36章 StatefulSetTemplate
スキーマリファレンス
KafkaClusterTemplate
、ZookeeperClusterTemplate
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
metadata | リソースに適用済みのメタデータ。 | |
podManagementPolicy | string ([OrderedReady、Parallel] のいずれか) |
この StatefulSet に使用される PodManagementPolicy。有効な値は |
第37章 MetadataTemplate
スキーマリファレンス
BuildConfigTemplate
、DeploymentTemplate
、InternalServiceTemplate
、PodDisruptionBudgetTemplate
、PodTemplate
、ResourceTemplate
、StatefulSetTemplate
で使用
MetadataTemplate
スキーマプロパティーの全リスト
Labels
および Annotations
は、リソースの識別および整理に使用され、metadata
プロパティーで設定されます。
以下に例を示します。
... ...
# ...
template:
pod:
metadata:
labels:
label1: value1
label2: value2
annotations:
annotation1: value1
annotation2: value2
# ...
labels
および annotations
フィールドには、予約された文字列 strimzi.io
が含まれないすべてのラベルやアノテーションを含めることができます。strimzi.io
を含むラベルとアノテーションは、Streams for Apache Kafka によって内部的に使用され、設定することはできません。
37.1. MetadataTemplate
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
labels | map | OpenShift リソースに追加されたラベル。 |
annotations | map | OpenShift リソースにアノテーションが追加されました。 |
第38章 PodTemplate
スキーマリファレンス
使用場所: CruiseControlTemplate
, EntityOperatorTemplate
, JmxTransTemplate
, KafkaBridgeTemplate
, KafkaClusterTemplate
, KafkaConnectTemplate
, KafkaExporterTemplate
, KafkaMirrorMakerTemplate
, KafkaNodePoolTemplate
, ZookeeperClusterTemplate
Kafka Pod のテンプレートを設定します。
PodTemplate
の設定例
...
# ...
template:
pod:
metadata:
labels:
label1: value1
annotations:
anno1: value1
imagePullSecrets:
- name: my-docker-credentials
securityContext:
runAsUser: 1000001
fsGroup: 0
terminationGracePeriodSeconds: 120
hostAliases:
- ip: "192.168.1.86"
hostnames:
- "my-host-1"
- "my-host-2"
#...
hostAliases
プロパティーを使用して、Pod の /etc/hosts
ファイルに注入されるホストと IP アドレスのリストを指定します。この設定は特に、クラスター外部の接続がユーザーによっても要求される場合に Kafka Connect または MirrorMaker で役立ちます。
38.1. PodTemplate
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
metadata | リソースに適用済みのメタデータ。 | |
imagePullSecrets |
この Pod で使用されるイメージのプルに使用する同じ namespace のシークレットへの参照のリストです。Cluster Operator の環境変数 | |
securityContext | Pod レベルのセキュリティー属性と共通のコンテナー設定を設定します。 | |
terminationGracePeriodSeconds | integer | 猶予期間とは、Pod で実行されているプロセスに終了シグナルが送信されてから、kill シグナルでプロセスを強制的に終了するまでの期間 (秒単位) です。この値は、プロセスの予想されるクリーンアップ時間よりも長く設定します。値は負の値ではない整数にする必要があります。値をゼロにすると、即座に削除されます。非常に大型な Kafka クラスターの場合は、正常終了期間を延長し、Kafka ブローカーの終了前に作業を別のブローカーに転送する時間を十分確保する必要があることがあります。デフォルトは 30 秒です。 |
affinity | Pod のアフィニティールール。 | |
tolerations | toleration 配列 | Pod の許容 (Toleration)。 |
topologySpreadConstraints | Pod のトポロジー分散制約。 | |
priorityClassName | string | 優先順位を Pod に割り当てるために使用される優先順位クラス (Priority Class) の名前。 |
schedulerName | string |
この |
hostAliases | HostAlias 配列 | Pod の HostAliases。HostAliases は、指定された場合に Pod の hosts ファイルに注入されるホストおよび IP のオプションのリストです。 |
enableServiceLinks | boolean | サービスの情報を Pod の環境変数に注入するかどうかを示します。 |
tmpDirSizeLimit | string |
一時的な |
volumes | Pod にマウントできる追加のボリューム。 |
第39章 AdditionalVolume
スキーマリファレンス
使用場所: PodTemplate
プロパティー | プロパティータイプ | 説明 |
---|---|---|
name | string | ボリュームに使用する名前。必須。 |
secret | ボリュームを作成するために使用するシークレット。 | |
configMap | ボリュームを設定するために使用する ConfigMap。 | |
emptyDir | ボリュームを作成するために使用する EmptyDir。 | |
persistentVolumeClaim | ボリュームを設定するために使用する PersistentVolumeClaim オブジェクト。 |
第40章 InternalServiceTemplate
のスキーマリファレンス
CruiseControlTemplate
、KafkaBridgeTemplate
、KafkaClusterTemplate
、KafkaConnectTemplate
、ZookeeperClusterTemplate
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
metadata | リソースに適用済みのメタデータ。 | |
ipFamilyPolicy | string ([RequireDualStack、SingleStack、PreferDualStack] のいずれか) |
サービスによって使用される IP Family Policy を指定します。利用可能なオプションは、 |
ipFamilies | string ([IPv6、IPv4] のうち 1 つ以上) 配列 |
サービスによって使用される IP Families を指定します。利用可能なオプションは、 |
第41章 ResourceTemplate
スキーマリファレンス
使用場所: CruiseControlTemplate
, EntityOperatorTemplate
, JmxTransTemplate
, KafkaBridgeTemplate
, KafkaClusterTemplate
, KafkaConnectTemplate
, KafkaExporterTemplate
, KafkaMirrorMakerTemplate
, KafkaNodePoolTemplate
, KafkaUserTemplate
, ZookeeperClusterTemplate
プロパティー | プロパティータイプ | 説明 |
---|---|---|
metadata | リソースに適用済みのメタデータ。 |
第42章 PodDisruptionBudgetTemplate
スキーマリファレンス
CruiseControlTemplate
、KafkaBridgeTemplate
、KafkaClusterTemplate
、KafkaConnectTemplate
、KafkaMirrorMakerTemplate
、ZookeeperClusterTemplate
で使用
PodDisruptionBudgetTemplate
スキーマプロパティーの全リスト
PodDisruptionBudget
(PDB) は、計画されたメンテナンスまたはアップグレード中に使用可能にする必要がある Pod の最小数を指定することで高可用性を確保する OpenShift リソースです。Streams for Apache Kafka は、新しい StrimziPodSet
または Deployment
ごとに PDB を作成します。デフォルトでは、PDB は一度に 1 つの Pod のみを使用不能にすることができます。maxUnavailable
プロパティーのデフォルト値を変更して、許容される利用不可能な Pod の数を増やすことができます。
StrimziPodSet
カスタムリソースは、maxUnavailable
値を直接使用できないカスタムコントローラーを使用して Pod を管理します。代わりに、次の例に示すように、PDB リソースの作成時に maxUnavailable
値が minAvailable
値に自動的に変換され、実質的に同じ目的を果たします。
-
ブローカー Pod が 3 つあり、
Kafka
リソースでmaxUnavailable
プロパティーが1
に設定されている場合、minAvailable
設定は2
となり、1 つの Pod が使用不可になることが許可されます。 -
ブローカー Pod が 3 つあり、
maxUnavailable
プロパティーが0
(ゼロ) に設定されている場合、minAvailable
設定は3
で、3 つのブローカー Pod すべてが使用可能である必要があり、使用できない Pod が存在しないことが許可されます。
PodDisruptionBudget
テンプレートの設定例
... ...
# ...
template:
podDisruptionBudget:
metadata:
labels:
key1: label1
key2: label2
annotations:
key1: label1
key2: label2
maxUnavailable: 1
# ...
42.1. PodDisruptionBudgetTemplate
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
metadata |
| |
maxUnavailable | integer |
自動 Pod エビクションを許可するための利用不可能な Pod の最大数。Pod エビクションは、 |
第43章 ContainerTemplate
スキーマリファレンス
使用場所: CruiseControlTemplate
, EntityOperatorTemplate
, JmxTransTemplate
, KafkaBridgeTemplate
, KafkaClusterTemplate
, KafkaConnectTemplate
, KafkaExporterTemplate
, KafkaMirrorMakerTemplate
, KafkaNodePoolTemplate
, ZookeeperClusterTemplate
ContainerTemplate
スキーマプロパティーの全リスト
コンテナーのカスタムのセキュリティーコンテキストおよび環境変数を設定できます。
環境変数は、env
プロパティーで name
および value
フィールドのあるオブジェクトのリストとして定義されます。以下の例は、Kafka ブローカーコンテナーに設定された 2 つのカスタム環境変数と 1 つのセキュリティーコンテキストを示しています。
... ...
# ...
template:
kafkaContainer:
env:
- name: EXAMPLE_ENV_1
value: example.env.one
- name: EXAMPLE_ENV_2
value: example.env.two
securityContext:
runAsUser: 2000
# ...
KAFKA_
で始まる環境変数は、Streams for Apache Kafka 内部用の変数であるため、使用しないでください。Streams for Apache Kafka ですでに使用されているカスタム環境変数を設定した場合、その変数は無視され、ログに警告が記録されます。
43.1. ContainerTemplate
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
env | コンテナーに適用する必要のある環境変数。 | |
securityContext | コンテナーのセキュリティーコンテキスト。 | |
volumeMounts | VolumeMount 配列 | コンテナーに適用する必要がある追加のボリュームマウント。 |
第44章 ContainerEnvVar
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
name | string | 環境変数のキー。 |
value | string | 環境変数の値。 |
第45章 TieredStorageCustom
スキーマリファレンス
KafkaClusterSpec
で使用
TieredStorageCustom
スキーマプロパティーの全リスト
Kafka のカスタム階層化ストレージを有効にします。
カスタム階層化ストレージを使用する場合は、まずカスタムコンテナーイメージをビルドして、Kafka プラグインの階層化ストレージを Streams for Apache Kafka イメージに追加する必要があります。
カスタム階層化ストレージ設定により、カスタムの RemoteStorageManager
設定を使用できるようになります。RemoteStorageManager
は、Kafka とリモート階層化ストレージ間の対話を管理するための Kafka インターフェイスです。
カスタム階層化ストレージが有効な場合、Streams for Apache Kafka は、Remote Log Metadata Management (RLMM) に TopicBasedRemoteLogMetadataManager
を使用します。
階層化ストレージは Kafka の早期アクセス機能であり、Streams for Apache Kafka でも利用できます。現在の制限 により、実稼働環境では推奨されません。
カスタム階層化ストレージ設定の例
kafka: tieredStorage: type: custom remoteStorageManager: className: com.example.kafka.tiered.storage.s3.S3RemoteStorageManager classPath: /opt/kafka/plugins/tiered-storage-s3/* config: # A map with String keys and String values. # Key properties are automatically prefixed with `rsm.config.` # and appended to Kafka broker config. storage.bucket.name: my-bucket config: ... # Additional RLMM configuration can be added through the Kafka config # under `spec.kafka.config` using the `rlmm.config.` prefix. rlmm.config.remote.log.metadata.topic.replication.factor: 1
kafka:
tieredStorage:
type: custom
remoteStorageManager:
className: com.example.kafka.tiered.storage.s3.S3RemoteStorageManager
classPath: /opt/kafka/plugins/tiered-storage-s3/*
config:
# A map with String keys and String values.
# Key properties are automatically prefixed with `rsm.config.`
# and appended to Kafka broker config.
storage.bucket.name: my-bucket
config:
...
# Additional RLMM configuration can be added through the Kafka config
# under `spec.kafka.config` using the `rlmm.config.` prefix.
rlmm.config.remote.log.metadata.topic.replication.factor: 1
45.1. TieredStorageCustom
スキーマプロパティー
type
プロパティーは、TieredStorageCustom
タイプを使用する際に、今後追加される可能性のある他のサブタイプと区別する識別子です。TieredStorageCustom
タイプの値は custom
である必要があります。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
remoteStorageManager | リモートストレージマネージャーの設定。 |
第46章 RemoteStorageManager
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
className | string |
|
classPath | string |
|
config | map |
|
第47章 QuotasPluginKafka
スキーマリファレンス
KafkaClusterSpec
で使用
type
プロパティーは、QuotasPluginKafka
タイプの使用と QuotasPluginStrimzi
タイプの使用を区別する識別子です。QuotasPluginKafka
タイプの値は kafka
である必要があります。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
producerByteRate | integer | 各クライアントが各ブローカーにパブリッシュできる 1 秒あたりの最大バイト数に関するデフォルトのクライアントクォータ。これを超えるとスロットリングが適用されます。ブローカーごとに適用されます。 |
consumerByteRate | integer | 各クライアントが各ブローカーから取得できる 1 秒あたりの最大バイト数に関するデフォルトのクライアントクォータ。これを超えるとスロットルが設定されます。ブローカーごとに適用されます。 |
requestPercentage | integer | デフォルトのクライアントクォータは、各クライアントの最大 CPU 使用率を、各ブローカーのネットワークおよび I/O スレッドの割合で制限します。ブローカーごとに適用されます。 |
controllerMutationRate | number | 各ブローカーに対して定義された、トピック作成要求、パーティション作成要求、およびトピック削除要求に対して 1 秒あたりに受け入れられるミューテーションのレートに関するデフォルトのクライアントクォータ。ミューテーションのレートは、作成または削除されたパーティションの数によって測定されます。ブローカーごとに適用されます。 |
第48章 QuotasPluginStrimzi
スキーマリファレンス
KafkaClusterSpec
で使用
type
プロパティーは、QuotasPluginStrimzi
タイプの使用と QuotasPluginKafka
タイプの使用を区別する識別子です。QuotasPluginStrimzi
タイプの値は strimzi
である必要があります。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
producerByteRate | integer | ブローカーに対して生成するクライアントのブローカーごとのバイトレートクォータ。クライアントの数は無関係です。クライアントが最大速度で生成する場合、クォータは除外されていないすべてのプロデューサー間で均等に共有されます。そうでない場合、クォータは各クライアントの生成レートに基づいて分配されます。 |
consumerByteRate | integer | ブローカーから消費するクライアントのブローカーごとのバイトレートクォータ。クライアントの数は無関係です。クライアントが最大速度で消費する場合、クォータは除外されていないすべてのコンシューマー間で均等に共有されます。そうでない場合、クォータは各クライアントの消費率に基づいて分配されます。 |
minAvailableBytesPerVolume | integer |
ストレージの使用可能なサイズ (バイト単位) がこの指定値以下の場合に、メッセージの生成を停止します。この条件は |
minAvailableRatioPerVolume | number |
使用可能なストレージ容量の割合が指定比率 (パーセンテージを表す小数として設定) 以下の場合に、メッセージの生成を停止します。この条件は |
excludedPrincipals | string 配列 |
クォータから除外するプリンシパルのリスト。プリンシパルには接頭辞 |
第49章 ZookeeperClusterSpec
スキーマリファレンス
KafkaSpec
で使用
ZookeeperClusterSpec
スキーマプロパティーの全リスト
ZooKeeper クラスターを設定します。
config
プロパティーは、リソースの全体的な設定の一部です。config
プロパティーを使用して、ZooKeeper のオプションをキーとして設定します。
ZooKeeper の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka spec: kafka: # ... zookeeper: # ... config: autopurge.snapRetainCount: 3 autopurge.purgeInterval: 2 # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
kafka:
# ...
zookeeper:
# ...
config:
autopurge.snapRetainCount: 3
autopurge.purgeInterval: 2
# ...
値は以下の JSON タイプのいずれかになります。
- 文字列
- 数値
- ブール値
例外
ZooKeeper のドキュメント に記載されているオプションを指定および設定できます。
ただし、次の項目に関連するオプションの設定と管理は、Streams for Apache Kafka が行います。これらは変更できません。
- セキュリティー (暗号化、認証、および認可)
- リスナーの設定
- データディレクトリーの設定
- ZooKeeper クラスターの構成
次の接頭辞を持つプロパティーは設定できません。
-
4lw.commands.whitelist
-
authProvider
-
clientPort
-
dataDir
-
dataLogDir
-
quorum.auth
-
reconfigEnabled
-
requireClientAuthScheme
-
secureClientPort
-
server.
-
snapshot.trust.empty
-
standaloneEnabled
-
serverCnxnFactory
-
ssl.
-
sslQuorum
config
プロパティーに変更できないオプションが含まれている場合、そのオプションは無視され、警告メッセージが Cluster Operator ログファイルに記録されます。サポートされているその他のすべてのオプションは、Streams for Apache Kafka によって設定されたオプションの次の例外も含め、ZooKeeper に転送されます。
-
サポートされている TLS バージョンと暗号スイート の任意の
ssl
設定
49.1. Logging
ZooKeeper には設定可能なロガーがあります。
-
zookeeper.root.logger
ZooKeeper は、Apachelog4j
のロガー実装を使用しています。
logging
プロパティーを使用してロガーおよびロガーレベルを設定します。
ログレベルを設定するには、ロガーとレベルを直接指定 (インライン) するか、カスタム (外部) ConfigMap を使用します。ConfigMap を使用する場合、logging.valueFrom.configMapKeyRef.name
プロパティーを外部ロギング設定が含まれる ConfigMap の名前に設定します。ConfigMap 内では、ロギング設定は log4j.properties
を使用して記述されます。logging.valueFrom.configMapKeyRef.name
および logging.valueFrom.configMapKeyRef.key
プロパティーはいずれも必須です。Cluster Operator の実行時に、指定された正確なロギング設定を使用する ConfigMap がカスタムリソースを使用して作成され、その後は調整のたびに再作成されます。カスタム ConfigMap を指定しない場合、デフォルトのロギング設定が使用されます。特定のロガー値が設定されていない場合、上位レベルのロガー設定がそのロガーに継承されます。ログレベルの詳細は、Apache logging services を参照してください。
ここで、inline
および external
ロギングの例を示します。inline
ロギングでは、ルートロガーレベルを指定します。特定のクラスまたはロガーを loggers プロパティーに追加することで、それらのログレベルを設定することもできます。
inline ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka spec: # ... zookeeper: # ... logging: type: inline loggers: zookeeper.root.logger: INFO log4j.logger.org.apache.zookeeper.server.FinalRequestProcessor: TRACE log4j.logger.org.apache.zookeeper.server.ZooKeeperServer: DEBUG # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
# ...
zookeeper:
# ...
logging:
type: inline
loggers:
zookeeper.root.logger: INFO
log4j.logger.org.apache.zookeeper.server.FinalRequestProcessor: TRACE
log4j.logger.org.apache.zookeeper.server.ZooKeeperServer: DEBUG
# ...
ログレベルを DEBUG
に設定すると、大量のログが出力され、パフォーマンスに影響を及ぼす可能性があります。
外部ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka spec: # ... zookeeper: # ... logging: type: external valueFrom: configMapKeyRef: name: customConfigMap key: zookeeper-log4j.properties # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
spec:
# ...
zookeeper:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: zookeeper-log4j.properties
# ...
ガベージコレクター (GC)
ガベッジコレクターのロギングは jvmOptions
プロパティーを使用して 有効 (または無効) にすることもできます。
49.2. ZookeeperClusterSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
replicas | integer | クラスター内の Pod 数。 |
image | string |
ZooKeeper Pod に使用されるコンテナーイメージ。イメージ名が明示的に指定されていない場合は、 |
storage | ストレージの設定 (ディスク)。これを更新することはできません。 | |
config | map | ZooKeeper ブローカーの設定。接頭辞 server.、dataDir、dataLogDir、clientPort、authProvider、quorum.auth、requireClientAuthScheme、snapshot.trust.empty、standaloneEnabled、reconfigEnabled、4lw.commands.whitelist、secureClientPort、ssl、serverCnxnFactory、sslQuorum (次の例外を除く: ssl.protocol、ssl.quorum.protocol、ssl.enabledProtocols、ssl.quorum.enabledProtocols、ssl.ciphersuites、ssl.quorum.ciphersuites、ssl.hostnameVerification、ssl.quorum.hostnameVerification) があるプロパティーは設定できません。 |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
jvmOptions | Pod の JVM オプション。 | |
jmxOptions | Zookeeper ノードの JMX オプション。 | |
resources | 予約する CPU およびメモリーリソース。 | |
metricsConfig | メトリックの設定。 | |
logging | ZooKeeper のロギング設定。 | |
template | ZooKeeper クラスターリソースのテンプレート。このテンプレートを使用すると、ユーザーは OpenShift リソースの生成方法を指定できます。 |
第50章 ZookeeperClusterTemplate
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
statefulset |
| |
podSet |
ZooKeeper | |
Pod |
ZooKeeper | |
clientService |
ZooKeeper クライアント | |
nodesService |
ZooKeeper ノード | |
persistentVolumeClaim |
すべての ZooKeeper | |
podDisruptionBudget |
ZooKeeper | |
zookeeperContainer | ZooKeeper コンテナーのテンプレート。 | |
serviceAccount | ZooKeeper サービスアカウントのテンプレート。 | |
jmxSecret | Zookeeper Cluster JMX 認証の Secret のテンプレート。 |
第51章 EntityOperatorSpec
スキーマリファレンス
KafkaSpec
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
topicOperator | Topic Operator の設定。 | |
userOperator | User Operator の設定。 | |
tlsSidecar |
| |
template |
Entity Operator リソースのテンプレート。テンプレートを使用すると、ユーザーは |
第52章 EntityTopicOperatorSpec
スキーマリファレンス
EntityTopicOperatorSpec
スキーマプロパティーの全リスト
Topic Operator を設定します。
52.1. Logging
Topic Operator には設定可能なロガーがあります。
-
rootLogger.level
Topic Operator では、Apachelog4j2
のロガー実装を使用しています。
Kafka リソース Kafka
リソースの entityOperator.topicOperator
フィールドの logging
プロパティーを使用して、ロガーとロガーレベルを設定します。
ログレベルを設定するには、ロガーとレベルを直接指定 (インライン) するか、カスタム (外部) ConfigMap を使用します。ConfigMap を使用する場合、logging.valueFrom.configMapKeyRef.name
プロパティーを外部ロギング設定が含まれる ConfigMap の名前に設定します。ConfigMap 内では、ロギング設定は log4j2.properties
を使用して記述されます。logging.valueFrom.configMapKeyRef.name
および logging.valueFrom.configMapKeyRef.key
プロパティーはいずれも必須です。Cluster Operator の実行時に、指定された正確なロギング設定を使用する ConfigMap がカスタムリソースを使用して作成され、その後は調整のたびに再作成されます。カスタム ConfigMap を指定しない場合、デフォルトのロギング設定が使用されます。特定のロガー値が設定されていない場合、上位レベルのロガー設定がそのロガーに継承されます。ログレベルの詳細は、Apache logging services を参照してください。
ここで、inline
および external
ロギングの例を示します。inline
ロギングでは、ルートロガーレベルを指定します。特定のクラスまたはロガーを loggers プロパティーに追加することで、それらのログレベルを設定することもできます。
inline ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... zookeeper: # ... entityOperator: # ... topicOperator: watchedNamespace: my-topic-namespace reconciliationIntervalMs: 60000 logging: type: inline loggers: rootLogger.level: INFO logger.top.name: io.strimzi.operator.topic logger.top.level: DEBUG logger.toc.name: io.strimzi.operator.topic.TopicOperator logger.toc.level: TRACE logger.clients.level: DEBUG # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
zookeeper:
# ...
entityOperator:
# ...
topicOperator:
watchedNamespace: my-topic-namespace
reconciliationIntervalMs: 60000
logging:
type: inline
loggers:
rootLogger.level: INFO
logger.top.name: io.strimzi.operator.topic
logger.top.level: DEBUG
logger.toc.name: io.strimzi.operator.topic.TopicOperator
logger.toc.level: TRACE
logger.clients.level: DEBUG
# ...
オペレーターの問題を調査する場合、通常は rootLogger
を DEBUG
に変更して、より詳細なログを取得するだけで十分です。ただし、ログレベルを DEBUG
に設定すると、大量のログが出力され、パフォーマンスに影響を及ぼす可能性があることに注意してください。
外部ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... zookeeper: # ... entityOperator: # ... topicOperator: watchedNamespace: my-topic-namespace reconciliationIntervalMs: 60000 logging: type: external valueFrom: configMapKeyRef: name: customConfigMap key: topic-operator-log4j2.properties # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
zookeeper:
# ...
entityOperator:
# ...
topicOperator:
watchedNamespace: my-topic-namespace
reconciliationIntervalMs: 60000
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: topic-operator-log4j2.properties
# ...
ガベージコレクター (GC)
ガベッジコレクターのロギングは jvmOptions
プロパティーを使用して 有効 (または無効) にすることもできます。
52.2. EntityTopicOperatorSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
watchedNamespace | string | Topic Operator が監視する必要のある namespace。 |
image | string | Topic Operator に使用するイメージ。 |
reconciliationIntervalSeconds | integer |
|
reconciliationIntervalMs | integer | 定期的な調整の間隔 (ミリ秒単位)。 |
zookeeperSessionTimeoutSeconds | integer |
|
startupProbe | Pod の起動チェック。 | |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
resources | 予約する CPU およびメモリーリソース。 | |
topicMetadataMaxAttempts | integer |
|
logging | ロギング設定。 | |
jvmOptions | Pod の JVM オプション。 |
第53章 EntityUserOperatorSpec
スキーマリファレンス
EntityUserOperatorSpec
スキーマプロパティーの全リスト
User Operator を設定します。
53.1. Logging
User Operator には設定可能なロガーがあります。
-
rootLogger.level
User Operator では、Apachelog4j2
のロガー実装を使用しています。
Kafka
リソースの entityOperator.userOperator
フィールドの logging
プロパティーを使用して、ロガーとロガーレベルを設定します。
ログレベルを設定するには、ロガーとレベルを直接指定 (インライン) するか、カスタム (外部) ConfigMap を使用します。ConfigMap を使用する場合、logging.valueFrom.configMapKeyRef.name
プロパティーを外部ロギング設定が含まれる ConfigMap の名前に設定します。ConfigMap 内では、ロギング設定は log4j2.properties
を使用して記述されます。logging.valueFrom.configMapKeyRef.name
および logging.valueFrom.configMapKeyRef.key
プロパティーはいずれも必須です。Cluster Operator の実行時に、指定された正確なロギング設定を使用する ConfigMap がカスタムリソースを使用して作成され、その後は調整のたびに再作成されます。カスタム ConfigMap を指定しない場合、デフォルトのロギング設定が使用されます。特定のロガー値が設定されていない場合、上位レベルのロガー設定がそのロガーに継承されます。ログレベルの詳細は、Apache logging services を参照してください。
ここで、inline
および external
ロギングの例を示します。inline
ログでは rootLogger.level
を指定します。特定のクラスまたはロガーを loggers プロパティーに追加することで、それらのログレベルを設定することもできます。
inline ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... zookeeper: # ... entityOperator: # ... userOperator: watchedNamespace: my-topic-namespace reconciliationIntervalMs: 60000 logging: type: inline loggers: rootLogger.level: INFO logger.uop.name: io.strimzi.operator.user logger.uop.level: DEBUG logger.abstractcache.name: io.strimzi.operator.user.operator.cache.AbstractCache logger.abstractcache.level: TRACE logger.jetty.level: DEBUG # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
zookeeper:
# ...
entityOperator:
# ...
userOperator:
watchedNamespace: my-topic-namespace
reconciliationIntervalMs: 60000
logging:
type: inline
loggers:
rootLogger.level: INFO
logger.uop.name: io.strimzi.operator.user
logger.uop.level: DEBUG
logger.abstractcache.name: io.strimzi.operator.user.operator.cache.AbstractCache
logger.abstractcache.level: TRACE
logger.jetty.level: DEBUG
# ...
オペレーターの問題を調査する場合、通常は rootLogger
を DEBUG
に変更して、より詳細なログを取得するだけで十分です。ただし、ログレベルを DEBUG
に設定すると、大量のログが出力され、パフォーマンスに影響を及ぼす可能性があることに注意してください。
外部ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... zookeeper: # ... entityOperator: # ... userOperator: watchedNamespace: my-topic-namespace reconciliationIntervalMs: 60000 logging: type: external valueFrom: configMapKeyRef: name: customConfigMap key: user-operator-log4j2.properties # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
zookeeper:
# ...
entityOperator:
# ...
userOperator:
watchedNamespace: my-topic-namespace
reconciliationIntervalMs: 60000
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: user-operator-log4j2.properties
# ...
ガベージコレクター (GC)
ガベッジコレクターのロギングは jvmOptions
プロパティーを使用して 有効 (または無効) にすることもできます。
53.2. EntityUserOperatorSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
watchedNamespace | string | User Operator が監視する必要のある namespace。 |
image | string | User Operator に使用するイメージ。 |
reconciliationIntervalSeconds | integer |
|
reconciliationIntervalMs | integer | 定期的な調整の間隔 (ミリ秒単位)。 |
zookeeperSessionTimeoutSeconds | integer |
|
secretPrefix | string | KafkaUser 名に追加され、Secret 名として使用される接頭辞。 |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
resources | 予約する CPU およびメモリーリソース。 | |
logging | ロギング設定。 | |
jvmOptions | Pod の JVM オプション。 |
第54章 TlsSidecar
スキーマリファレンス
TlsSidecar
タイプは非推奨になりました。
CruiseControlSpec
、EntityOperatorSpec
で使用
TLS サイドカータイプは使用されなくなりました。設定されている場合、無視されます。
54.1. TlsSidecar
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
image | string | コンテナーの Docker イメージ。 |
resources | 予約する CPU およびメモリーリソース。 | |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
logLevel | string ([emerg、debug、crit、err、alert、warning、notice、info] のいずれか) |
TLS サイドカーのログレベル。デフォルト値は |
第55章 EntityOperatorTemplate
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
deployment |
Entity Operator | |
Pod |
Entity Operator | |
topicOperatorContainer | Entity Topic Operator コンテナーのテンプレート。 | |
userOperatorContainer | Entity User Operator コンテナーのテンプレート。 | |
tlsSidecarContainer |
| |
serviceAccount | Entity Operator サービスアカウントのテンプレート。 | |
entityOperatorRole | Entity Operator Role. のテンプレート。 | |
topicOperatorRoleBinding | Entity Topic Operator RoleBinding のテンプレート。 | |
userOperatorRoleBinding | Entity Topic Operator RoleBinding のテンプレート。 |
第56章 DeploymentTemplate
スキーマリファレンス
CruiseControlTemplate
、EntityOperatorTemplate
、JmxTransTemplate
、KafkaBridgeTemplate
、KafkaConnectTemplate
、KafkaExporterTemplate
、KafkaMirrorMakerTemplate
で使用
DeploymentTemplate
スキーマプロパティーの完全なリスト
deploymentStrategy
を使用して、デプロイ設定が変更されたときに古い Pod を新しい Pod に置き換えるために使用される戦略を指定します。
以下のいずれかの値を使用します。
-
RollingUpdate
: Pod はダウンタイムなしで再起動されます。 -
Recreate
: Pod は、新しい Pod が作成される前に終了されます。
Recreate
デプロイメント戦略を使用すると、予備のリソースを必要としないという利点がありますが、欠点はアプリケーションのダウンタイムです。
Recreate
に設定されたデプロイメント戦略を示す例。
... ...
# ...
template:
deployment:
deploymentStrategy: Recreate
# ...
この設定の変更によって、ローリング更新が発生することはありません。
56.1. DeploymentTemplate
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
metadata | リソースに適用済みのメタデータ。 | |
deploymentStrategy | string ([RollingUpdate、Recreate] のいずれか) |
デプロイ設定変更のための Pod 交換戦略。有効な値は |
第57章 CertificateAuthority
スキーマリファレンス
KafkaSpec
で使用
TLS 証明書のクラスター内での使用方法の設定。これは、クラスター内の内部通信に使用される証明書および Kafka.spec.kafka.listeners.tls
を介したクライアントアクセスに使用される証明書の両方に適用されます。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
generateCertificateAuthority | boolean | true の場合、認証局の証明書が自動的に生成されます。それ以外の場合は、ユーザーは CA 証明書で Secret を提供する必要があります。デフォルトは true です。 |
generateSecretOwnerReference | boolean |
|
validityDays | integer | 生成される証明書の有効日数。デフォルトは 365 です。 |
renewalDays | integer |
証明書更新期間の日数。これは、証明書の期限が切れるまでの日数です。この間に、更新アクションを実行することができます。 |
certificateExpirationPolicy | string ([replace-key、renew-certificate] のいずれか) |
|
第58章 CruiseControlSpec
スキーマリファレンス
KafkaSpec
で使用
CruiseControlSpec
スキーマプロパティーの完全なリスト
Cruise Control クラスターを設定します。
設定オプションは以下に関連しています。
- ゴールの設定
- リソース配分目標の容量制限
config
プロパティーは、リソースの全体的な設定の一部です。config
プロパティーを使用して、Cruise Control オプションをキーとして設定します。
Cruise Control の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: # ... config: # Note that `default.goals` (superset) must also include all `hard.goals` (subset) default.goals: > com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal, com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal hard.goals: > com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal cpu.balance.threshold: 1.1 metadata.max.age.ms: 300000 send.buffer.bytes: 131072 webserver.http.cors.enabled: true webserver.http.cors.origin: "*" webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type" # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
config:
# Note that `default.goals` (superset) must also include all `hard.goals` (subset)
default.goals: >
com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal
hard.goals: >
com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal
cpu.balance.threshold: 1.1
metadata.max.age.ms: 300000
send.buffer.bytes: 131072
webserver.http.cors.enabled: true
webserver.http.cors.origin: "*"
webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
# ...
値は以下の JSON タイプのいずれかになります。
- 文字列
- 数値
- ブール値
例外
Cruise Control のドキュメント に記載されているオプションを指定および設定できます。
ただし、次の項目に関連するオプションの設定と管理は、Streams for Apache Kafka が行います。これらは変更できません。
- セキュリティー (暗号化、認証、および認可)
- Kafka クラスターへの接続
- クライアント ID の設定
- ZooKeeper の接続
- Web サーバー設定
- 自己修復
次の接頭辞を持つプロパティーは設定できません。
-
bootstrap.servers
-
capacity.config.file
-
client.id
-
failed.brokers.zk.path
-
kafka.broker.failure.detection.enable
-
metric.reporter.sampler.bootstrap.servers
-
network.
-
request.reason.required
-
security.
-
self.healing.
-
ssl.
-
topic.config.provider.class
-
two.step.
-
webserver.accesslog.
-
webserver.api.urlprefix
-
webserver.http.
-
webserver.session.path
-
zookeeper.
config
プロパティーに変更できないオプションが含まれている場合、そのオプションは無視され、警告メッセージが Cluster Operator ログファイルに記録されます。サポートされているその他のすべてのオプションは、Streams for Apache Kafka によって設定されたオプションの次の例外を含め、Cruise Control に転送されます。
-
サポートされている TLS バージョンと暗号スイート の任意の
ssl
設定 -
Cross-Origin Resource Sharing (CORS) を有効にするための
webserver
プロパティーの設定
58.1. Cross-Origin Resource Sharing (CORS)
Cross-Origin Resource Sharing (CORS) は、REST API へのアクセスを制御するための HTTP メカニズムです。制限は、アクセス方法またはクライアントアプリケーションの元の URL に対して行うことができます。config
の webserver.http.cors.enabled
プロパティーを使用して、Cruise Control で CORS を有効にできます。CORS を有効にすると、Streams for Apache Kafka とは異なる元の URL を持つアプリケーションから Cruise Control REST API への読み取りアクセスが許可されます。これにより、指定されたオリジンからのアプリケーションが GET
リクエストを使用して、Cruise Control API を介して Kafka クラスターに関する情報をフェッチできるようになります。たとえば、アプリケーションは、現在のクラスター負荷または最新の最適化提案に関する情報を取得できます。POST
リクエストは許可されていません。
Cruise Control で CORS を使用する方法の詳細は、Cruise Control Wiki の REST API を参照してください。
Cruise Control の CORS の有効化
Kafka.spec.cruiseControl.config
で CORS を有効化および設定します。
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: # ... config: webserver.http.cors.enabled: true webserver.http.cors.origin: "*" webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type" # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
config:
webserver.http.cors.enabled: true
webserver.http.cors.origin: "*"
webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
# ...
58.2. Cruise Control REST API のセキュリティー
Cruise Control REST API は、HTTP 基本認証と SSL で保護されており、Kafka ブローカーの廃止など、破壊的な可能性のある Cruise Control 操作からクラスターを保護します。Streams for Apache Kafka の Cruise Control は、これらの設定を有効にした状態でのみ使用 することを推奨します。
ただし、次の Cruise Control 設定を指定することで、これらの設定を無効にすることができます。
-
ビルトイン HTTP Basic 認証を無効にするには、
webserver.security.enable
をfalse
に設定します。 -
ビルトイン SSL を無効にするには、
webserver.ssl.enable
をfalse
に設定します。
API 認可、認証、および SSL を無効にする Cruise Control の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: config: webserver.security.enable: false webserver.ssl.enable: false # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
config:
webserver.security.enable: false
webserver.ssl.enable: false
# ...
58.3. API ユーザー
必要な権限を使用して、保護された Cruise Control REST API に安全に直接アクセスするための REST API ユーザーを作成します。
これにより、ロールと権限を定義して、上級ユーザーやサードパーティーのアプリケーションが、基本的な HTTP 認証を無効にすることなく、Cruise Control REST API にアクセスできるようになります。
次のユースケースでは、API セキュリティーを無効にせずに Cruise Control API にアクセスするとメリットが得られます。
- Cruise Control ユーザーインターフェイスを使用して、Streams for Apache Kafka で管理される Kafka クラスターを監視する。
- クラスターとパーティションの負荷やユーザータスクに関する詳細情報など、Streams for Apache Kafka または Cruise Control のセンサーメトリクスでは入手できない Cruise Control 固有の統計情報を収集する。
- 保護された環境で Cruise Control をデバッグする。
Cruise Control は、Jetty の HashLoginService
ファイル形式で API ユーザーの認証情報を読み取ります。
標準の Cruise Control USER
および VIEWER
ロールがサポートされています。* USER
は、ブートストラップとトレインを除くすべての GET
エンドポイントにアクセスできます。* VIEWER
は、kafka_cluster_state
、user_tasks
、および review_board
エンドポイントにアクセスできます。この例では、cruise-control-auth.txt
というテキストファイルに、2 つのカスタム API ユーザーをサポートされている形式で定義します。
userOne: passwordOne, USER userTwo: passwordTwo, VIEWER
userOne: passwordOne, USER
userTwo: passwordTwo, VIEWER
次に、このファイルを使用して、次のコマンドでシークレットを作成します。
oc create secret generic cruise-control-api-users-secret --from-file=cruise-control-auth.txt=cruise-control-auth.txt
oc create secret generic cruise-control-api-users-secret --from-file=cruise-control-auth.txt=cruise-control-auth.txt
次に、Kafka リソースの spec.cruiseControl.apiUsers
セクションでシークレットを参照します。
Cruise Control apiUsers 設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: # ... apiUsers: type: hashloginservice valueFrom: secretKeyRef: name: cruise-control-api-users-secret key: cruise-control-auth.txt ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
apiUsers:
type: hashloginservice
valueFrom:
secretKeyRef:
name: cruise-control-api-users-secret
key: cruise-control-auth.txt
...
その後、Streams for Apache Kafka はこのシークレットの内容をデコードして使用し、Cruise Control の API 認証情報ファイルに入力します。
58.4. 容量制限の設定
Cruise Control は、容量制限を使用して、リソース容量制限の最適化目標が破られているかどうかを判断します。このタイプには 4 つのゴールがあります。
-
DiskCapacityGoal
- ディスク使用率容量 -
CpuCapacityGoal
- CPU 使用率容量 -
NetworkInboundCapacityGoal
- ネットワークインバウンド利用容量 -
NetworkOutboundCapacityGoal
- ネットワークの送信利用容量
Kafka ブローカーリソースの容量制限は、Kafka.spec.cruiseControl
の brokerCapacity
プロパティーに指定します。これらはデフォルトで有効になっており、デフォルト値を変更できます。容量制限は、以下のブローカーリソースに設定できます。
-
cpu
- ミリコアまたは CPU コアの CPU リソース (デフォルト: 1) -
inboundNetwork
: バイト毎秒単位のインバウンドネットワークスループット (デフォルトは 10000 KiB/s) -
outboundNetwork
: バイト毎秒単位のアウトバウンドネットワークスループット (デフォルトは 10000 KiB/s)
ネットワークスループットの場合、1 秒あたりの標準の OpenShift バイト単位 (K、M、G) またはそれに相当するビバイト (2 の累乗)(Ki、Mi、Gi) の整数値を使用します。
ディスクと CPU の容量制限は、Streams for Apache Kafka によって自動的に生成されるため、設定する必要はありません。CPU ゴールを使用するときに正確なリバランスの提案を保証するために、Kafka.spec.kafka.resources
で CPU リクエストを CPU 制限と同じに設定できます。これにより、すべての CPU リソースが事前に予約され、常に利用できます。この設定を使用すると、CPU 目標に基づいてリバランス提案を準備するときに Cruise Control が CPU 使用率を適切に評価できます。Kafka.spec.kafka.resources
の CPU 制限と同じ CPU 要求を設定できない場合は、CPU 容量を手動で設定して同じ精度にすることができます。
bibyte 単位での Cruise Control brokerCapacity の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: # ... brokerCapacity: cpu: "2" inboundNetwork: 10000KiB/s outboundNetwork: 10000KiB/s # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
brokerCapacity:
cpu: "2"
inboundNetwork: 10000KiB/s
outboundNetwork: 10000KiB/s
# ...
58.5. 容量オーバーライドの設定
ブローカーは、異種ネットワークまたは CPU リソースを持つノードで実行されている可能性があります。その場合は、ブローカーごとにネットワーク容量と CPU 制限を設定する overrides
を指定します。オーバーライドにより、ブローカー間の正確な再調整が保証されます。次のブローカリソースに対してオーバーライド容量制限を設定できます。
-
cpu
- ミリコアまたは CPU コアの CPU リソース (デフォルト: 1) -
inboundNetwork
: バイト毎秒単位のインバウンドネットワークスループット (デフォルトは 10000 KiB/s) -
outboundNetwork
: バイト毎秒単位のアウトバウンドネットワークスループット (デフォルトは 10000 KiB/s)
ビバイト (bibyte) 単位を使用した Cruise Control 容量オーバーライド設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: # ... cruiseControl: # ... brokerCapacity: cpu: "1" inboundNetwork: 10000KiB/s outboundNetwork: 10000KiB/s overrides: - brokers: [0] cpu: "2.755" inboundNetwork: 20000KiB/s outboundNetwork: 20000KiB/s - brokers: [1, 2] cpu: 3000m inboundNetwork: 30000KiB/s outboundNetwork: 30000KiB/s
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
# ...
cruiseControl:
# ...
brokerCapacity:
cpu: "1"
inboundNetwork: 10000KiB/s
outboundNetwork: 10000KiB/s
overrides:
- brokers: [0]
cpu: "2.755"
inboundNetwork: 20000KiB/s
outboundNetwork: 20000KiB/s
- brokers: [1, 2]
cpu: 3000m
inboundNetwork: 30000KiB/s
outboundNetwork: 30000KiB/s
CPU 容量は、次の優先順位の設定値を使用して決定されます。優先順位が最も高いものが最初になります。
-
Kafka.spec.cruiseControl.brokerCapacity.overrides.cpu
: 個々のブローカーのカスタム CPU 容量制限を定義する。 -
Kafka.cruiseControl.brokerCapacity.cpu
: Kafka クラスター内のすべてのブローカーのカスタム CPU 容量制限を定義する。 -
Kafka.spec.kafka.resources.requests.cpu
: Kafka クラスター内のブローカーごとに予約される CPU リソースを定義する。 -
Kafka.spec.kafka.resources.limits.cpu
: Kafka クラスターの各ブローカーが消費できる最大 CPU リソースを定義する。
この優先順位は、Kafka ブローカーの実際の容量制限の決定時に、さまざまな設定値を考慮する順序です。たとえば、ブローカー固有のオーバーライドは、すべてのブローカーの容量制限よりも優先されます。CPU 容量設定がいずれも指定されていない場合、Kafka ブローカーのデフォルトの CPU 容量は 1 CPU コアに設定されます。
詳細は、BrokerCapacity スキーマリファレンス を参照してください。
58.6. Logging
Cruise Control には独自の設定可能なロガーがあります。
-
rootLogger.level
Cruise Control では Apache log4j2
ロガー実装が使用されます。
logging
プロパティーを使用してロガーおよびロガーレベルを設定します。
ログレベルを設定するには、ロガーとレベルを直接指定 (インライン) するか、カスタム (外部) ConfigMap を使用します。ConfigMap を使用する場合、logging.valueFrom.configMapKeyRef.name
プロパティーを外部ロギング設定が含まれる ConfigMap の名前に設定します。ConfigMap 内では、ロギング設定は log4j.properties
を使用して記述されます。logging.valueFrom.configMapKeyRef.name
および logging.valueFrom.configMapKeyRef.key
プロパティーはいずれも必須です。Cluster Operator の実行時に、指定された正確なロギング設定を使用する ConfigMap がカスタムリソースを使用して作成され、その後は調整のたびに再作成されます。カスタム ConfigMap を指定しない場合、デフォルトのロギング設定が使用されます。特定のロガー値が設定されていない場合、上位レベルのロガー設定がそのロガーに継承されます。
ここで、inline
および external
ロギングの例を示します。inline
ロギングでは、ルートロガーレベルを指定します。特定のクラスまたはロガーを loggers プロパティーに追加することで、それらのログレベルを設定することもできます。
inline ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka # ... spec: cruiseControl: # ... logging: type: inline loggers: rootLogger.level: INFO logger.exec.name: com.linkedin.kafka.cruisecontrol.executor.Executor logger.exec.level: TRACE logger.go.name: com.linkedin.kafka.cruisecontrol.analyzer.GoalOptimizer logger.go.level: DEBUG # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
cruiseControl:
# ...
logging:
type: inline
loggers:
rootLogger.level: INFO
logger.exec.name: com.linkedin.kafka.cruisecontrol.executor.Executor
logger.exec.level: TRACE
logger.go.name: com.linkedin.kafka.cruisecontrol.analyzer.GoalOptimizer
logger.go.level: DEBUG
# ...
Cruise Control の問題を調査する場合、通常は rootLogger
を DEBUG
に変更して、より詳細なログを取得するだけで十分です。ただし、ログレベルを DEBUG
に設定すると、大量のログが出力され、パフォーマンスに影響を及ぼす可能性があることに注意してください。
外部ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka # ... spec: cruiseControl: # ... logging: type: external valueFrom: configMapKeyRef: name: customConfigMap key: cruise-control-log4j.properties # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
cruiseControl:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: cruise-control-log4j.properties
# ...
ガベージコレクター (GC)
ガベッジコレクターのロギングは jvmOptions
プロパティーを使用して 有効 (または無効) にすることもできます。
58.7. CruiseControlSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
image | string | Cruise Control Pod に使用されるコンテナーイメージ。イメージ名が明示的に指定されていない場合、イメージ名は Cluster Operator 設定で指定された名前に対応します。Cluster Operator 設定でイメージ名が定義されていない場合は、デフォルト値が使用されます。 |
tlsSidecar |
| |
resources | Cruise Control コンテナー用に予約された CPU およびメモリーリソース。 | |
livenessProbe | Cruise Control コンテナーの Pod liveness チェック | |
readinessProbe | Cruise Control コンテナーの Pod readiness チェック | |
jvmOptions | Cruise Control コンテナーの JVM オプション | |
logging | Cruise Control のロギング設定 (Log4j 2)。 | |
template |
Cruise Control のリソースである | |
brokerCapacity |
Cruise Control の | |
config | map | Cruise Control の設定。設定オプションの全リストは、https://github.com/linkedin/cruise-control/wiki/Configurations を参照してください。次の接頭辞を持つプロパティーは設定できません: failed.brokers.zk.path,webserver.http., webserver.api.urlprefix, webserver.session.path, webserver.accesslog., two.step., request.reason.required,metric.reporter.sampler.bootstrap.servers, capacity.config.file, self.healing., ssl., kafka.broker.failure.detection.enable, topic.config.provider.class (例外: ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols, webserver.http.cors.enabled, webserver.http.cors.origin, webserver.http.cors.exposeheaders, webserver.security.enable, webserver.ssl.enable). |
metricsConfig | メトリックの設定。 | |
apiUsers | Cruise Control REST API ユーザーの設定。 |
第59章 CruiseControlTemplate
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
deployment |
Cruise Control | |
Pod |
Cruise Control | |
apiService |
Cruise Control API | |
podDisruptionBudget |
Cruise Control | |
cruiseControlContainer | Cruise Control コンテナーのテンプレート。 | |
tlsSidecarContainer |
| |
serviceAccount | Cruise Control サービスアカウントのテンプレート。 |
第60章 BrokerCapacity
スキーマー参照
プロパティー | プロパティータイプ | 説明 |
---|---|---|
disk | string |
|
cpuUtilization | integer |
|
cpu | string | コアまたはミリコア単位の CPU リソースのブローカー容量。たとえば、1、1.500、1500m などです。有効な CPU リソースユニットの詳細は、https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu を参照してください。 |
inboundNetwork | string | インバウンドネットワークスループットのブローカー容量 (バイト/秒)。整数値は、標準の OpenShift バイト単位 (K、M、G) またはそれと同等のビバイト (Ki、Mi、Gi)/秒を使用します。たとえば、10000KiB/s です。 |
outboundNetwork | string | アウトバウンドネットワークスループットのブローカー容量 (バイト/秒)。整数値は、標準の OpenShift バイト単位 (K、M、G) またはそれと同等のビバイト (Ki、Mi、Gi)/秒を使用します。たとえば、10000KiB/s です。 |
overrides |
個々のブローカーをオーバーライドします。 |
第61章 BrokerCapacityOverride
スキーマリファレンス
使用先: BrokerCapacity
プロパティー | プロパティータイプ | 説明 |
---|---|---|
brokers | 整数配列 | Kafka ブローカー (ブローカー識別子) のリスト。 |
cpu | string | コアまたはミリコア単位の CPU リソースのブローカー容量。たとえば、1、1.500、1500m などです。有効な CPU リソースユニットの詳細は、https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu を参照してください。 |
inboundNetwork | string | インバウンドネットワークスループットのブローカー容量 (バイト/秒)。整数値は、標準の OpenShift バイト単位 (K、M、G) またはそれと同等のビバイト (Ki、Mi、Gi)/秒を使用します。たとえば、10000KiB/s です。 |
outboundNetwork | string | アウトバウンドネットワークスループットのブローカー容量 (バイト/秒)。整数値は、標準の OpenShift バイト単位 (K、M、G) またはそれと同等のビバイト (Ki、Mi、Gi)/秒を使用します。たとえば、10000KiB/s です。 |
第62章 HashLoginServiceApiUsers
スキーマリファレンス
type
プロパティーは、HashLoginServiceApiUsers
タイプを使用する際に、今後追加される可能性のある他のサブタイプと区別する識別子です。タイプ HashLoginServiceApiUsers
の値は hashLoginService
である必要があります。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
valueFrom | カスタム Cruise Control API 認証情報の読み取り元のシークレット。 |
第63章 PasswordSource
スキーマリファレンス
HashLoginServiceApiUsers
、Password
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
secretKeyRef | リソースの namespace で Secret のキーを選択します。 |
第64章 JmxTransSpec
スキーマリファレンス
JmxTransSpec
タイプは非推奨になりました。
KafkaSpec
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
image | string | JmxTrans に使用するイメージ。 |
outputDefinitions |
後で参照される出力ホストを定義します。これらのプロパティーの詳細は、 | |
logLevel | string | JmxTrans デプロイメントのログレベルを設定します。詳細は、JmxTrans Logging Level を参照してください。 |
kafkaQueries |
各ブローカーから読み取るデータを定義するために Kafka ブローカーに送信するクエリー。これらのプロパティーの詳細は、 | |
resources | 予約する CPU およびメモリーリソース。 | |
template | JmxTrans リソースのテンプレート。 |
第65章 JmxTransOutputDefinitionTemplate
スキーマリファレンス
JmxTransSpec
で使用されています。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
outputType | string | プッシュされるデータの形式を設定するためのテンプレート。詳細は JmxTrans OutputWriters を参照してください。 |
host | string | データがプッシュされるリモートホストの DNS/ホスト名。 |
port | integer | データのプッシュ先となるリモートホストのポート。 |
flushDelayInSeconds | integer | 新しいデータセットをプッシュするまでに JmxTrans が待機する秒数。 |
typeNames | string 配列 | ワイルドカードクエリーに対応するために、含めるデータをフィルタリングするテンプレート。詳細は、JmxTrans queries を参照してください。 |
name | string | 出力定義の名前を設定するためのテンプレート。これは、クエリーの結果を送信する場所を特定するために使用されます。 |
第66章 JmxTransQueryTemplate
schema reference
JmxTransSpec
で使用されています。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
targetMBean | string | 特定の MBean ではなくワイルドカードを使用する場合、データは複数の MBean から収集されます。ワイルドカードを使用せずに MBean を指定した場合、データは指定された MBean から収集されます。 |
attributes | string 配列 | 対象の MBean のどの属性を含めるべきかを判断します。 |
outputs | string 配列 | JMX メトリックがプッシュされる場所と、データ形式が定義された spec.kafka.jmxTrans.outputDefinitions に指定された出力定義の名前リスト。 |
第67章 JmxTransTemplate
スキーマリファレンス
JmxTransSpec
で使用されています。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
deployment |
JmxTrans | |
Pod |
JmxTrans | |
container | JmxTrans コンテナーのテンプレート。 | |
serviceAccount | JmxTrans サービスアカウントのテンプレート。 |
第68章 KafkaExporterSpec
スキーマリファレンス
KafkaSpec
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
image | string | Kafka Exporter Pod に使用されるコンテナーイメージ。イメージ名が明示的に指定されていない場合、イメージ名は Cluster Operator 設定で指定されたバージョンに対応します。Cluster Operator 設定でイメージ名が定義されていない場合は、デフォルト値が使用されます。 |
groupRegex | string |
収集するコンシューマーグループを指定する正規表現。デフォルト値は |
topicRegex | string |
収集するトピックを指定する正規表現。デフォルト値は |
groupExcludeRegex | string | 除外するコンシューマーグループを指定する正規表現。 |
topicExcludeRegex | string | 除外するトピックを指定する正規表現。 |
resources | 予約する CPU およびメモリーリソース。 | |
logging | string |
指定された重大度以上のメッセージのみをログに記録します。有効なレベル: [ |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
enableSaramaLogging | boolean | Kafka Exporter によって使用される Go クライアントライブラリーである Sarama ロギングを有効にします。 |
showAllOffsets | boolean | すべてのコンシューマーグループのオフセット/遅延を表示するか、接続されているコンシューマーグループのみを表示するか。 |
template | デプロイメントテンプレートおよび Pod のカスタマイズ。 |
第69章 KafkaExporterTemplate
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
deployment |
Kafka Exporter | |
Pod |
Kafka Exporter | |
service |
| |
container | Kafka Exporter コンテナーのテンプレート。 | |
serviceAccount | Kafka Exporter サービスアカウントのテンプレート。 |
第70章 KafkaStatus
スキーマリファレンス
Kafka
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
listeners | 内部リスナーおよび外部リスナーのアドレス。 | |
kafkaNodePools | この Kafka クラスターによって使用される KafkaNodePool のリスト。 | |
registeredNodeIds | 整数配列 | この Kafka クラスターで使用される登録済みノード ID。このフィールドは内部目的でのみ使用され、今後削除される予定です。 |
clusterId | string | Kafka クラスター ID。 |
operatorLastSuccessfulVersion | string | 最後に正常に調整を実行した Streams for Apache Kafka Cluster Operator のバージョン。 |
kafkaVersion | string | クラスターに現在デプロイされている Kafka のバージョン。 |
kafkaMetadataVersion | string | Kafka クラスターによって現在使用されている KRaft メタデータのバージョン。 |
kafkaMetadataState | 文字列 ([PreKRaft、ZooKeeper、KRaftMigration、KRaftDualWriting、KRaftPostMigration、KRaft] のいずれか) | クラスターのメタデータを保存する場所を定義します。可能な値は、ZooKeeper (メタデータが ZooKeeper に保存されている場合)、KRaftMigration (コントローラーが ZooKeeper に接続され、Zookeeper の移行が有効でコントローラーへの接続情報を持つブローカーがロールされ、メタデータ移行プロセスが実行されている場合)、KRaftDualWriting (メタデータ移行プロセスが終了し、クラスターが二重書き込みモードの場合)、KRaftPostMigration (ブローカーは完全に KRaft ベースであるものの、コントローラーが ZooKeeper から切断されるようにロールされている場合)、PreKRaft (ブローカーとコントローラーが完全に KRaft ベースで、メタデータが KRaft に保存されているが ZooKeeper を削除する必要がある場合)、KRaft (メタデータが KRaft に保存されている場合) です。 |
第71章 Condition
スキーマリファレンス
使用場所: KafkaBridgeStatus
、KafkaConnectorStatus
、KafkaConnectStatus
、KafkaMirrorMaker2Status
、KafkaMirrorMakerStatus
、KafkaNodePoolStatus
、KafkaRebalanceStatus
、KafkaStatus
、KafkaTopicStatus
、KafkaUserStatus
、StrimziPodSetStatus
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string | リソース内の他の条件と区別するために使用される条件の固有識別子。 |
status | string | 条件のステータス (True、False、または Unknown のいずれか)。 |
lastTransitionTime | string | タイプの条件がある状態から別の状態へと最後に変更した時間。必須形式は、UTC タイムゾーンの 'yyyy-MM-ddTHH:mm:ssZ' です。 |
reason | string | 条件の最後の遷移の理由 (CamelCase の単一の単語)。 |
message | string | 条件の最後の遷移の詳細を示す、人間が判読できるメッセージ。 |
第72章 ListenerStatus
スキーマリファレンス
KafkaStatus
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
name | string | リスナーの名前。 |
addresses | このリスナーのアドレスリスト。 | |
bootstrapServers | string |
このリスナーを使用して Kafka クラスターに接続するための |
証明書 | string 配列 |
指定のリスナーへの接続時に、サーバーのアイデンティティーを検証するために使用できる TLS 証明書のリスト。 |
第73章 ListenerAddress
スキーマリファレンス
ListenerStatus
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
host | string | Kafka ブートストラップサービスの DNS 名または IP アドレス。 |
port | integer | Kafka ブートストラップサービスのポート。 |
第74章 UsedNodePoolStatus
スキーマリファレンス
KafkaStatus
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
name | string | この Kafka リソースによって使用される KafkaNodePool の名前。 |
第75章 KafkaConnect
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | Kafka Connect クラスターの仕様。 | |
status | Kafka Connect クラスターのステータス。 |
第76章 KafkaConnectSpec
スキーマリファレンス
KafkaConnect
で使用
KafkaConnectSpec
スキーマプロパティーの全リスト
Kafka Connect クラスターを設定します。
config
プロパティーは、リソースの全体的な設定の一部です。config
プロパティーを使用して、Kafka Connect オプションをキーとして設定します。
Kafka Connect の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect spec: # ... config: group.id: my-connect-cluster offset.storage.topic: my-connect-cluster-offsets config.storage.topic: my-connect-cluster-configs status.storage.topic: my-connect-cluster-status key.converter: org.apache.kafka.connect.json.JsonConverter value.converter: org.apache.kafka.connect.json.JsonConverter key.converter.schemas.enable: true value.converter.schemas.enable: true config.storage.replication.factor: 3 offset.storage.replication.factor: 3 status.storage.replication.factor: 3 # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect
spec:
# ...
config:
group.id: my-connect-cluster
offset.storage.topic: my-connect-cluster-offsets
config.storage.topic: my-connect-cluster-configs
status.storage.topic: my-connect-cluster-status
key.converter: org.apache.kafka.connect.json.JsonConverter
value.converter: org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable: true
value.converter.schemas.enable: true
config.storage.replication.factor: 3
offset.storage.replication.factor: 3
status.storage.replication.factor: 3
# ...
値は以下の JSON タイプのいずれかになります。
- 文字列
- 数値
- ブール値
以下のオプションにはデフォルト値があります。
-
group.id
、デフォルト値connect-cluster
-
offset.storage.topic
、デフォルト値connect-cluster-offsets
-
config.storage.topic
、デフォルト値connect-cluster-configs
-
status.storage.topic
、デフォルト値connect-cluster-status
-
key.converter
、デフォルト値org.apache.kafka.connect.json.JsonConverter
-
value.converter
、デフォルト値org.apache.kafka.connect.json.JsonConverter
このようなオプションは、KafkaConnect.spec.config
プロパティーにない場合に自動的に設定されます。
例外
Apache Kafka ドキュメント にリストされているオプションを指定および設定できます。
ただし、次の項目に関連するオプションの設定と管理は、Streams for Apache Kafka が行います。これらは変更できません。
- Kafka クラスターブートストラップアドレス
- セキュリティー (暗号化、認証、および認可)
- リスナーと REST インターフェイスの設定
- プラグインパスの設定
次の接頭辞を持つプロパティーは設定できません。
-
bootstrap.servers
-
consumer.interceptor.classes
-
listeners
-
plugin.path
-
producer.interceptor.classes
-
rest.
-
sasl.
-
security.
-
ssl.
config
プロパティーに変更できないオプションが含まれている場合、そのオプションは無視され、警告メッセージが Cluster Operator ログファイルに記録されます。サポートされているその他のすべてのオプションは、Streams for Apache Kafka によって設定されたオプションの次の例外を含め、Kafka Connect に転送されます。
-
サポートされている TLS バージョンと暗号スイート の任意の
ssl
設定
提供された config
オブジェクトのキーまたは値は Cluster Operator によって検証されません。無効な設定を指定すると、Kafka Connect クラスターが起動しなかったり、不安定になる可能性があります。この場合、Cluster Operator が新しい設定をすべての Kafka Connect ノードにロールアウトできるように設定を修正します。
76.1. Logging
Kafka Connect には独自の設定可能なロガーがあります。
-
connect.root.logger.level
-
log4j.logger.org.reflections
実行中の Kafka Connect プラグインに応じて、さらにロガーが追加されます。
curl リクエストを使用して、Kafka ブローカー Pod から稼働している Kafka Connect ロガーの完全リストを取得します。
curl -s http://<connect-cluster-name>-connect-api:8083/admin/loggers/
curl -s http://<connect-cluster-name>-connect-api:8083/admin/loggers/
Kafka Connect では Apache log4j
ロガー実装が使用されます。
logging
プロパティーを使用してロガーおよびロガーレベルを設定します。
ログレベルを設定するには、ロガーとレベルを直接指定 (インライン) するか、カスタム (外部) ConfigMap を使用します。ConfigMap を使用する場合、logging.valueFrom.configMapKeyRef.name
プロパティーを外部ロギング設定が含まれる ConfigMap の名前に設定します。ConfigMap 内では、ロギング設定は log4j.properties
を使用して記述されます。logging.valueFrom.configMapKeyRef.name
および logging.valueFrom.configMapKeyRef.key
プロパティーはいずれも必須です。Cluster Operator の実行時に、指定された正確なロギング設定を使用する ConfigMap がカスタムリソースを使用して作成され、その後は調整のたびに再作成されます。カスタム ConfigMap を指定しない場合、デフォルトのロギング設定が使用されます。特定のロガー値が設定されていない場合、上位レベルのロガー設定がそのロガーに継承されます。ログレベルの詳細は、Apache logging services を参照してください。
ここで、inline
および external
ロギングの例を示します。inline
ロギングでは、ルートロガーレベルを指定します。特定のクラスまたはロガーを loggers プロパティーに追加することで、それらのログレベルを設定することもできます。
inline ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect spec: # ... logging: type: inline loggers: connect.root.logger.level: INFO log4j.logger.org.apache.kafka.connect.runtime.WorkerSourceTask: TRACE log4j.logger.org.apache.kafka.connect.runtime.WorkerSinkTask: DEBUG # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
spec:
# ...
logging:
type: inline
loggers:
connect.root.logger.level: INFO
log4j.logger.org.apache.kafka.connect.runtime.WorkerSourceTask: TRACE
log4j.logger.org.apache.kafka.connect.runtime.WorkerSinkTask: DEBUG
# ...
ログレベルを DEBUG
に設定すると、大量のログが出力され、パフォーマンスに影響を及ぼす可能性があります。
外部ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect spec: # ... logging: type: external valueFrom: configMapKeyRef: name: customConfigMap key: connect-logging.log4j # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
spec:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: connect-logging.log4j
# ...
設定されていない利用可能なロガーのレベルは OFF
に設定されています。
Cluster Operator を使用して Kafka Connect がデプロイされた場合、Kafka Connect のロギングレベルの変更は動的に適用されます。
外部ロギングを使用する場合は、ロギングアペンダーが変更されるとローリング更新がトリガーされます。
ガベージコレクター (GC)
ガベッジコレクターのロギングは jvmOptions
プロパティーを使用して 有効 (または無効) にすることもできます。
76.2. KafkaConnectSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
version | string | Kafka Connect のバージョン。デフォルトは最新バージョンです。バージョンのアップグレードまたはダウングレードに必要なプロセスを理解するには、ユーザードキュメントを参照してください。 |
replicas | integer |
Kafka Connect グループの Pod 数。デフォルトは |
image | string |
Kafka Connect Pod に使用されるコンテナーイメージ。イメージ名が明示的に指定されていない場合は、 |
bootstrapServers | string | 接続するブートストラップサーバー。これは <hostname>:_<port>_ pairs のコンマ区切りリストとして指定する必要があります。 |
tls | TLS 設定。 | |
認証 |
| Kafka Connect の認証設定。 |
config | map | Kafka Connect の設定。次の接頭辞を持つプロパティーは設定できません: ssl.、sasl.、security.、listeners、plugin.path、rest.、bootstrap.servers、consumer.interceptor.classes、producer.interceptor.classes (ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols を除く) |
resources | CPU とメモリーリソースおよび要求された初期リソースの上限。 | |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
jvmOptions | Pod の JVM オプション。 | |
jmxOptions | JMX オプション。 | |
logging | Kafka Connect のロギング設定。 | |
clientRackInitImage | string |
|
rack |
| |
metricsConfig | メトリックの設定。 | |
tracing | Kafka Connect でのトレースの設定。 | |
template |
Kafka Connect および Kafka MirrorMaker 2 リソースのテンプレート。このテンプレートを使用すると、ユーザーは | |
externalConfiguration | Secret または ConfigMap から Kafka Connect Pod にデータを渡し、これを使用してコネクターを設定します。 | |
build | Connect コンテナーイメージを構築する方法を設定します。任意です。 |
第77章 ClientTls
スキーマリファレンス
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2ClusterSpec
、KafkaMirrorMakerConsumerSpec
、KafkaMirrorMakerProducerSpec
KafkaConnect、KafkaBridge、KafkaMirror、KafkaMirrorMaker2 をクラスターに接続するための TLS 信頼済み証明書 を設定します。
77.1. ClientTls
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
trustedCertificates | TLS 接続の信頼済み証明書。 |
第78章 KafkaClientAuthenticationTls
スキーマリファレンス
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2ClusterSpec
、KafkaMirrorMakerConsumerSpec
、KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationTls
スキーマプロパティーの全リスト
mTLS 認証を設定するには、type
プロパティーを値 tls
に設定します。mTLS は TLS 証明書を使用して認証します。
証明書は certificateAndKey
プロパティーで指定され、常に OpenShift シークレットからロードされます。シークレットでは、公開鍵と秘密鍵の 2 つの鍵を使用して証明書を X509 形式で保存する必要があります。
mTLS 設定の例
authentication: type: tls certificateAndKey: secretName: my-secret certificate: my-public-tls-certificate-file.crt key: private.key
authentication:
type: tls
certificateAndKey:
secretName: my-secret
certificate: my-public-tls-certificate-file.crt
key: private.key
User Operator によって作成されたシークレットを使用できます。または、認証に使用される鍵で独自の TLS 証明書ファイルを作成し、ファイルから Secret
を作成することもできます。
oc create secret generic <my_tls_secret> \ --from-file=<my_public_tls_certificate>.crt \ --from-file=<my_private_key>.key
oc create secret generic <my_tls_secret> \
--from-file=<my_public_tls_certificate>.crt \
--from-file=<my_private_key>.key
mTLS クライアント認証のシークレットの例
apiVersion: v1 kind: Secret metadata: name: my-tls-secret type: Opaque data: tls.crt: LS0tLS1CRUdJTiBDRVJ... tls.key: LS0tLS1CRUdJTiBQUkl...
apiVersion: v1
kind: Secret
metadata:
name: my-tls-secret
type: Opaque
data:
tls.crt: LS0tLS1CRUdJTiBDRVJ...
tls.key: LS0tLS1CRUdJTiBQUkl...
mTLS 認証は、TLS 接続でのみ使用できます。
78.1. KafkaClientAuthenticationTls
スキーマプロパティー
type
プロパティーは、KafkaClientAuthenticationTls
タイプと、KafkaClientAuthenticationScramSha256
, KafkaClientAuthenticationScramSha512
, KafkaClientAuthenticationPlain
, KafkaClientAuthenticationOAuth
の使用を区別するための識別子です。KafkaClientAuthenticationTls
タイプには tls
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
certificateAndKey |
証明書と秘密鍵のペアを保持する |
第79章 KafkaClientAuthenticationScramSha256
スキーマリファレンス
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2ClusterSpec
、KafkaMirrorMakerConsumerSpec
、KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationScramSha256
スキーマプロパティーの全リスト
SASL ベースの SCRAM-SHA-256 認証を設定するには、type
プロパティーを scram-sha-256
に設定します。SCRAM-SHA-256 認証メカニズムには、ユーザー名とパスワードが必要です。
Kafka Connect の SASL ベース SCRAM-SHA-256 クライアント認証の設定例
authentication: type: scram-sha-256 username: my-connect-username passwordSecret: secretName: my-connect-secret-name password: my-connect-password-field
authentication:
type: scram-sha-256
username: my-connect-username
passwordSecret:
secretName: my-connect-secret-name
password: my-connect-password-field
passwordSecret
プロパティーで、パスワードが含まれる Secret
へのリンクを指定します。
User Operator によって作成されたシークレットを使用できます。
必要に応じて、認証に使用するクリアテキストのパスワードが含まれるテキストファイルを作成できます。
echo -n <password> > <my_password>.txt
echo -n <password> > <my_password>.txt
次に、テキストファイルから Secret
を作成し、パスワードに独自のフィールド名 (鍵) を設定できます。
oc create secret generic <my-connect-secret-name> --from-file=<my_password_field_name>=./<my_password>.txt
oc create secret generic <my-connect-secret-name> --from-file=<my_password_field_name>=./<my_password>.txt
Kafka Connect の SCRAM-SHA-256 クライアント認証のシークレット例
apiVersion: v1 kind: Secret metadata: name: my-connect-secret-name type: Opaque data: my-connect-password-field: LFTIyFRFlMmU2N2Tm
apiVersion: v1
kind: Secret
metadata:
name: my-connect-secret-name
type: Opaque
data:
my-connect-password-field: LFTIyFRFlMmU2N2Tm
secretName
プロパティーには Secret
の名前が含まれ、password
プロパティーには Secret
内にパスワードが格納されるキーの名前が含まれます。
password
プロパティーには、実際のパスワードを指定しないでください。
79.1. KafkaClientAuthenticationScramSha256
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
username | string | 認証に使用されるユーザー名。 |
passwordSecret |
パスワードを保持する |
第80章 PasswordSecretSource
スキーマリファレンス
使用先: KafkaClientAuthenticationOAuth
、KafkaClientAuthenticationPlain
、KafkaClientAuthenticationScramSha256
、KafkaClientAuthenticationScramSha512
プロパティー | プロパティータイプ | 説明 |
---|---|---|
secretName | string | パスワードを含むシークレットの名前。 |
password | string | パスワードが保存される Secret のキーの名前。 |
第81章 KafkaClientAuthenticationScramSha512
スキーマリファレンス
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2ClusterSpec
、KafkaMirrorMakerConsumerSpec
、KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationScramSha512
スキーマプロパティーの全リスト
SASL ベースの SCRAM-SHA-512 認証を設定するには、type
プロパティーを scram-sha-512
に設定します。SCRAM-SHA-512 認証メカニズムには、ユーザー名とパスワードが必要です。
Kafka Connect の SASL ベース SCRAM-SHA-512 クライアント認証の設定例
authentication: type: scram-sha-512 username: my-connect-username passwordSecret: secretName: my-connect-secret-name password: my-connect-password-field
authentication:
type: scram-sha-512
username: my-connect-username
passwordSecret:
secretName: my-connect-secret-name
password: my-connect-password-field
passwordSecret
プロパティーで、パスワードが含まれる Secret
へのリンクを指定します。
User Operator によって作成されたシークレットを使用できます。
必要に応じて、認証に使用するクリアテキストのパスワードが含まれるテキストファイルを作成できます。
echo -n <password> > <my_password>.txt
echo -n <password> > <my_password>.txt
次に、テキストファイルから Secret
を作成し、パスワードに独自のフィールド名 (鍵) を設定できます。
oc create secret generic <my-connect-secret-name> --from-file=<my_password_field_name>=./<my_password>.txt
oc create secret generic <my-connect-secret-name> --from-file=<my_password_field_name>=./<my_password>.txt
Kafka Connect の SCRAM-SHA-512 クライアント認証のシークレット例
apiVersion: v1 kind: Secret metadata: name: my-connect-secret-name type: Opaque data: my-connect-password-field: LFTIyFRFlMmU2N2Tm
apiVersion: v1
kind: Secret
metadata:
name: my-connect-secret-name
type: Opaque
data:
my-connect-password-field: LFTIyFRFlMmU2N2Tm
secretName
プロパティーには Secret
の名前が含まれ、password
プロパティーには Secret
内にパスワードが格納されるキーの名前が含まれます。
password
プロパティーには、実際のパスワードを指定しないでください。
81.1. KafkaClientAuthenticationScramSha512
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
username | string | 認証に使用されるユーザー名。 |
passwordSecret |
パスワードを保持する |
第82章 KafkaClientAuthenticationPlain
スキーマリファレンス
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2ClusterSpec
、KafkaMirrorMakerConsumerSpec
、KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationPlain
スキーマプロパティーの全リスト
SASL ベースの PLAIN 認証を設定するには、type
プロパティーを plain
に設定します。SASL PLAIN 認証メカニズムには、ユーザー名とパスワードが必要です。
Kafka Connect の SASL ベースの PLAIN クライアント認証設定例
authentication: type: plain username: my-connect-username passwordSecret: secretName: my-connect-secret-name password: my-password-field-name
authentication:
type: plain
username: my-connect-username
passwordSecret:
secretName: my-connect-secret-name
password: my-password-field-name
SASL PLAIN メカニズムは、クリアテキストでユーザー名とパスワードをネットワーク全体に転送します。TLS による暗号化が有効になっている場合にのみ SASL PLAIN 認証を使用します。
passwordSecret
プロパティーで、パスワードが含まれる Secret
へのリンクを指定します。
User Operator によって作成されたシークレットを使用できます。
必要に応じて、認証に使用するクリアテキストのパスワードが含まれるテキストファイルを作成します。
echo -n <password> > <my_password>.txt
echo -n <password> > <my_password>.txt
次に、テキストファイルから Secret
を作成し、パスワードに独自のフィールド名 (鍵) を設定できます。
oc create secret generic <my-connect-secret-name> --from-file=<my_password_field_name>=./<my_password>.txt
oc create secret generic <my-connect-secret-name> --from-file=<my_password_field_name>=./<my_password>.txt
Kafka Connect の PLAIN クライアント認証のシークレット例
apiVersion: v1 kind: Secret metadata: name: my-connect-secret-name type: Opaque data: my-password-field-name: LFTIyFRFlMmU2N2Tm
apiVersion: v1
kind: Secret
metadata:
name: my-connect-secret-name
type: Opaque
data:
my-password-field-name: LFTIyFRFlMmU2N2Tm
secretName
プロパティーには Secret
の名前が含まれ、password
プロパティーには Secret
内にパスワードが格納されるキーの名前が含まれます。
password
プロパティーには、実際のパスワードを指定しないでください。
82.1. KafkaClientAuthenticationPlain
スキーマプロパティー
type
プロパティーは、KafkaClientAuthenticationPlain
タイプと、KafkaClientAuthenticationTls
, KafkaClientAuthenticationScramSha256
, KafkaClientAuthenticationScramSha512
, KafkaClientAuthenticationOAuth
の使用を区別するための識別子です。KafkaClientAuthenticationPlain
タイプには plain
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
username | string | 認証に使用されるユーザー名。 |
passwordSecret |
パスワードを保持する |
第83章 KafkaClientAuthenticationOAuth
スキーマリファレンス
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2ClusterSpec
、KafkaMirrorMakerConsumerSpec
、KafkaMirrorMakerProducerSpec
KafkaClientAuthenticationOAuth
スキーマプロパティーの全リスト
OAuth クライアント認証を設定するには、type
プロパティーを oauth
に設定します。
OAuth 認証は、以下のオプションのいずれかを使用して設定できます。
- クライアント ID およびシークレット
- クライアント ID およびリフレッシュトークン
- アクセストークン
- ユーザー名およびパスワード
- TLS
クライアント ID およびシークレット
認証で使用されるクライアント ID およびクライアントシークレットとともに、tokenEndpointUri
プロパティーで認可サーバーのアドレスを設定できます。OAuth クライアントは OAuth サーバーに接続し、クライアント ID およびシークレットを使用して認証し、Kafka ブローカーとの認証に使用するアクセストークンを取得します。clientSecret
プロパティーで、クライアントシークレットを含む Secret
へのリンクを指定します。
クライアント ID とクライアントシークレットの設定例
authentication: type: oauth tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint> clientId: my-client-id clientSecret: secretName: my-client-oauth-secret key: client-secret
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
clientId: my-client-id
clientSecret:
secretName: my-client-oauth-secret
key: client-secret
必要に応じて、scope
と audience
を指定できます。
クライアント ID およびリフレッシュトークン
OAuth クライアント ID およびリフレッシュトークンとともに、tokenEndpointUri
プロパティーで OAuth サーバーのアドレスを設定できます。OAuth クライアントは OAuth サーバーに接続し、クライアント ID とリフレッシュトークンを使用して認証し、Kafka ブローカーとの認証に使用するアクセストークンを取得します。refreshToken
プロパティーで、リフレッシュトークンが含まれる Secret
へのリンクを指定します。
クライアント ID とリフレッシュトークンの設定例
authentication: type: oauth tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint> clientId: my-client-id refreshToken: secretName: my-refresh-token-secret key: refresh-token
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
clientId: my-client-id
refreshToken:
secretName: my-refresh-token-secret
key: refresh-token
アクセストークン
Kafka ブローカーとの認証に使用されるアクセストークンを直接設定できます。この場合、tokenEndpointUri
は指定しません。accessToken
プロパティーで、アクセストークンが含まれる Secret
へのリンクを指定します。または、accessTokenLocation
プロパティーを使用して、トークンファイルへのパスを指定します。
アクセストークンのみの設定例
authentication: type: oauth accessToken: secretName: my-access-token-secret key: access-token
authentication:
type: oauth
accessToken:
secretName: my-access-token-secret
key: access-token
マウントされたファイルを指定するアクセストークン設定の例 (サービスアカウント)
authentication: type: oauth accessTokenLocation: `/var/run/secrets/kubernetes.io/serviceaccount/token`
authentication:
type: oauth
accessTokenLocation: `/var/run/secrets/kubernetes.io/serviceaccount/token`
ユーザー名およびパスワード
OAuth のユーザー名とパスワードの設定では、OAuth リソースオーナーのパスワード付与 メカニズムを使用します。このメカニズムは非推奨であり、クライアント認証情報 (ID とシークレット) を使用できない環境での統合を有効にするためにのみサポートされています。アクセス管理システムが別のアプローチをサポートしていない場合、または認証にユーザーアカウントが必要な場合は、ユーザーアカウントの使用が必要になることがあります。
典型的なアプローチは、クライアントアプリケーションを表す認可サーバーに特別なユーザーアカウントを作成することです。次に、ランダムに生成された長いパスワードと非常に限られた権限セットをアカウントに与えます。たとえば、アカウントは Kafka クラスターにのみ接続できますが、他のサービスを使用したり、ユーザーインターフェイスにログインしたりすることはできません。
まず、リフレッシュトークンメカニズムの使用を検討してください。
tokenEndpointUri
プロパティーで、認証に使用されるクライアント ID、ユーザー名、およびパスワードと共に、認可サーバーのアドレスを設定できます。OAuth クライアントは OAuth サーバーに接続し、ユーザー名、パスワード、クライアント ID、およびオプションでクライアントシークレットを使用して認証し、Kafka ブローカーでの認証に使用するアクセストークンを取得します。
passwordSecret
プロパティーで、パスワードが含まれる Secret
へのリンクを指定します。
通常、パブリック OAuth クライアントを使用して clientId
も設定する必要があります。機密 OAuth クライアントを使用している場合は、clientSecret
も設定する必要があります。
パブリッククライアントでのユーザー名とパスワードの設定例
authentication: type: oauth tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint> username: my-username passwordSecret: secretName: my-password-secret-name password: my-password-field-name clientId: my-public-client-id
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
username: my-username
passwordSecret:
secretName: my-password-secret-name
password: my-password-field-name
clientId: my-public-client-id
機密クライアントでのユーザー名とパスワードの設定例
authentication: type: oauth tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint> username: my-username passwordSecret: secretName: my-password-secret-name password: my-password-field-name clientId: my-confidential-client-id clientSecret: secretName: my-confidential-client-oauth-secret key: client-secret
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
username: my-username
passwordSecret:
secretName: my-password-secret-name
password: my-password-field-name
clientId: my-confidential-client-id
clientSecret:
secretName: my-confidential-client-oauth-secret
key: client-secret
必要に応じて、scope
と audience
を指定できます。
TLS
HTTPS プロトコルを使用して OAuth サーバーにアクセスする場合、信頼される認証局によって署名された証明書を使用し、そのホスト名が証明書に記載されている限り、追加の設定は必要ありません。
OAuth サーバーで自己署名証明書または信頼されていない認証局によって署名された証明書を使用する場合は、tlsTrustedCertificates
プロパティーを使用してそれらが含まれるシークレットを指定します。証明書は X.509 形式である必要があります。
TLS 証明書を指定する設定例
authentication: type: oauth tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint> clientId: my-client-id refreshToken: secretName: my-refresh-token-secret key: refresh-token tlsTrustedCertificates: - secretName: oauth-server-ca pattern: "*.crt"
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
clientId: my-client-id
refreshToken:
secretName: my-refresh-token-secret
key: refresh-token
tlsTrustedCertificates:
- secretName: oauth-server-ca
pattern: "*.crt"
OAuth クライアントはデフォルトで、OAuth サーバーのホスト名が、証明書サブジェクトまたは別の DNS 名のいずれかと一致することを確認します。必要でない場合は、ホスト名の検証を無効にできます。
TLS ホスト名検証を無効にする設定例
authentication: type: oauth tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint> clientId: my-client-id refreshToken: secretName: my-refresh-token-secret key: refresh-token disableTlsHostnameVerification: true
authentication:
type: oauth
tokenEndpointUri: https://<auth_server_address>/<path_to_token_endpoint>
clientId: my-client-id
refreshToken:
secretName: my-refresh-token-secret
key: refresh-token
disableTlsHostnameVerification: true
83.1. KafkaClientAuthenticationOAuth
スキーマプロパティー
type
プロパティーは、KafkaClientAuthenticationOAuth
タイプと、KafkaClientAuthenticationTls
, KafkaClientAuthenticationScramSha256
, KafkaClientAuthenticationScramSha512
, KafkaClientAuthenticationPlain
の使用を区別するための識別子です。KafkaClientAuthenticationOAuth
タイプには oauth
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
clientId | string | Kafka クライアントが OAuth サーバーに対する認証に使用し、トークンエンドポイント URI を使用することができる OAuth クライアント ID。 |
username | string | 認証に使用されるユーザー名。 |
scope | string |
認可サーバーに対して認証を行うときに使用する OAuth スコープ。一部の認可サーバーでこれを設定する必要があります。許可される値は、認可サーバーの設定によります。デフォルトでは、トークンエンドポイントリクエストを実行する場合は |
audience | string |
認可サーバーに対して認証を行うときに使用する OAuth オーディエンス。一部の認可サーバーでは、オーディエンスを明示的に設定する必要があります。許可される値は、認可サーバーの設定によります。デフォルトでは、トークンエンドポイントリクエストを実行する場合は |
tokenEndpointUri | string | 認可サーバートークンエンドポイント URI。 |
connectTimeoutSeconds | integer | 認可サーバーへの接続時のタイムアウト (秒単位)。設定しない場合は、実際の接続タイムアウトは 60 秒になります。 |
readTimeoutSeconds | integer | 認可サーバーへの接続時の読み取りタイムアウト (秒単位)。設定しない場合は、実際の読み取りタイムアウトは 60 秒になります。 |
httpRetries | integer | 最初の HTTP リクエストが失敗した場合に試行する最大再試行回数。設定されていない場合、デフォルトでは再試行は行われません。 |
httpRetryPauseMs | integer | 失敗した HTTP リクエストを再試行するまでの一時停止。設定されていない場合、デフォルトでは一時停止せず、ただちにリクエストを繰り返します。 |
clientSecret | Kafka クライアントが OAuth サーバーに対する認証に使用し、トークンエンドポイント URI を使用することができる OAuth クライアントシークレットが含まれる OpenShift シークレットへのリンク。 | |
passwordSecret |
パスワードを保持する | |
accessToken | 認可サーバーから取得したアクセストークンが含まれる OpenShift シークレットへのリンク。 | |
refreshToken | 認可サーバーからアクセストークンを取得するために使用できるリフレッシュトークンが含まれる OpenShift シークレットへのリンク。 | |
tlsTrustedCertificates | OAuth サーバーへの TLS 接続の信頼済み証明書。 | |
disableTlsHostnameVerification | boolean |
TLS ホスト名の検証を有効または無効にします。デフォルト値は |
maxTokenExpirySeconds | integer | アクセストークンの有効期間を指定の秒数に設定または制限します。これは、認可サーバーが不透明なトークンを返す場合に設定する必要があります。 |
accessTokenIsJwt | boolean |
アクセストークンを JWT として処理すべきかどうかを設定します。認可サーバーが不透明なトークンを返す場合は、 |
enableMetrics | boolean |
OAuth メトリックを有効または無効にします。デフォルト値は |
includeAcceptHeader | boolean |
認可サーバーへのリクエストに Accept ヘッダーを設定するかどうか。デフォルト値は |
accessTokenLocation | string | 認証に使用するアクセストークンを含むトークンファイルへのパス。 |
clientAssertion | クライアント用に手動で設定したクライアントアサーションを含む OpenShift シークレットへのリンク。 | |
clientAssertionLocation | string | 認証に使用するクライアントアサーションを含むファイルへのパス。 |
clientAssertionType | string |
クライアントアサーションのタイプ。設定されていない場合、 |
saslExtensions | map | SASL 拡張パラメーター。 |
第84章 JaegerTracing
スキーマリファレンス
タイプ JaegerTracing
は非推奨になりました。
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2Spec
、KafkaMirrorMakerSpec
type
プロパティーは、JaegerTracing
タイプの使用を OpenTelemetryTracing
と区別する識別子です。JaegerTracing
タイプには jaeger
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
第85章 OpenTelemetryTracing
スキーマリファレンス
使用先: KafkaBridgeSpec
、KafkaConnectSpec
、KafkaMirrorMaker2Spec
、KafkaMirrorMakerSpec
type
プロパティーは、OpenTelemetryTracing
タイプの使用をJaegerTracing
と区別する識別子です。タイプ OpenTelemetryTracing
の値が opentelemetry
である必要があります。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
第86章 KafkaConnectTemplate
スキーマリファレンス
使用先: KafkaConnectSpec
、KafkaMirrorMaker2Spec
プロパティー | プロパティータイプ | 説明 |
---|---|---|
deployment |
| |
podSet |
Kafka Connect | |
Pod |
Kafka Connect | |
apiService |
Kafka Connect API | |
headlessService |
Kafka Connect ヘッドレス | |
connectContainer | Kafka Connect コンテナーのテンプレート。 | |
initContainer | Kafka init コンテナーのテンプレート。 | |
podDisruptionBudget |
Kafka Connect | |
serviceAccount | Kafka Connect サービスアカウントのテンプレート。 | |
clusterRoleBinding | Kafka Connect ClusterRoleBinding のテンプレート。 | |
buildPod |
Kafka Connect Build | |
buildContainer | Kafka Connect Build コンテナーのテンプレート。build コンテナーは OpenShift でのみ使用されます。 | |
buildConfig | 新しいコンテナーイメージをビルドするために使用される Kafka Connect BuildConfig のテンプレート。BuildConfig は OpenShift でのみ使用されます。 | |
buildServiceAccount | Kafka Connect Build サービスアカウントのテンプレート。 | |
jmxSecret | Kafka Connect Cluster JMX 認証の Secret のテンプレートです。 |
第87章 BuildConfigTemplate
スキーマリファレンス
使用先: KafkaConnectTemplate
プロパティー | プロパティータイプ | 説明 |
---|---|---|
metadata |
| |
pullSecret | string | ベースイメージをプルするためのクレデンシャルが含まれる Container Registry Secret。 |
第88章 ExternalConfiguration
スキーマリファレンス
使用先: KafkaConnectSpec
、KafkaMirrorMaker2Spec
ExternalConfiguration
スキーマプロパティーの全リスト
Kafka Connect コネクターの設定オプションを定義する外部ストレージプロパティーを設定します。
ConfigMap またはシークレットを環境変数またはボリュームとして Kafka Connect Pod にマウントできます。ボリュームおよび環境変数は、KafkaConnect.spec
または KafkaMirrorMaker2.spec
の externalConfiguration
プロパティーで設定されます。
これが適用されると、コネクターの開発時に環境変数とボリュームを使用できます。
詳細は、外部ソースからの設定値の読み込み を参照してください。
88.1. ExternalConfiguration
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
env | Secret または ConfigMap からのデータを環境変数として Kafka Connect Pod で利用できるようにします。 | |
volumes | Secret または ConfigMap からのデータをボリュームとして Kafka Connect Pod で利用できるようにします。 |
第89章 ExternalConfigurationEnv
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
name | string |
Kafka Connect Pod に渡される環境変数の名前。環境変数に、 |
valueFrom | Kafka Connect Pod に渡される環境変数の値。Secret または ConfigMap フィールドのいずれかへ参照として渡すことができます。このフィールドでは、Secret または ConfigMap を 1 つだけ指定する必要があります。 |
第90章 ExternalConfigurationEnvVarSource
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
secretKeyRef | Secret のキーへの参照。 | |
configMapKeyRef | ConfigMap のキーへの参照。 |
第91章 ExternalConfigurationVolumeSource
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
name | string | Kafka Connect Pod に追加されるボリュームの名前。 |
secret | Secret のキーへの参照。Secret または ConfigMap を 1 つだけ指定する必要があります。 | |
configMap | ConfigMap のキーへの参照。Secret または ConfigMap を 1 つだけ指定する必要があります。 |
第92章 Build
スキーマリファレンス
使用先: KafkaConnectSpec
Kafka Connect デプロイメントの追加コネクターを設定します。
92.1. コンテナーレジストリーの設定
追加のコネクタープラグインを使用して新しいコンテナーイメージをビルドするには、Streams for Apache Kafka に、イメージをプッシュ、保存、プルできるコンテナーレジストリーが必要です。Streams for Apache Kafka は独自のコンテナーレジストリーを実行しないため、レジストリーを用意する必要があります。Streams for Apache Kafka は、プライベートコンテナーレジストリーだけでなく、Quay や Docker Hub などのパブリックレジストリーもサポートします。コンテナーレジストリーは、KafkaConnect
カスタムリソースの .spec.build.output
セクションで設定されます。output
設定は必須で、docker
と imagestream
の 2 つのタイプをサポートします。
Docker レジストリーの使用
Docker レジストリーを使用するには、type
を docker
として指定し、image
フィールドに新しいコンテナーイメージのフルネームを指定する必要があります。フルネームには以下が含まれる必要があります。
- レジストリーのアドレス
- ポート番号 (標準以外のポートでリッスンしている場合)
- 新しいコンテナーイメージのタグ
有効なコンテナーイメージ名の例:
-
docker.io/my-org/my-image/my-tag
-
quay.io/my-org/my-image/my-tag
-
image-registry.image-registry.svc:5000/myproject/kafka-connect-build:latest
Kafka Connect デプロイメントごとに個別のイメージを使用する必要があります。これは、最も基本的なレベルで異なるタグを使用する可能性があることを意味します。
レジストリーに認証が必要な場合は、pushSecret
を使用してレジストリーのクレデンシャルで Secret の名前を設定します。Secret には、kubernetes .io/dockerconfigjson
タイプと .dockerconfigjson
ファイルを使用して Docker 認証情報を追加します。プライベートレジストリーからイメージをプルする方法の詳細は、Create a Secret based on existing Docker credentials を参照してください。
output
設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster spec: #... build: output: type: docker image: my-registry.io/my-org/my-connect-cluster:latest pushSecret: my-registry-credentials #...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
type: docker
image: my-registry.io/my-org/my-connect-cluster:latest
pushSecret: my-registry-credentials
#...
OpenShift ImageStream の使用
Docker の代わりに OpenShift ImageStream を使用して、新しいコンテナーイメージを保存できます。Kafka Connect をデプロイする前に、ImageStream を手動で作成する必要があります。ImageStream を使用するには、type
を imagestream
に設定し、image
プロパティーを使用して ImageStream と使用するタグの名前を指定します。例: my-connect-image-stream:latest
output
設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster spec: #... build: output: type: imagestream image: my-connect-build:latest #...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
type: imagestream
image: my-connect-build:latest
#...
92.2. コネクタープラグインの設定
コネクタープラグインは、特定タイプの外部システムへの接続に必要な実装を定義するファイルのセットです。コンテナーイメージに必要なコネクタープラグインは、KafkaConnect
カスタムリソースの .spec.build.plugins
プロパティーを使用して設定する必要があります。各コネクタープラグインには、Kafka Connect デプロイメント内で一意となる名前が必要です。さらに、プラグインアーティファクトもリストする必要があります。これらのアーティファクトは、Streams for Apache Kafka によってダウンロードされ、新しいコンテナーイメージに追加され、Kafka Connect デプロイメントで使用されます。コネクタープラグインアーティファクトには、シリアライザーやデシリアライザーなどの追加のコンポーネントを含めることもできます。各コネクタープラグインは、異なるコネクターとそれらの依存関係が適切に サンドボックス化 されるように、個別のディレクトリーにダウンロードされます。各プラグインは、1 つ以上の artifact
で設定する必要があります。
2 つのコネクタープラグインを持つ plugins
の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster spec: #... build: output: #... plugins: - name: connector-1 artifacts: - type: tgz url: <url_to_download_connector_1_artifact> sha512sum: <SHA-512_checksum_of_connector_1_artifact> - name: connector-2 artifacts: - type: jar url: <url_to_download_connector_2_artifact> sha512sum: <SHA-512_checksum_of_connector_2_artifact> #...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
#...
plugins:
- name: connector-1
artifacts:
- type: tgz
url: <url_to_download_connector_1_artifact>
sha512sum: <SHA-512_checksum_of_connector_1_artifact>
- name: connector-2
artifacts:
- type: jar
url: <url_to_download_connector_2_artifact>
sha512sum: <SHA-512_checksum_of_connector_2_artifact>
#...
- 1
- (必須) コネクタープラグインおよびそれらのアーティファクトのリスト。
Streams for Apache Kafka は、次のタイプのアーティファクトをサポートしています。
- 直接ダウンロードして使用する JAR ファイル
- ダウンロードおよび解凍された TGZ アーカイブ
- ダウンロードおよび解凍された ZIP アーカイブ
- Maven コーディネートを使用する Maven アーティファクト
- 直接ダウンロードおよび使用されるその他のアーティファクト
Streams for Apache Kafka は、ダウンロードしたアーティファクトのセキュリティースキャンを実行しません。セキュリティー上の理由から、最初にアーティファクトを手動で検証し、チェックサムの検証を設定して、自動ビルドと Kafka Connect デプロイメントで同じアーティファクトが使用されるようにする必要があります。
JAR アーティファクトの使用
JAR アーティファクトは、コンテナーイメージにダウンロードされ、追加された JAR ファイルを表します。JAR アーティファクトを使用するには、type
プロパティーを jar
に設定し、url
プロパティーを使用してダウンロードする場所を指定します。
さらに、アーティファクトの SHA-512 チェックサムを指定することもできます。指定すると、Streams for Apache Kafka が新しいコンテナーイメージのビルド中にアーティファクトのチェックサムを検証します。
JAR アーティファクトの例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster spec: #... build: output: #... plugins: - name: my-plugin artifacts: - type: jar url: https://my-domain.tld/my-jar.jar sha512sum: 589...ab4 - type: jar url: https://my-domain.tld/my-jar2.jar #...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
#...
plugins:
- name: my-plugin
artifacts:
- type: jar
url: https://my-domain.tld/my-jar.jar
sha512sum: 589...ab4
- type: jar
url: https://my-domain.tld/my-jar2.jar
#...
TGZ アーティファクトの使用
TGZ アーティファクトは、Gzip 圧縮を使用して圧縮された TAR アーカイブをダウンロードするために使用されます。TGZ アーティファクトには、複数の異なるファイルで構成されている場合でも、Kafka Connect コネクター全体を含めることができます。TGZ アーティファクトは、新しいコンテナーイメージのビルド時に Streams for Apache Kafka によって自動的にダウンロードおよび展開されます。TGZ アーティファクトを使用するには、type
プロパティーを tgz
に設定し、url
プロパティーを使用してダウンロードする場所を指定します。
さらに、アーティファクトの SHA-512 チェックサムを指定することもできます。指定すると、Streams for Apache Kafka がアーティファクトを展開して新しいコンテナーイメージをビルドする前に、チェックサムを検証します。
TGZ アーティファクトの例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster spec: #... build: output: #... plugins: - name: my-plugin artifacts: - type: tgz url: https://my-domain.tld/my-connector-archive.tgz sha512sum: 158...jg10 #...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
#...
plugins:
- name: my-plugin
artifacts:
- type: tgz
url: https://my-domain.tld/my-connector-archive.tgz
sha512sum: 158...jg10
#...
ZIP アーティファクトの使用
ZIP アーティファクトは ZIP 圧縮アーカイブのダウンロードに使用されます。前のセクションで説明した TGZ アーティファクトと同じ方法で ZIP アーティファクトを使用します。唯一の違いは、type: tgz
ではなく type: zip
を指定することです。
Maven アーティファクトの使用
Maven
アーティファクトは、コネクタープラグインアーティファクトを Maven コーディネートとして指定するために使用されます。Maven コーディネートは、プラグインアーティファクトおよび依存関係を特定し、Maven リポジトリーから検索および取得できるようにします。
コネクタービルドプロセスがアーティファクトをコンテナーイメージに追加するには、Maven リポジトリーへのアクセス権が必要です。
Maven アーティファクトの例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster spec: #... build: output: #... plugins: - name: my-plugin artifacts: - type: maven repository: https://mvnrepository.com group: <maven_group> artifact: <maven_artifact> version: <maven_version_number> #...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
#...
plugins:
- name: my-plugin
artifacts:
- type: maven
repository: https://mvnrepository.com
group: <maven_group>
artifact: <maven_artifact>
version: <maven_version_number>
#...
other
アーティファクトの使用
other
アーティファクトは、コンテナーイメージにダウンロードおよび追加されたファイルの種類を表します。結果となるコンテナーイメージのアーティファクトに特定の名前を使用する場合は、fileName
フィールドを使用します。ファイル名が指定されていない場合、URL ハッシュを基にファイルの名前が付けられます。
さらに、アーティファクトの SHA-512 チェックサムを指定することもできます。指定すると、Streams for Apache Kafka が新しいコンテナーイメージのビルド中にアーティファクトのチェックサムを検証します。
other
アーティファクトの例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster spec: #... build: output: #... plugins: - name: my-plugin artifacts: - type: other url: https://my-domain.tld/my-other-file.ext sha512sum: 589...ab4 fileName: name-the-file.ext #...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect-cluster
spec:
#...
build:
output:
#...
plugins:
- name: my-plugin
artifacts:
- type: other
url: https://my-domain.tld/my-other-file.ext
sha512sum: 589...ab4
fileName: name-the-file.ext
#...
92.3. Build
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
出力 (output) | 新たにビルドされたイメージの保存先を設定します。必須。 | |
plugins |
| Kafka Connect に追加する必要のあるコネクタープラグインのリスト。必須。 |
resources | ビルド用に予約する CPU およびメモリーリソース。 |
第93章 DockerOutput
スキーマリファレンス
Build
で使用
type
プロパティーは、DockerOutput
タイプの使用を、ImageStreamOutput
と区別するための識別子です。DockerOutput
タイプには docker
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
image | string |
新たにビルドされたイメージのタグ付けおよびプッシュに使用されるフルネーム。例: |
pushSecret | string | 新たにビルドされたイメージをプッシュするための、クレデンシャルが含まれる Container Registry Secret。 |
additionalKanikoOptions | string 配列 | 新しい Connect イメージをビルドする際に、Kaniko エグゼキューターに渡される追加オプションを設定します。指定できるオプションは --customPlatform、--insecure、--insecure-pull、--insecure-registry、--log-format、--log-timestamp、--registry-mirror、--reproducible、--single-snapshot、--skip-tls-verify、--skip-tls-verify-pull、--skip-tls-verify-registry、--verbosity、--snapshotMode、--use-new-run です。これらのオプションは、Kaniko エグゼキューターが使用される OpenShift でのみ使用されます。OpenShift では無視されます。オプションは、Kaniko GitHub repository に記載されています。このフィールドを変更しても、Kafka Connect イメージのビルドは新たにトリガーされません。 |
type | string |
|
第94章 ImageStreamOutput
スキーマリファレンス
Build
で使用
type
プロパティーは、ImageStreamOutput
タイプの使用と、DockerOutput
を区別するための識別子です。ImageStreamOutput
タイプには imagestream
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
image | string |
新たにビルドされたイメージがプッシュされる ImageStream の名前およびタグ。例: |
第95章 Plugin
スキーマリファレンス
Build
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
name | string |
コネクタープラグインの一意名。コネクターアーティファクトが保存されるパスの生成に使用されます。名前は KafkaConnect リソース内で一意である必要があります。この名前は、 |
artifacts |
| このコネクタープラグインに属するアーティファクトのリスト。必須。 |
第96章 JarArtifact
スキーマリファレンス
Plugin
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
url | string |
ダウンロードされるアーティファクトの URL。Streams for Apache Kafka は、ダウンロードしたアーティファクトのセキュリティースキャンを実行しません。セキュリティー上の理由から、最初にアーティファクトを手動で検証し、チェックサムの検証を設定して、自動ビルドで同じアーティファクトが使用されるようにする必要があります。 |
sha512sum | string |
アーティファクトの SHA512 チェックサム。任意です。指定すると、新しいコンテナーのビルド時にチェックサムが検証されます。指定のない場合は、ダウンロードしたアーティファクトは検証されません。 |
insecure | boolean |
デフォルトでは、TLS を使用する接続を検証して安全かどうかを確認します。使用するサーバー証明書は有効で信頼でき、サーバー名が含まれる必要があります。このオプションを |
第97章 TgzArtifact
スキーマリファレンス
Plugin
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
url | string |
ダウンロードされるアーティファクトの URL。Streams for Apache Kafka は、ダウンロードしたアーティファクトのセキュリティースキャンを実行しません。セキュリティー上の理由から、最初にアーティファクトを手動で検証し、チェックサムの検証を設定して、自動ビルドで同じアーティファクトが使用されるようにする必要があります。 |
sha512sum | string |
アーティファクトの SHA512 チェックサム。任意です。指定すると、新しいコンテナーのビルド時にチェックサムが検証されます。指定のない場合は、ダウンロードしたアーティファクトは検証されません。 |
insecure | boolean |
デフォルトでは、TLS を使用する接続を検証して安全かどうかを確認します。使用するサーバー証明書は有効で信頼でき、サーバー名が含まれる必要があります。このオプションを |
第98章 ZipArtifact
スキーマリファレンス
Plugin
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
url | string |
ダウンロードされるアーティファクトの URL。Streams for Apache Kafka は、ダウンロードしたアーティファクトのセキュリティースキャンを実行しません。セキュリティー上の理由から、最初にアーティファクトを手動で検証し、チェックサムの検証を設定して、自動ビルドで同じアーティファクトが使用されるようにする必要があります。 |
sha512sum | string |
アーティファクトの SHA512 チェックサム。任意です。指定すると、新しいコンテナーのビルド時にチェックサムが検証されます。指定のない場合は、ダウンロードしたアーティファクトは検証されません。 |
insecure | boolean |
デフォルトでは、TLS を使用する接続を検証して安全かどうかを確認します。使用するサーバー証明書は有効で信頼でき、サーバー名が含まれる必要があります。このオプションを |
第99章 MavenArtifact
スキーマリファレンス
Plugin
で使用
type
プロパティーは、MavenArtifact
タイプと JarArtifact
, TgzArtifact
, ZipArtifact
, OtherArtifact
の使用を区別するための識別子です。MavenArtifact
タイプには maven
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
repository | string |
アーティファクトのダウンロード元となる Maven リポジトリー。 |
group | string |
Maven グループ ID。 |
artifact | string |
Maven artifact ID。 |
version | string |
Maven のバージョン番号。 |
insecure | boolean |
デフォルトでは、TLS を使用する接続を検証して安全かどうかを確認します。使用するサーバー証明書は有効で信頼でき、サーバー名が含まれる必要があります。このオプションを |
第100章 OtherArtifact
スキーマリファレンス
Plugin
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
url | string |
ダウンロードされるアーティファクトの URL。Streams for Apache Kafka は、ダウンロードしたアーティファクトのセキュリティースキャンを実行しません。セキュリティー上の理由から、最初にアーティファクトを手動で検証し、チェックサムの検証を設定して、自動ビルドで同じアーティファクトが使用されるようにする必要があります。 |
sha512sum | string |
アーティファクトの SHA512 チェックサム。任意です。指定すると、新しいコンテナーのビルド時にチェックサムが検証されます。指定のない場合は、ダウンロードしたアーティファクトは検証されません。 |
fileName | string | 保存されるアーティファクトの名前。 |
insecure | boolean |
デフォルトでは、TLS を使用する接続を検証して安全かどうかを確認します。使用するサーバー証明書は有効で信頼でき、サーバー名が含まれる必要があります。このオプションを |
第101章 KafkaConnectStatus
スキーマリファレンス
KafkaConnect
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
url | string | Kafka Connect コネクターの管理および監視用の REST API エンドポイントの URL。 |
connectorPlugins | この Kafka Connect デプロイメントで使用できるコネクタープラグインのリスト。 | |
replicas | integer | このリソースを提供するために現在使用されている Pod の数。 |
labelSelector | string | このリソースを提供する Pod のラベルセレクター。 |
第102章 ConnectorPlugin
スキーマリファレンス
使用先: KafkaConnectStatus
、KafkaMirrorMaker2Status
プロパティー | プロパティータイプ | 説明 |
---|---|---|
class | string | コネクタープラグインのクラス。 |
type | string |
コネクタープラグインのタイプ。 |
version | string | コネクタープラグインのバージョン。 |
第103章 KafkaTopic
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | トピックの仕様。 | |
status | トピックのステータス。 |
第104章 KafkaTopicSpec
スキーマリファレンス
KafkaTopic
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
topicName | string | トピックの名前。これがない場合、デフォルトではトピックの metadata.name に設定されます。トピック名が有効な OpenShift リソース名ではない場合を除き、これを設定しないことが推奨されます。 |
partitions | integer |
トピックに存在するパーティション数。この数はトピック作成後に減らすことはできません。トピック作成後に増やすことはできますが、その影響について理解することが重要となります。特にセマンティックパーティションのあるトピックで重要となります。これがない場合、デフォルトは |
replicas | integer |
トピックのレプリカ数。これがない場合、デフォルトは |
config | map | トピックの設定。 |
第105章 KafkaTopicStatus
スキーマリファレンス
KafkaTopic
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
topicName | string | トピック名。 |
topicId | string | トピックの ID。準備完了状態の KafkaTopic の場合は、トピックが削除され、同じ名前で再作成された場合にのみ変更されます。 |
replicasChange | レプリケーション係数の変更ステータス。 |
第106章 ReplicasChangeStatus
スキーマリファレンス
KafkaTopicStatus
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
targetReplicas | integer | ユーザーが要求したターゲットレプリカの値。変更が進行中の場合、これは .spec.replicas と異なる場合があります。 |
state | 文字列 ([ongoing, pending] のいずれか) |
レプリカ変更操作の現在の状態。変更がリクエストされた場合は |
message | string | レプリカの変更要求に関連するユーザーへのメッセージ。これには、定期的な調整で消える一時的なエラーメッセージが含まれる場合があります。 |
sessionId | string |
この KafkaTopic リソースに関連するレプリカ変更リクエストのセッション識別子。これは、ステータスが |
第107章 KafkaUser
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | ユーザーの仕様。 | |
status | Kafka User のステータス。 |
第108章 KafkaUserSpec
スキーマリファレンス
KafkaUser
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
認証 |
|
この Kafka ユーザーに対して有効になっている認証メカニズム。サポートされる認証メカニズムは、
認証は任意です。認証が設定されていない場合には、認証情報は生成されません。ユーザーに設定された ACL およびクォータは、SASL 認証に適した |
authorization | この Kafka ユーザーの認可ルール。 | |
quotas | クライアントによって使用されるブローカーリソースを制御する要求のクォータ。ネットワーク帯域幅および要求レートクォータの適用が可能です。Kafka ユーザークォータの Kafka ドキュメントは http://kafka.apache.org/documentation/#design_quotas を参照してください。 | |
template |
Kafka User |
第109章 KafkaUserTlsClientAuthentication
スキーマリファレンス
KafkaUserSpec
で使用
type
プロパティーは KafkaUserTlsClientAuthentication
タイプと、KafkaUserTlsExternalClientAuthentication
, KafkaUserScramSha512ClientAuthentication
の使用を区別するための識別子です。KafkaUserTlsClientAuthentication
タイプには tls
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
第110章 KafkaUserTlsExternalClientAuthentication
スキーマリファレンス
KafkaUserSpec
で使用
type
プロパティーは KafkaUserTlsExternalClientAuthentication
タイプと KafkaUserTlsClientAuthentication
, KafkaUserScramSha512ClientAuthentication
の使用を区別するための識別子です。KafkaUserTlsExternalClientAuthentication
タイプには tls-external
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
第111章 KafkaUserScramSha512ClientAuthentication
スキーマリファレンス
KafkaUserSpec
で使用
type
プロパティーは KafkaUserScramSha512ClientAuthentication
タイプと KafkaUserTlsClientAuthentication
, KafkaUserTlsExternalClientAuthentication
の使用を区別するための識別子です。KafkaUserScramSha512ClientAuthentication
タイプには scram-sha-512
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
password | ユーザーのパスワードを指定します。設定されていない場合、新規パスワードは User Operator によって生成されます。 |
第112章 Password
スキーマリファレンス
使用先: KafkaUserScramSha512ClientAuthentication
プロパティー | プロパティータイプ | 説明 |
---|---|---|
valueFrom | パスワードを読み取る必要のあるシークレット。 |
第113章 KafkaUserAuthorizationSimple
スキーマリファレンス
KafkaUserSpec
で使用
type
プロパティーは、KafkaUserAuthorizationSimple
タイプを使用する際に、今後追加される可能性のある他のサブタイプと区別する識別子です。KafkaUserAuthorizationSimple
タイプには simple
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
ACL |
| このユーザーに適用される必要のある ACL ルールのリスト。 |
第114章 AclRule
スキーマリファレンス
KafkaUserAuthorizationSimple
で使用
ブローカーが simple
認可を使用する場合に KafkaUser
のアクセス制御ルールを設定します。
簡易認可を使用した KafkaUser
設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaUser metadata: name: my-user labels: strimzi.io/cluster: my-cluster spec: # ... authorization: type: simple acls: - resource: type: topic name: "*" patternType: literal operations: - Read - Describe - resource: type: group name: my-group patternType: prefix operations: - Read
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
name: my-user
labels:
strimzi.io/cluster: my-cluster
spec:
# ...
authorization:
type: simple
acls:
- resource:
type: topic
name: "*"
patternType: literal
operations:
- Read
- Describe
- resource:
type: group
name: my-group
patternType: prefix
operations:
- Read
resource
プロパティーを使用して、ルールが適用されるリソースを指定します。
簡易承認は、type
プロパティーに指定される、以下の 4 つのリソースタイプをサポートします。
-
トピック (
topic
) -
コンシューマーグループ (
group
) -
クラスター (
cluster
) -
トランザクション ID (
transactionalId
)
Topic、Group、および Transactional ID リソースでは、name
プロパティーでルールが適用されるリソースの名前を指定できます。
クラスタータイプのリソースには名前がありません。
名前は、patternType
プロパティーを使用して literal
または prefix
として指定されます。
-
リテラル (literal) 名には、
name
フィールドに指定された名前がそのまま使われます。 -
接頭辞名では、
name
値を接頭辞として使用し、名前がその値で始まるすべてのリソースにルールを適用します。
patternType
が literal
として設定されている場合、名前を *
に設定して、ルールがすべてのリソースに適用されるように指示します。
simple
認可、ACL、およびサポートされるリソースと操作の組み合わせの詳細は、Authorization and ACL を参照してください。
114.1. AclRule
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string ([allow、deny] のいずれか) |
ルールのタイプ。現在サポートされているタイプは |
resource |
| 指定の ACL ルールが適用されるリソースを示します。 |
host | string |
ACL ルールに記述されているアクションを許可または拒否するホスト。設定されていない場合は、デフォルトで |
operation | string ([Read、Write、Delete、Alter、Describe、All、IdempotentWrite、ClusterAction、Create、AlterConfigs、DescribeConfigs] のいずれか) |
|
operations | string ([Read、Write、Delete、Alter、Describe、All、IdempotentWrite、ClusterAction、Create、AlterConfigs、DescribeConfigs] のうち 1 つ以上) 配列 | 許可または拒否する操作のリスト。サポートされる操作: Read、Write、Create、Delete、Alter、Describe、ClusterAction、AlterConfigs、DescribeConfigs、IdempotentWrite、All指定されたリソースで特定の操作のみが機能します。 |
第115章 AclRuleTopicResource
スキーマリファレンス
AclRule
で使用
type
プロパティーは、AclRuleTopicResource
タイプを使用する際に AclRuleGroupResource
、AclRuleClusterResource
、AclRuleTransactionalIdResource
タイプと区別する識別子です。AclRuleTopicResource
タイプには topic
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
name | string |
指定の ACL ルールが適用されるリソースの名前。 |
patternType | string ([prefix、literal] のいずれか) |
リソースフィールドで使用されるパターンを指定します。サポートされるタイプは |
第116章 AclRuleGroupResource
スキーマリファレンス
AclRule
で使用
type
プロパティーは、AclRuleGroupResource
タイプを使用する際に AclRuleTopicResource
、AclRuleClusterResource
、AclRuleTransactionalIdResource
タイプと区別する識別子です。AclRuleGroupResource
タイプには group
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
name | string |
指定の ACL ルールが適用されるリソースの名前。 |
patternType | string ([prefix、literal] のいずれか) |
リソースフィールドで使用されるパターンを指定します。サポートされるタイプは |
第117章 AclRuleClusterResource
スキーマリファレンス
AclRule
で使用
type
プロパティーは、AclRuleClusterResource
タイプを使用する際に AclRuleTopicResource
、AclRuleGroupResource
、AclRuleTransactionalIdResource
タイプと区別する識別子です。AclRuleClusterResource
タイプには cluster
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
第118章 AclRuleTransactionalIdResource
スキーマリファレンス
AclRule
で使用
type
プロパティーは、AclRuleTransactionalIdResource
タイプを使用する際に AclRuleTopicResource
、AclRuleGroupResource
、AclRuleClusterResource
タイプと区別する識別子です。AclRuleTransactionalIdResource
タイプには transactionalId
の値が必要です。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
type | string |
|
name | string |
指定の ACL ルールが適用されるリソースの名前。 |
patternType | string ([prefix、literal] のいずれか) |
リソースフィールドで使用されるパターンを指定します。サポートされるタイプは |
第119章 KafkaUserQuotas
スキーマリファレンス
KafkaUserSpec
で使用
KafkaUserQuotas
スキーマプロパティーの全リスト
ユーザーによる Kafka ブローカーへの過負荷を防ぐために、クォータを使用するようにクライアントを設定します。
Kafka ユーザークォータの設定例
spec: quotas: producerByteRate: 1048576 consumerByteRate: 2097152 requestPercentage: 55 controllerMutationRate: 10
spec:
quotas:
producerByteRate: 1048576
consumerByteRate: 2097152
requestPercentage: 55
controllerMutationRate: 10
Kafka ユーザークォータの詳細は Apache Kafka ドキュメント を参照してください。
119.1. KafkaUserQuotas
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
producerByteRate | integer | グループのクライアントにスロットリングが適用される前に、各クライアントグループがブローカーにパブリッシュできる最大 bps (ビット毎秒) のクオータ。ブローカーごとに定義されます。 |
consumerByteRate | integer | グループのクライアントにスロットリングが適用される前に、各クライアントグループがブローカーから取得できる最大 bps (ビット毎秒) のクオータ。ブローカーごとに定義されます。 |
requestPercentage | integer | 各クライアントグループの最大 CPU 使用率のクォータ。ネットワークと I/O スレッドの比率 (パーセント) として指定。 |
controllerMutationRate | number | トピックの作成リクエスト、パーティションの作成リクエスト、トピックの削除リクエストで変更が受け入れられるレートのクオータ。レートは、作成または削除されたパーティション数で累積されます。 |
第120章 KafkaUserTemplate
スキーマリファレンス
KafkaUserSpec
で使用
KafkaUserTemplate
スキーマプロパティーの全リスト
User Operator によって作成されるシークレットの追加ラベルおよびアノテーションを指定します。
KafkaUserTemplate
を示す例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaUser metadata: name: my-user labels: strimzi.io/cluster: my-cluster spec: authentication: type: tls template: secret: metadata: labels: label1: value1 annotations: anno1: value1 # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
name: my-user
labels:
strimzi.io/cluster: my-cluster
spec:
authentication:
type: tls
template:
secret:
metadata:
labels:
label1: value1
annotations:
anno1: value1
# ...
120.1. KafkaUserTemplate
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
secret |
KafkaUser リソースのテンプレート。テンプレートを使用すると、ユーザーはパスワードまたは TLS 証明書のある |
第121章 KafkaUserStatus
スキーマリファレンス
KafkaUser
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
username | string | ユーザー名。 |
secret | string |
認証情報が保存される |
第122章 KafkaMirrorMaker
スキーマリファレンス
KafkaMirrorMaker
タイプが非推奨になりました。代わりに KafkaMirrorMaker2
を使用してください。
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | Kafka MirrorMaker の仕様。 | |
status | Kafka MirrorMaker のステータス。 |
第123章 KafkaMirrorMakerSpec
スキーマリファレンス
KafkaMirrorMaker
で使用
KafkaMirrorMakerSpec
スキーマプロパティーの全リスト
Kafka MirrorMaker を設定します。
123.1. include
include
プロパティーを使用して、Kafka MirrorMaker がソースからターゲット Kafka クラスターにミラーリングするトピックのリストを設定します。
このプロパティーでは、簡単な単一のトピック名から複雑なパターンまですべての正規表現が許可されます。たとえば、A|B
を使用してトピック A と B をミラーリングでき、*
を使用してすべてのトピックをミラーリングできます。また、複数の正規表現をコンマで区切って Kafka MirrorMaker に渡すこともできます。
123.2. KafkaMirrorMakerConsumerSpec
および KafkaMirrorMakerProducerSpec
KafkaMirrorMakerConsumerSpec
と KafkaMirrorMakerProducerSpec
を使用して、ソース (コンシューマー) クラスターとターゲット (プロデューサー) クラスターを設定します。
Kafka MirrorMaker は常に 2 つの Kafka クラスター (ソースおよびターゲット) と連携します。接続を確立するため、ソースおよびターゲット Kafka クラスターのブートストラップサーバーは HOSTNAME:PORT
ペアのコンマ区切りリストとして指定されます。それぞれのコンマ区切りリストには、HOSTNAME:PORT
ペアとして指定された 1 つ以上の Kafka ブローカーまたは Kafka ブローカーを示す 1 つの Service
が含まれます。
123.3. logging
Kafka MirrorMaker には、独自の設定可能なロガーがあります。
-
mirrormaker.root.logger
MirrorMaker では Apache log4j
ロガー実装が使用されます。
logging
プロパティーを使用してロガーおよびロガーレベルを設定します。
ログレベルを設定するには、ロガーとレベルを直接指定 (インライン) するか、カスタム (外部) ConfigMap を使用します。ConfigMap を使用する場合、logging.valueFrom.configMapKeyRef.name
プロパティーを外部ロギング設定が含まれる ConfigMap の名前に設定します。ConfigMap 内では、ロギング設定は log4j.properties
を使用して記述されます。logging.valueFrom.configMapKeyRef.name
および logging.valueFrom.configMapKeyRef.key
プロパティーはいずれも必須です。Cluster Operator の実行時に、指定された正確なロギング設定を使用する ConfigMap がカスタムリソースを使用して作成され、その後は調整のたびに再作成されます。カスタム ConfigMap を指定しない場合、デフォルトのロギング設定が使用されます。特定のロガー値が設定されていない場合、上位レベルのロガー設定がそのロガーに継承されます。ログレベルの詳細は、Apache logging services を参照してください。
ここで、inline
および external
ロギングの例を示します。inline
ロギングでは、ルートロガーレベルを指定します。特定のクラスまたはロガーを loggers プロパティーに追加することで、それらのログレベルを設定することもできます。
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaMirrorMaker spec: # ... logging: type: inline loggers: mirrormaker.root.logger: INFO log4j.logger.org.apache.kafka.clients.NetworkClient: TRACE log4j.logger.org.apache.kafka.common.network.Selector: DEBUG # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
spec:
# ...
logging:
type: inline
loggers:
mirrormaker.root.logger: INFO
log4j.logger.org.apache.kafka.clients.NetworkClient: TRACE
log4j.logger.org.apache.kafka.common.network.Selector: DEBUG
# ...
ログレベルを DEBUG
に設定すると、大量のログが出力され、パフォーマンスに影響を及ぼす可能性があります。
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaMirrorMaker spec: # ... logging: type: external valueFrom: configMapKeyRef: name: customConfigMap key: mirror-maker-log4j.properties # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker
spec:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: mirror-maker-log4j.properties
# ...
ガベージコレクター (GC)
ガベッジコレクターのロギングは jvmOptions
プロパティーを使用して 有効 (または無効) にすることもできます。
123.4. KafkaMirrorMakerSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
version | string | Kafka MirrorMaker のバージョン。デフォルトは最新バージョンです。バージョンのアップグレードまたはダウングレードに必要なプロセスを理解するには、ドキュメントを参照してください。 |
replicas | integer |
|
image | string |
Kafka MirrorMaker Pod に使用されるコンテナーイメージ。イメージ名が明示的に指定されていない場合は、 |
consumer | ソースクラスターの設定。 | |
producer | ターゲットクラスターの設定。 | |
resources | 予約する CPU およびメモリーリソース。 | |
ホワイトリスト | string |
|
include | string |
ミラーリングに含まれるトピックのリスト。このオプションは、Java スタイルの正規表現を使用するあらゆる正規表現を許可します。式 |
jvmOptions | Pod の JVM オプション。 | |
logging | MirrorMaker のロギング設定。 | |
metricsConfig | メトリックの設定。 | |
tracing | Kafka MirrorMaker でのトレースの設定。 | |
template |
Kafka MirrorMaker のリソースである | |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 |
第124章 KafkaMirrorMakerConsumerSpec
スキーマリファレンス
KafkaMirrorMakerConsumerSpec
スキーマプロパティーの全リスト
MirrorMaker コンシューマーを設定します。
124.1. numStreams
consumer.numStreams
プロパティーを使用して、コンシューマーのストリームの数を設定します。
コンシューマースレッドの数を増やすと、ミラーリングトピックのスループットを増やすことができます。コンシューマースレッドは、Kafka MirrorMaker に指定されたコンシューマーグループに属します。トピックパーティションはコンシューマースレッド全体に割り当てられ、メッセージが並行して消費されます。
124.2. offsetCommitInterval
consumer.offsetCommitInterval
プロパティーを使用して、コンシューマーのオフセット自動コミット間隔を設定します。
Kafka MirrorMaker によってソース Kafka クラスターのデータが消費された後に、オフセットがコミットされる通常の間隔を指定できます。間隔はミリ秒単位で設定され、デフォルト値は 60,000 です。
124.3. config
consumer.config
プロパティーを使用して、コンシューマーの Kafka オプションをキーとして設定します。
値は以下の JSON タイプのいずれかになります。
- 文字列
- 数値
- ブール値
例外
コンシューマー向けの Apache Kafka 設定ドキュメント に記載されているオプションを指定および設定できます。
ただし、次の項目に関連するオプションの設定と管理は、Streams for Apache Kafka が行います。これらは変更できません。
- Kafka クラスターブートストラップアドレス
- セキュリティー (暗号化、認証、および認可)
- コンシューマーグループ ID
- インターセプター
次の接頭辞を持つプロパティーは設定できません。
-
bootstrap.servers
-
group.id
-
interceptor.classes
-
sasl.
-
security.
-
ssl.
config
プロパティーに変更できないオプションが含まれている場合、そのオプションは無視され、警告メッセージが Cluster Operator ログファイルに記録されます。サポートされているその他のすべてのオプションは、Streams for Apache Kafka によって設定されたオプションの次の例外を含め、MirrorMaker に転送されます。
-
サポートされている TLS バージョンと暗号スイート の任意の
ssl
設定
提供された config
オブジェクトのキーまたは値は Cluster Operator によって検証されません。無効な設定を指定すると、MirrorMaker クラスターが起動しなかったり、不安定になる可能性があります。この場合、Cluster Operator が新しい設定をすべての MirrorMaker ノードにロールアウトできるように設定を修正します。
124.4. groupId
consumer.groupId
プロパティーを使用して、コンシューマーにコンシューマーグループ ID を設定します。
Kafka MirrorMaker は Kafka コンシューマーを使用してメッセージを消費し、他の Kafka コンシューマークライアントと同様に動作します。ソース Kafka クラスターから消費されるメッセージは、ターゲット Kafka クラスターにミラーリングされます。パーティションの割り当てには、コンシューマーがコンシューマーグループの一部である必要があるため、グループ ID が必要です。
124.5. KafkaMirrorMakerConsumerSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
numStreams | integer | 作成するコンシューマーストリームスレッドの数を指定します。 |
offsetCommitInterval | integer | オフセットの自動コミット間隔をミリ秒単位で指定します。デフォルト値は 60000 です。 |
bootstrapServers | string | Kafka クラスターへの最初の接続を確立するための host:port ペアのリスト。 |
groupId | string | このコンシューマーが属するコンシューマーグループを識別する一意の文字列。 |
認証 |
| クラスターに接続するための認証設定。 |
tls | MirrorMaker をクラスターに接続するための TLS 設定。 | |
config | map | MirrorMaker コンシューマーの設定。次の接頭辞を持つプロパティーは設定できません: ssl.、bootstrap.servers、group.id、sasl.、security.、interceptor.classes (次の例外を除く: ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols). |
第125章 KafkaMirrorMakerProducerSpec
スキーマリファレンス
KafkaMirrorMakerProducerSpec
スキーマプロパティーの全リスト
MirrorMaker プロデューサーを設定します。
125.1. abortOnSendFailure
producer.abortOnSendFailure
プロパティーを使用して、プロデューサーからメッセージ送信の失敗を処理する方法を設定します。
デフォルトでは、メッセージを Kafka MirrorMaker から Kafka クラスターに送信する際にエラーが発生した場合、以下が行われます。
- Kafka MirrorMaker コンテナーが OpenShift で終了します。
- その後、コンテナーが再作成されます。
abortOnSendFailure
オプションを false
に設定した場合、メッセージ送信エラーは無視されます。
125.2. config
producer.config
プロパティーを使用して、プロデューサーの Kafka オプションをキーとして設定します。
値は以下の JSON タイプのいずれかになります。
- 文字列
- 数値
- ブール値
例外
プロデューサー向けの Apache Kafka 設定ドキュメント に記載されているオプションを指定および設定できます。
ただし、次の項目に関連するオプションの設定と管理は、Streams for Apache Kafka が行います。これらは変更できません。
- Kafka クラスターブートストラップアドレス
- セキュリティー (暗号化、認証、および認可)
- インターセプター
次の接頭辞を持つプロパティーは設定できません。
-
bootstrap.servers
-
interceptor.classes
-
sasl.
-
security.
-
ssl.
config
プロパティーに変更できないオプションが含まれている場合、そのオプションは無視され、警告メッセージが Cluster Operator ログファイルに記録されます。サポートされているその他のすべてのオプションは、Streams for Apache Kafka によって設定されたオプションの次の例外を含め、MirrorMaker に転送されます。
-
サポートされている TLS バージョンと暗号スイート の任意の
ssl
設定
提供された config
オブジェクトのキーまたは値は Cluster Operator によって検証されません。無効な設定を指定すると、MirrorMaker クラスターが起動しなかったり、不安定になる可能性があります。この場合、Cluster Operator が新しい設定をすべての MirrorMaker ノードにロールアウトできるように設定を修正します。
125.3. KafkaMirrorMakerProducerSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
bootstrapServers | string | Kafka クラスターへの最初の接続を確立するための host:port ペアのリスト。 |
abortOnSendFailure | boolean |
送信失敗時に MirrorMaker が終了するように設定するフラグ。デフォルト値は |
認証 |
| クラスターに接続するための認証設定。 |
config | map | MirrorMaker プロデューサーの設定。次の接頭辞を持つプロパティーは設定できません: ssl.、bootstrap.servers、sasl.、security.、interceptor.classes (次の例外を除く: ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols). |
tls | MirrorMaker をクラスターに接続するための TLS 設定。 |
第126章 KafkaMirrorMakerTemplate
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
deployment |
Kafka MirrorMaker | |
Pod |
Kafka MirrorMaker | |
podDisruptionBudget |
Kafka MirrorMaker | |
mirrorMakerContainer | Kafka MirrorMaker コンテナーのテンプレート。 | |
serviceAccount | Kafka MirrorMaker サービスアカウントのテンプレート。 |
第127章 KafkaMirrorMakerStatus
スキーマリファレンス
KafkaMirrorMaker
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
labelSelector | string | このリソースを提供する Pod のラベルセレクター。 |
replicas | integer | このリソースを提供するために現在使用されている Pod の数。 |
第128章 KafkaBridge
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | Kafka Bridge の仕様。 | |
status | Kafka Bridge のステータス。 |
第129章 KafkaBridgeSpec
スキーマリファレンス
KafkaBridge
で使用
KafkaBridgeSpec
スキーマプロパティーの全リスト
Kafka Bridge クラスターを設定します。
設定オプションは以下に関連しています。
- Kafka クラスターブートストラップアドレス
- セキュリティー (暗号化、認証、および認可)
- コンシューマー設定
- プロデューサーの設定
- HTTP の設定
129.1. Logging
Kafka Bridge には独自の設定可能なロガーがあります。
-
rootLogger.level
-
logger.<operation-id>
logger.<operation-id>
ロガーの <operation-id>
を置き換えると、特定の操作のログレベルを設定できます。
-
createConsumer
-
deleteConsumer
-
subscribe
-
unsubscribe
-
poll
-
assign
-
commit
-
send
-
sendToPartition
-
seekToBeginning
-
seekToEnd
-
seek
-
healthy
-
ready
-
openapi
各操作は OpenAPI 仕様にしたがって定義されます。各操作にはブリッジが HTTP クライアントから要求を受信する対象の API エンドポイントがあります。各エンドポイントのログレベルを変更すると、送信および受信 HTTP リクエストに関する詳細なログ情報を作成できます。
各ロガーはその 名前
を http.openapi.operation.<operation-id>
として割り当てる必要があります。たとえば、send
操作ロガーのロギングレベルを設定すると、以下が定義されます。
logger.send.name = http.openapi.operation.send logger.send.level = DEBUG
logger.send.name = http.openapi.operation.send
logger.send.level = DEBUG
Kafka Bridge では Apache log4j2
ロガー実装が使用されます。ロガーは log4j2.properties
ファイルで定義されます。このファイルには healthy
および ready
エンドポイントの以下のデフォルト設定が含まれています。
logger.healthy.name = http.openapi.operation.healthy logger.healthy.level = WARN logger.ready.name = http.openapi.operation.ready logger.ready.level = WARN
logger.healthy.name = http.openapi.operation.healthy
logger.healthy.level = WARN
logger.ready.name = http.openapi.operation.ready
logger.ready.level = WARN
その他すべての操作のログレベルは、デフォルトで INFO
に設定されます。
logging
プロパティーを使用してロガーおよびロガーレベルを設定します。
ログレベルを設定するには、ロガーとレベルを直接指定 (インライン) するか、カスタム (外部) ConfigMap を使用します。ConfigMap を使用する場合、logging.valueFrom.configMapKeyRef.name
プロパティーを外部ロギング設定が含まれる ConfigMap の名前に設定します。logging.valueFrom.configMapKeyRef.name
および logging.valueFrom.configMapKeyRef.key
プロパティーはいずれも必須です。name
や key
が設定されていない場合は、デフォルトのロギングが使用されます。ConfigMap 内では、ロギング設定は log4j.properties
を使用して記述されます。ログレベルの詳細は、Apache logging services を参照してください。
ここで、inline
および external
ロギングの例を示します。
inline ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaBridge spec: # ... logging: type: inline loggers: rootLogger.level: INFO # enabling DEBUG just for send operation logger.send.name: "http.openapi.operation.send" logger.send.level: DEBUG # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
spec:
# ...
logging:
type: inline
loggers:
rootLogger.level: INFO
# enabling DEBUG just for send operation
logger.send.name: "http.openapi.operation.send"
logger.send.level: DEBUG
# ...
外部ロギング
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaBridge spec: # ... logging: type: external valueFrom: configMapKeyRef: name: customConfigMap key: bridge-logj42.properties # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
spec:
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: customConfigMap
key: bridge-logj42.properties
# ...
設定されていない利用可能なロガーのレベルは OFF
に設定されています。
Cluster Operator を使用して Kafka Bridge がデプロイされた場合、Kafka Bridge のロギングレベルの変更は動的に適用されます。
外部ロギングを使用する場合は、ロギングアペンダーが変更されるとローリング更新がトリガーされます。
ガベージコレクター (GC)
ガベッジコレクターのロギングは jvmOptions
プロパティーを使用して 有効 (または無効) にすることもできます。
129.2. KafkaBridgeSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
replicas | integer |
|
image | string | Kafka Bridge Pod に使用されるコンテナーイメージ。イメージ名が明示的に指定されていないと、イメージ名は Cluster Operator 設定で指定されたイメージに対応します。Cluster Operator 設定でイメージ名が定義されていない場合は、デフォルト値が使用されます。 |
bootstrapServers | string | Kafka クラスターへの最初の接続を確立するための host:port ペアのリスト。 |
tls | Kafka Bridge をクラスターに接続するための TLS 設定。 | |
認証 |
| クラスターに接続するための認証設定。 |
http | HTTP 関連の設定。 | |
adminClient | Kafka AdminClient 関連の設定。 | |
consumer | Kafka コンシューマーに関連する設定。 | |
producer | Kafka プロデューサーに関連する設定。 | |
resources | 予約する CPU およびメモリーリソース。 | |
jvmOptions | 現時点でサポートされていない Pod の JVM オプション。 | |
logging | Kafka Bridge のロギング設定。 | |
clientRackInitImage | string |
|
rack | client.rack コンシューマー設定として使用されるノードラベルの設定。 | |
enableMetrics | boolean | Kafka Bridge のメトリックを有効にします。デフォルトは false です。 |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
template |
Kafka Bridge リソースのテンプレート。テンプレートを使用すると、ユーザーは | |
tracing | Kafka Bridge でのトレースの設定。 |
第130章 KafkaBridgeHttpConfig
スキーマリファレンス
KafkaBridgeSpec
で使用
KafkaBridgeHttpConfig
スキーマプロパティーの全リスト
Kafka Bridge の Kafka クラスターへの HTTP アクセスを設定します。デフォルトの HTTP 設定では、8080 番ポートで Kafka Bridge をリッスンします。
Kafka Bridge HTTP の設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaBridge metadata: name: my-bridge spec: # ... http: port: 8080 cors: allowedOrigins: "https://strimzi.io" allowedMethods: "GET,POST,PUT,DELETE,OPTIONS,PATCH" # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
metadata:
name: my-bridge
spec:
# ...
http:
port: 8080
cors:
allowedOrigins: "https://strimzi.io"
allowedMethods: "GET,POST,PUT,DELETE,OPTIONS,PATCH"
# ...
HTTP プロパティーは、Kafka クラスターへの HTTP アクセスを有効にする他に、CORS (Cross-Origin Resource Sharing) により Kafka Bridge のアクセス制御を有効化または定義する機能を提供します。CORS は、複数のオリジンから指定のリソースにブラウザーでアクセスできるようにする HTTP メカニズムです。CORS を設定するには、許可されるリソースオリジンのリストと、HTTP のアクセス方法を定義します。オリジンには、URL または Java 正規表現を使用できます。
130.1. KafkaBridgeHttpConfig
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
port | integer | サーバーがリッスンするポート。 |
cors | HTTP Bridge の CORS 設定。 |
第131章 KafkaBridgeHttpCors
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
allowedOrigins | string 配列 | 許可されるオリジンのリスト。Java の正規表現を使用できます。 |
allowedMethods | string 配列 | 許可される HTTP メソッドのリスト。 |
第132章 KafkaBridgeAdminClientSpec
スキーマプロパティー
KafkaBridgeSpec
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
config | map | ブリッジによって作成された AdminClient インスタンスに使用される Kafka AdminClient 設定。 |
第133章 KafkaBridgeConsumerSpec
スキーマリファレンス
KafkaBridgeSpec
で使用
KafkaBridgeConsumerSpec
スキーマプロパティーの全リスト
Kafka Bridge のコンシューマーオプションを設定します。
Kafka Bridge コンシューマーの設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaBridge metadata: name: my-bridge spec: # ... consumer: enabled: true timeoutSeconds: 60 config: auto.offset.reset: earliest enable.auto.commit: true # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
metadata:
name: my-bridge
spec:
# ...
consumer:
enabled: true
timeoutSeconds: 60
config:
auto.offset.reset: earliest
enable.auto.commit: true
# ...
consumer.config
プロパティーを使用して、コンシューマーの Kafka オプションをキーとして設定します。
値は以下の JSON タイプのいずれかになります。
- 文字列
- 数値
- ブール値
例外
コンシューマー向けの Apache Kafka 設定ドキュメント に記載されているオプションを指定および設定できます。
ただし、次の項目に関連するオプションの設定と管理は、Streams for Apache Kafka が行います。これらは変更できません。
- Kafka クラスターブートストラップアドレス
- セキュリティー (暗号化、認証、および認可)
- コンシューマーグループ ID
次の接頭辞を持つプロパティーは設定できません。
-
bootstrap.servers
-
group.id
-
sasl.
-
security.
-
ssl.
config
プロパティーに変更できないオプションが含まれている場合、そのオプションは無視され、警告メッセージが Cluster Operator ログファイルに記録されます。サポートされているその他のすべてのオプションは、Streams for Apache Kafka によって設定されたオプションの次の例外を含め、Kafka Bridge に転送されます。
-
サポートされている TLS バージョンと暗号スイート の任意の
ssl
設定
config
オブジェクトのキーまたは値は Cluster Operator によって検証されません。無効な設定を指定すると、Kafka Bridge デプロイメントが起動しなかったり、不安定になる可能性があります。この場合、Cluster Operator が新しい設定をすべての Kafka Bridge ノードにロールアウトできるように設定を修正します。
133.1. KafkaBridgeConsumerSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
enabled | boolean |
HTTP コンシューマーを有効にするか無効にするかを指定します。デフォルトでは有効 ( |
timeoutSeconds | integer | 非アクティブなコンシューマーを削除するためのタイムアウト (秒単位)。デフォルトは -1(無効) です。 |
config | map | ブリッジによって作成されたコンシューマーインスタンスに使用される Kafka コンシューマーの設定。次の接頭辞を持つプロパティーは設定できません: ssl.、bootstrap.servers、group.id、sasl.、security. (次の例外を除く: ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols). |
第134章 KafkaBridgeProducerSpec
スキーマリファレンス
KafkaBridgeSpec
で使用
KafkaBridgeProducerSpec
スキーマプロパティーの全リスト
Kafka Bridge のプロデューサーオプションを設定します。
Kafka Bridge プロデューサーの設定例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaBridge metadata: name: my-bridge spec: # ... producer: enabled: true config: acks: 1 delivery.timeout.ms: 300000 # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
metadata:
name: my-bridge
spec:
# ...
producer:
enabled: true
config:
acks: 1
delivery.timeout.ms: 300000
# ...
producer.config
プロパティーを使用して、プロデューサーの Kafka オプションをキーとして設定します。
値は以下の JSON タイプのいずれかになります。
- 文字列
- 数値
- ブール値
例外
プロデューサー向けの Apache Kafka 設定ドキュメント に記載されているオプションを指定および設定できます。
ただし、次の項目に関連するオプションの設定と管理は、Streams for Apache Kafka が行います。これらは変更できません。
- Kafka クラスターブートストラップアドレス
- セキュリティー (暗号化、認証、および認可)
- コンシューマーグループ ID
次の接頭辞を持つプロパティーは設定できません。
-
bootstrap.servers
-
sasl.
-
security.
-
ssl.
config
プロパティーに変更できないオプションが含まれている場合、そのオプションは無視され、警告メッセージが Cluster Operator ログファイルに記録されます。サポートされているその他のすべてのオプションは、Streams for Apache Kafka によって設定されたオプションの次の例外を含め、Kafka Bridge に転送されます。
-
サポートされている TLS バージョンと暗号スイート の任意の
ssl
設定
Cluster Operator は、config
プロパティーのキーまたは値を検証しません。無効な設定を指定すると、Kafka Bridge デプロイメントが起動しなかったり、不安定になる可能性があります。この場合、Cluster Operator が新しい設定をすべての Kafka Bridge ノードにロールアウトできるように設定を修正します。
134.1. KafkaBridgeProducerSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
enabled | boolean |
HTTP プロデューサーを有効にするか無効にするかを指定します。デフォルトでは有効 ( |
config | map | ブリッジによって作成されたプロデューサーインスタンスに使用される Kafka プロデューサーの設定。次の接頭辞を持つプロパティーは設定できません: ssl.、bootstrap.servers、sasl.、security. (次の例外を除く: ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols). |
第135章 KafkaBridgeTemplate
スキーマリファレンス
KafkaBridgeSpec
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
deployment |
Kafka Bridge | |
Pod |
Kafka Bridge | |
apiService |
Kafka Bridge API | |
podDisruptionBudget |
Kafka Bridge | |
bridgeContainer | Kafka Bridge コンテナーのテンプレート。 | |
clusterRoleBinding | Kafka Bridge ClusterRoleBinding のテンプレート。 | |
serviceAccount | Kafka Bridge サービスアカウントのテンプレート。 | |
initContainer | Kafka Bridge init コンテナーのテンプレート。 |
第136章 KafkaBridgeStatus
スキーマリファレンス
KafkaBridge
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
url | string | 外部クライアントアプリケーションが Kafka Bridge にアクセスできる URL。 |
replicas | integer | このリソースを提供するために現在使用されている Pod の数。 |
labelSelector | string | このリソースを提供する Pod のラベルセレクター。 |
第137章 KafkaConnector
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | Kafka Connector の仕様。 | |
status | Kafka Connector のステータス。 |
第138章 KafkaConnectorSpec
スキーマリファレンス
KafkaConnector
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
class | string | Kafka Connector のクラス。 |
tasksMax | integer | Kafka Connector のタスクの最大数。 |
autoRestart | コネクターとタスク設定の自動再起動。 | |
config | map | Kafka Connector の設定。プロパティー name、connector.class、tasks.max は設定できません。 |
pause | boolean |
|
state | string ([running、paused、stopped] のいずれか) | コネクターのあるべき状態。デフォルトは running です。 |
第139章 AutoRestart
スキーマリファレンス
使用先: KafkaConnectorSpec
、KafkaMirrorMaker2ConnectorSpec
FAILED
状態のコネクターとタスクの自動再起動を設定します。
有効にすると、バックオフアルゴリズムによって、失敗した各コネクターとそのタスクに自動再起動が適用されます。増分バックオフ間隔は、n * n + n
という式を使用して計算されます。n
は以前の再起動の数を表します。この間隔は、最大 60 分に制限されます。したがって、再起動はすぐに行われ、その後 2、6、12、20、30、42、56 分後に再起動され、その後は 60 分間隔で再起動されます。デフォルトでは、Streams for Apache Kafka はコネクターとそのタスクの再起動を無限に開始します。ただし、maxRestarts
プロパティーを使用して、再起動の最大数を設定できます。maxRestarts
が設定されており、最後の再起動試行後もコネクターがまだ失敗する場合は、コネクターを手動で再起動する必要があります。
Kafka Connect コネクターの場合、KafkaConnector
リソースの autoRestart
プロパティーを使用して、失敗したコネクターとタスクの自動再起動を有効にします。
Kafka Connect の失敗したコネクターの自動再起動の有効化
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnector metadata: name: my-source-connector spec: autoRestart: enabled: true
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
name: my-source-connector
spec:
autoRestart:
enabled: true
必要に応じて、再起動の回数に最大の上限を設定することもできます。
Kafka Connect の障害が発生したコネクターの自動再起動を、再起動回数に上限を指定して有効にする
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnector metadata: name: my-source-connector spec: autoRestart: enabled: true maxRestarts: 10
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
name: my-source-connector
spec:
autoRestart:
enabled: true
maxRestarts: 10
MirrorMaker 2 の場合、KafkaMirrorMaker2
リソースのコネクターの autoRestart
プロパティーを使用して、失敗したコネクターとタスクの自動再起動を有効にします。
MirrorMaker 2 の障害が発生したコネクターの自動再起動を有効にする
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaMirrorMaker2 metadata: name: my-mm2-cluster spec: mirrors: - sourceConnector: autoRestart: enabled: true # ... heartbeatConnector: autoRestart: enabled: true # ... checkpointConnector: autoRestart: enabled: true # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
metadata:
name: my-mm2-cluster
spec:
mirrors:
- sourceConnector:
autoRestart:
enabled: true
# ...
heartbeatConnector:
autoRestart:
enabled: true
# ...
checkpointConnector:
autoRestart:
enabled: true
# ...
139.1. AutoRestart
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
enabled | boolean | 失敗したコネクターとタスクの自動再起動を有効にするか無効にするか。 |
maxRestarts | integer | Operator が試行するコネクターの再起動の最大数。この制限に達した後もコネクターが障害状態のままである場合は、ユーザーが手動で再起動する必要があります。デフォルトは、再起動の無制限数です。 |
第140章 KafkaConnectorStatus
スキーマリファレンス
KafkaConnector
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
autoRestart | 自動再起動のステータス。 | |
connectorStatus | map | Kafka Connect REST API によって報告されるコネクターのステータス。 |
tasksMax | integer | Kafka Connector のタスクの最大数。 |
topics | string 配列 | Kafka Connector によって使用されるトピックのリスト。 |
第141章 AutoRestartStatus
スキーマリファレンス
使用先: KafkaConnectorStatus
、KafkaMirrorMaker2Status
プロパティー | プロパティータイプ | 説明 |
---|---|---|
count | integer | コネクターまたはタスクが再起動された回数。 |
connectorName | string | 再始動されるコネクターの名前。 |
lastRestartTimestamp | string | 自動再起動が最後に試行された時刻。必須形式は、UTC タイムゾーンの 'yyyy-MM-ddTHH:mm:ssZ' です。 |
第142章 KafkaMirrorMaker2
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | Kafka MirrorMaker 2 クラスターの仕様。 | |
status | Kafka MirrorMaker 2 クラスターのステータス。 |
第143章 KafkaMirrorMaker2Spec
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
version | string | Kafka Connect のバージョン。デフォルトは最新バージョンです。バージョンのアップグレードまたはダウングレードに必要なプロセスを理解するには、ユーザードキュメントを参照してください。 |
replicas | integer |
Kafka Connect グループの Pod 数。デフォルトは |
image | string |
Kafka Connect Pod に使用されるコンテナーイメージ。イメージ名が明示的に指定されていない場合は、 |
connectCluster | string |
Kafka Connect に使用されるクラスターエイリアス。値は、 |
clusters | ミラーリング用の Kafka クラスター。 | |
mirrors | MirrorMaker 2 コネクターの設定。 | |
resources | CPU とメモリーリソースおよび要求された初期リソースの上限。 | |
livenessProbe | Pod の liveness チェック。 | |
readinessProbe | Pod の readiness チェック。 | |
jvmOptions | Pod の JVM オプション。 | |
jmxOptions | JMX オプション。 | |
logging | Kafka Connect のロギング設定。 | |
clientRackInitImage | string |
|
rack |
| |
metricsConfig | メトリックの設定。 | |
tracing | Kafka Connect でのトレースの設定。 | |
template |
Kafka Connect および Kafka MirrorMaker 2 リソースのテンプレート。このテンプレートを使用すると、ユーザーは | |
externalConfiguration | Secret または ConfigMap から Kafka Connect Pod にデータを渡し、これを使用してコネクターを設定します。 |
第144章 KafkaMirrorMaker2ClusterSpec
スキーマリファレンス
KafkaMirrorMaker2ClusterSpec
スキーマプロパティーの全リスト
ミラーリング用の Kafka クラスターを設定します。
config
プロパティーを使用して Kafka オプションを設定します。設定できるのは、Streams for Apache Kafka によって直接管理されないプロパティーに限られます。
TLS バージョンの特定の 暗号スイート を使用するクライアント接続に、許可された ssl
プロパティーを設定 することができます。また、ssl.endpoint.identification.algorithm
プロパティーを設定して、ホスト名の検証を有効または無効にすることもできます。
144.1. KafkaMirrorMaker2ClusterSpec
スキーマプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
alias | string | Kafka クラスターの参照に使用されるエイリアス。 |
bootstrapServers | string |
Kafka クラスターへの接続を確立するための |
tls | MirrorMaker 2 コネクターをクラスターに接続するための TLS 設定。 | |
認証 |
| クラスターに接続するための認証設定。 |
config | map | MirrorMaker 2 クラスター設定。次の接頭辞を持つプロパティーは設定できません: ssl.、sasl.、security.、listeners、plugin.path、rest.、bootstrap.servers、consumer.interceptor.classes、producer.interceptor.classes (ssl.endpoint.identification.algorithm、ssl.cipher.suites、ssl.protocol、ssl.enabled.protocols を除く) |
第145章 KafkaMirrorMaker2MirrorSpec
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
sourceCluster | string |
Kafka MirrorMaker 2 コネクターによって使用されるソースクラスターのエイリアス。エイリアスは |
targetCluster | string |
Kafka MirrorMaker 2 コネクターによって使用されるターゲットクラスターのエイリアス。エイリアスは |
sourceConnector | Kafka MirrorMaker 2 ソースコネクターの仕様。 | |
heartbeatConnector | Kafka MirrorMaker 2 ハートビートコネクターの仕様。 | |
checkpointConnector | Kafka MirrorMaker 2 チェックポイントコネクターの仕様。 | |
topicsPattern | string | ミラーリングするトピックに一致する正規表現 (例: "topic1|topic2|topic3")。コンマ区切りリストもサポートされます。 |
topicsBlacklistPattern | string |
|
topicsExcludePattern | string | ミラーリングから除外するトピックに一致する正規表現。コンマ区切りリストもサポートされます。 |
groupsPattern | string | ミラーリングされるコンシューマーグループに一致する正規表現。コンマ区切りリストもサポートされます。 |
groupsBlacklistPattern | string |
|
groupsExcludePattern | string | ミラーリングから除外するコンシューマーグループに一致する正規表現。コンマ区切りリストもサポートされます。 |
第146章 KafkaMirrorMaker2ConnectorSpec
スキーマリファレンス
KafkaMirrorMaker2MirrorSpec
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
tasksMax | integer | Kafka Connector のタスクの最大数。 |
pause | boolean |
|
config | map | Kafka Connector の設定。プロパティー name、connector.class、tasks.max は設定できません。 |
state | string ([running、paused、stopped] のいずれか) | コネクターのあるべき状態。デフォルトは running です。 |
autoRestart | コネクターとタスク設定の自動再起動。 |
第147章 KafkaMirrorMaker2Status
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
url | string | Kafka Connect コネクターの管理および監視用の REST API エンドポイントの URL。 |
connectors | map 配列 | Kafka Connect REST API によって報告される、MirrorMaker 2 コネクターのステータスのリスト。 |
autoRestartStatuses | MirrorMaker 2 コネクターの自動再起動ステータスのリスト。 | |
connectorPlugins | この Kafka Connect デプロイメントで使用できるコネクタープラグインのリスト。 | |
labelSelector | string | このリソースを提供する Pod のラベルセレクター。 |
replicas | integer | このリソースを提供するために現在使用されている Pod の数。 |
第148章 KafkaRebalance
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | Kafka のリバランス (再分散) の仕様。 | |
status | Kafka のリバランス (再分散) のステータス。 |
第149章 KafkaRebalanceSpec
スキーマリファレンス
KafkaRebalance
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
mode | string ([remove-brokers、full、add-brokers] のいずれか) |
リバランスを実行するモード。サポートされているモードは
|
brokers | 整数配列 |
スケールアップの場合に新しく追加されたブローカーのリスト、またはリバランスに使用するためにスケールダウンの場合に削除されるブローカーのリスト。このリストは、リバランスモードの |
goals | string 配列 | リバランスプロポーザルの生成および実行に使用されるゴールのリスト (優先度順)。サポートされるゴールは https://github.com/linkedin/cruise-control#goals を参照してください。空のゴールリストを指定すると、default.goals Cruise Control 設定パラメーターに宣言されたゴールが使用されます。 |
skipHardGoalCheck | boolean | 最適化プロポーザルの生成で、Kafka CR に指定されたハードゴールのスキップを許可するかどうか。これは、これらのハードゴールの一部が原因で分散ソリューションが検索できない場合に便利です。デフォルトは false です。 |
rebalanceDisk | boolean | ブローカー内のディスク分散を有効にし、同じブローカーのディスク間でディスク領域の使用率を分散します。ディスクが複数割り当てられた JBOD ストレージを使用する Kafka デプロイメントにのみ適用されます。有効にすると、ブローカー間の分散は無効になります。デフォルトは false です。 |
excludedTopics | string | 一致するトピックが最適化プロポーザルの計算から除外される正規表現。この正規表現は java.util.regex.Pattern クラスによって解析されます。サポートされる形式の詳細は、このクラスのドキュメントを参照してください。 |
concurrentPartitionMovementsPerBroker | integer | 各ブローカーに出入りする継続中であるパーティションレプリカの移動の上限。デフォルトは 5 です。 |
concurrentIntraBrokerPartitionMovements | integer | 各ブローカー内のディスク間で継続中のパーティションレプリカ移動の上限。デフォルトは 2 です。 |
concurrentLeaderMovements | integer | 継続中のパーティションリーダーシップ移動の上限。デフォルトは 1000 です。 |
replicationThrottle | integer | レプリカの移動に使用される帯域幅の上限 (バイト/秒単位)。デフォルトでは制限はありません。 |
replicaMovementStrategies | string 配列 | 生成された最適化プロポーザルでのレプリカ移動の実行順序を決定するために使用されるストラテジークラス名のリスト。デフォルトでは、生成された順序でレプリカの移動が実行される BaseReplicaMovementStrategy が使用されます。 |
第150章 KafkaRebalanceStatus
スキーマリファレンス
KafkaRebalance
で使用
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
sessionId | string | この KafkaRebalance リソースに関する Cruise Control へのリクエストのセッション識別子。これは、継続中のリバランス操作の状態を追跡するために、Kafka Rebalance operator によって使用されます。 |
optimizationResult | map | 最適化の結果を示す JSON オブジェクト。 |
第151章 KafkaNodePool
スキーマリファレンス
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | KafkaNodePool の仕様。 | |
status | KafkaNodePool のステータス。 |
第152章 KafkaNodePoolSpec
スキーマリファレンス
使用場所: KafkaNodePool
プロパティー | プロパティータイプ | 説明 |
---|---|---|
replicas | integer | プール内の Pod の数。 |
storage | ストレージの設定 (ディスク)。これを更新することはできません。 | |
roles | string ([controller, broker] のうち 1 つ以上) 配列 |
KRaft モードが有効な場合に、このプール内のノードが持つロール。サポートされている値は 'broker' と 'controller' です。このフィールドは必須です。KRaft モードが無効な場合に使用できる値は |
resources | 予約する CPU およびメモリーリソース。 | |
jvmOptions | Pod の JVM オプション。 | |
template | プールリソースのテンプレート。このテンプレートを使用すると、ユーザーはこのプールに属するリソースの生成方法を指定できます。 |
第153章 KafkaNodePoolTemplate
スキーマリファレンス
使用場所: KafkaNodePoolSpec
プロパティー | プロパティータイプ | 説明 |
---|---|---|
podSet |
Kafka | |
Pod |
Kafka | |
perPodService |
OpenShift の外部からアクセスするために使用される Pod ごとの Kafka | |
perPodRoute |
OpenShift の外部からアクセスするために使用される Kafka の Pod ごとの | |
perPodIngress |
OpenShift の外部からアクセスするために使用される Kafka の Pod ごとの | |
persistentVolumeClaim |
すべての Kafka | |
kafkaContainer | Kafka ブローカーコンテナーのテンプレート。 | |
initContainer | Kafka init コンテナーのテンプレート。 |
第154章 KafkaNodePoolStatus
スキーマリファレンス
使用場所: KafkaNodePool
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
nodeIds | 整数配列 | このプール内の Kafka ノードによって使用されるノード ID。 |
clusterId | string | Kafka クラスター ID。 |
roles | string ([controller, broker] のうち 1 つ以上) 配列 | Streams for Apache Kafka 2.7 で追加されました。このプールに現在割り当てられているロール。 |
replicas | integer | このリソースを提供するために現在使用されている Pod の数。 |
labelSelector | string | このリソースを提供する Pod のラベルセレクター。 |
第155章 StrimziPodSet
スキーマリファレンス
StrimziPodSet
スキーマプロパティーの完全なリスト
StrimziPodSet
は、Streams for Apache Kafka の内部リソースです。情報は参照用途としてのみ提供されています。エラーが発生する可能性があるため、StrimziPodSet
リソースを作成、変更、または削除しないでください。
155.1. StrimziPodSet
スキーマのプロパティー
プロパティー | プロパティータイプ | 説明 |
---|---|---|
spec | StrimziPodSet の仕様。 | |
status | StrimziPodSet のステータス。 |
第156章 StrimziPodSetSpec
スキーマリファレンス
使用場所: StrimziPodSet
プロパティー | プロパティータイプ | 説明 |
---|---|---|
selector |
Selector は、この | |
pods | Map 配列 | この StrimziPodSet で管理される Pod。 |
第157章 StrimziPodSetStatus
スキーマリファレンス
使用場所: StrimziPodSet
プロパティー | プロパティータイプ | 説明 |
---|---|---|
conditions |
| ステータス条件のリスト。 |
observedGeneration | integer | 最後に Operator によって調整された CRD の生成。 |
pods | integer |
この |
readyPods | integer |
この |
currentPods | integer |
現在のリビジョンを持つ |
付録A サブスクリプションの使用
Streams for Apache Kafka は、ソフトウェアサブスクリプションを通じて提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。
アカウントへのアクセス
- access.redhat.com に移動します。
- アカウントがない場合は作成します。
- アカウントにログインします。
サブスクリプションのアクティベート
- access.redhat.com に移動します。
- My Subscriptions に移動します。
- Activate a subscription に移動し、16 桁のアクティベーション番号を入力します。
Zip および Tar ファイルのダウンロード
zip または tar ファイルにアクセスするには、カスタマーポータルを使用して、ダウンロードする関連ファイルを検索します。RPM パッケージを使用している場合、この手順は必要ありません。
- ブラウザーを開き、access.redhat.com/downloads で Red Hat カスタマーポータルの Product Downloads ページにログインします。
- INTEGRATION AND AUTOMATION カテゴリーで、Streams for Apache Kafka エントリーを見つけます。
- 必要な Streams for Apache Kafka 製品を選択します。Software Downloads ページが開きます。
- コンポーネントの Download リンクをクリックします。
DNF を使用したパッケージのインストール
パッケージとすべてのパッケージ依存関係をインストールするには、以下を使用します。
dnf install <package_name>
dnf install <package_name>
ローカルディレクトリーからダウンロード済みのパッケージをインストールするには、以下を使用します。
dnf install <path_to_download_package>
dnf install <path_to_download_package>
改訂日時: 2024-11-13