第20章 AMQ Streams の管理
AMQ Streams を管理するには、Kafka クラスターと関連リソースのスムーズな実行を維持するためにさまざまなタスクを実行する必要があります。oc
コマンドを使用してリソースのステータスを確認し、ローリング 更新のメンテナンス期間を設定し、AMQ Streams Drain Cleaner や Kafka Static Quota プラグインなどのツールを活用してデプロイメントを効果的に管理します。
20.1. カスタムリソースの使用
oc
コマンドを使用して、AMQ Streams カスタムリソースで情報を取得し、他の操作を実行できます。
カスタムリソースの status
サブリソースで oc
を使用すると、リソースに関する情報を取得できます。
20.1.1. カスタムリソースでの oc
操作の実施
リソースタイプに対して操作を行うには、get
、describe
、edit
、delete
などの oc
コマンドを使用します。たとえば、oc get kafkatopics
はすべての Kafka トピックのリストを取得し、oc get kafkas
はデプロイされたすべての Kafka クラスターを取得します。
リソースタイプを参照する際には、単数形と複数形の両方の名前を使うことができます。oc get kafkas
は oc get kafka
と同じ結果になります。
リソースの 短縮名 を使用することもできます。短縮名を理解すると、AMQ Streams を管理する時間を節約できます。Kafka
のショートネームは k
なので、oc get k
を実行してすべての Kafka クラスターをリストアップすることもできます。
oc get k NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS my-cluster 3 3
AMQ Streams リソース | 正式名 | 短縮名 |
---|---|---|
Kafka | kafka | k |
Kafka Topic | kafkatopic | kt |
Kafka User | kafkauser | ku |
Kafka Connect | kafkaconnect | kc |
Kafka Connector | kafkaconnector | kctr |
Kafka Mirror Maker | kafkamirrormaker | kmm |
Kafka Mirror Maker 2 | kafkamirrormaker2 | kmm2 |
Kafka Bridge | kafkabridge | kb |
Kafka Rebalance | kafkarebalance | kr |
20.1.1.1. リソースカテゴリー
カスタムリソースのカテゴリーは、oc
コマンドでも使用できます。
すべての AMQ Streams カスタムリソースはカテゴリー strimzi
に属するため、strimzi
を使用してすべての AMQ Streams リソースを 1 つのコマンドで取得できます。
例えば、oc get strimzi
を実行すると、指定された名前空間のすべての AMQ Streams カスタムリソースが一覧表示されます。
oc get strimzi NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS kafka.kafka.strimzi.io/my-cluster 3 3 NAME PARTITIONS REPLICATION FACTOR kafkatopic.kafka.strimzi.io/kafka-apps 3 3 NAME AUTHENTICATION AUTHORIZATION kafkauser.kafka.strimzi.io/my-user tls simple
oc get strimzi -o name
コマンドは、すべてのリソースタイプとリソース名を返します。-o name
オプションは type/name 形式で出力を取得します。
oc get strimzi -o name kafka.kafka.strimzi.io/my-cluster kafkatopic.kafka.strimzi.io/kafka-apps kafkauser.kafka.strimzi.io/my-user
この strimzi
コマンドを他のコマンドと組み合わせることができます。たとえば、これを oc delete
コマンドに渡して、単一のコマンドですべてのリソースを削除できます。
oc delete $(oc get strimzi -o name) kafka.kafka.strimzi.io "my-cluster" deleted kafkatopic.kafka.strimzi.io "kafka-apps" deleted kafkauser.kafka.strimzi.io "my-user" deleted
1 つの操作ですべてのリソースを削除することは、AMQ Streams の新機能をテストする場合などに役立ちます。
20.1.1.2. サブリソースのステータスのクエリー
-o
オプションに渡すことのできる他の値もあります。たとえば、-o yaml
を使用すると、YAML 形式で出力されます。-o json
を使用すると JSON として返されます。
oc get --help
のすべてのオプションが表示されます。
最も便利なオプションの 1 つは JSONPath サポート で、JSONPath 式を渡して Kubernetes API にクエリーを実行できます。JSONPath 式は、リソースの特定部分を抽出または操作できます。
たとえば、JSONPath 式 {.status.listeners[?(@.name=="tls")].bootstrapServers}
を使用して、Kafka カスタムリソースのステータスからブートストラップアドレスを取得し、Kafka クライアントで使用できます。
この場合、コマンドは tls
という名前のリスナーの bootstrapServers
値を検索します。
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="tls")].bootstrapServers}{"\n"}' my-cluster-kafka-bootstrap.myproject.svc:9093
名前の条件を変更することで、他の Kafka リスナーのアドレスも取得できます。
jsonpath
を使用して、カスタムリソースから他のプロパティーまたはプロパティーのグループを抽出できます。
20.1.2. AMQ Streams カスタムリソースのステータス情報
ステータスプロパティーは、特定のカスタムリソースのステータス情報を提供します。
次の表に、ステータス情報 (デプロイ時) を提供するカスタムリソースと、ステータスプロパティーを定義するスキーマを示します。
スキーマの詳細については、カスタムリソース API リファレンス を参照してください。
AMQ Streams リソース | スキーマ参照 | ステータス情報がパブリッシュされる場所 |
---|---|---|
|
| Kafka クラスター |
|
| Kafka クラスター内の Kafka トピック |
|
| Kafka クラスター内の Kafka ユーザー |
|
| Kafka Connect クラスター |
|
|
|
|
| Kafka MirrorMaker 2 クラスター |
|
| Kafka MirrorMaker クラスター |
|
| AMQ Streams Kafka Bridge |
|
| リバランスの状況と結果 |
リソースの status
プロパティーは、リソースの状態に関する情報を提供します。status.conditions
および status.observedGeneration
プロパティーは、すべてのリソースに共通です。
status.conditions
-
ステータス条件は、リソースの 現在の状態 を表します。ステータス条件プロパティーは、
仕様
で指定された設定で定義されているように、リソースが 目的の状態 に到達することに関連する進行状況を追跡するのに役立ちます。状況条件プロパティーは、リソースの状態が変更された時間と理由、およびオペレーターが目的の状態を実現するのを妨げたり遅らせたりするイベントの詳細を提供します。 status.observedGeneration
-
最後に観察された世代は、Cluster Operator によるリソースの最新の調整を示します。
observedGeneration
の値がmetadata.generation
(デプロイメントの現在のバージョン)(の値と異なる場合、リソースの最新の更新が Operator によって処理されていません。これらの値が同じである場合、リソースの最新の変更がステータス情報に反映されます。
status
プロパティーは、リソース固有の情報も提供します。たとえば、KafkaStatus
はリスナーアドレスに関する情報と Kafka クラスターの ID を提供します。
AMQ Streams によってカスタムリソースのステータスが作成および維持されます。定期的にカスタムリソースの現在の状態が評価され、その結果に応じてステータスが更新されます。くださいーたとえば、oc edit
を使用してカスタムリソースで更新を行う場合、その status
は編集不可能です。さらに、status
の変更は Kafka クラスターステータスの設定に影響しません。
ここでは、Kafka
カスタムリソースの status
プロパティーを確認します。
Kafka カスタムリソースのステータス
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: spec: # ... status: clusterId: XP9FP2P-RByvEy0W4cOEUA 1 conditions: 2 - lastTransitionTime: '2023-01-20T17:56:29.396588Z' status: 'True' type: Ready 3 listeners: 4 - addresses: - host: my-cluster-kafka-bootstrap.prm-project.svc port: 9092 bootstrapServers: 'my-cluster-kafka-bootstrap.prm-project.svc:9092' name: plain type: plain - addresses: - host: my-cluster-kafka-bootstrap.prm-project.svc port: 9093 bootstrapServers: 'my-cluster-kafka-bootstrap.prm-project.svc:9093' certificates: - | -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- name: tls type: tls - addresses: - host: >- 2054284155.us-east-2.elb.amazonaws.com port: 9095 bootstrapServers: >- 2054284155.us-east-2.elb.amazonaws.com:9095 certificates: - | -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- name: external2 type: external2 - addresses: - host: ip-10-0-172-202.us-east-2.compute.internal port: 31644 bootstrapServers: 'ip-10-0-172-202.us-east-2.compute.internal:31644' certificates: - | -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- name: external1 type: external1 observedGeneration: 3 5
Kafka ブートストラップアドレスがステータスに一覧表示されても、それらのエンドポイントまたは Kafka クラスターが Ready
状態であるとは限りません。
ステータス情報のアクセス
リソースのステータス情報はコマンドラインから取得できます。詳細は、「カスタムリソースのステータスの検出」 を参照してください。
20.1.3. カスタムリソースのステータスの検出
この手順では、カスタムリソースのステータスを検出する方法を説明します。
前提条件
- OpenShift クラスター
- Cluster Operator が稼働中である。
手順
カスタムリソースを指定し、
-o jsonpath
オプションを使用して標準の JSONPath 式を適用してstatus
プロパティーを選択します。oc get kafka <kafka_resource_name> -o jsonpath='{.status}'
この式は、指定されたカスタムリソースのすべてのステータス情報を返します。
status.listeners
またはstatus.observedGeneration
などのドット表記を使用すると、表示するステータス情報を微調整できます。
関連情報
- 「AMQ Streams カスタムリソースのステータス情報」
- JSONPath の使用に関する詳細は、JSONPath support を参照してください。