第12章 AMQ Streams の管理
本章では、AMQ Streams のデプロイメントを維持するタスクについて説明します。
12.1. カスタムリソースの使用 リンクのコピーリンクがクリップボードにコピーされました!
oc コマンドを使用して、AMQ Streams カスタムリソースで情報を取得し、他の操作を実行できます。
カスタムリソースの status サブリソースで oc を使用すると、リソースに関する情報を取得できます。
12.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
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 Connect S2I | kafkaconnects2i | kcs2i |
| Kafka Connector | kafkaconnector | kctr |
| Kafka Mirror Maker | kafkamirrormaker | kmm |
| Kafka Mirror Maker 2 | kafkamirrormaker2 | kmm2 |
| Kafka Bridge | kafkabridge | kb |
| Kafka Rebalance | kafkarebalance | kr |
12.1.1.1. リソースカテゴリー リンクのコピーリンクがクリップボードにコピーされました!
カスタムリソースのカテゴリーは、ocコマンドでも使用できます。
すべての AMQ Streams カスタムリソースはカテゴリー strimzi に属するため、strimziを使用してすべての AMQ Streams リソースを 1 つのコマンドで取得できます。
例えば、oc get strimziを実行すると、指定された名前空間のすべてのAMQ Streamsカスタムリソースが一覧表示されます。
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
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
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 の新機能をテストする場合などに役立ちます。
12.1.1.2. サブリソースのステータスのクエリー リンクのコピーリンクがクリップボードにコピーされました!
-o オプションに渡すことのできる他の値もあります。たとえば、-o yaml を使用すると、YAML 形式で出力されます。usng -o json は JSON として返します。
oc get --help のすべてのオプションが表示されます。
最も便利なオプションの 1 つは JSONPath サポート で、JSONPath 式を渡して Kubernetes API にクエリーを実行できます。JSONPath 式は、リソースの特定部分を抽出または操作できます。
たとえば、JSONPath 式 {.status.listeners[?(@.type=="tls")].bootstrapServers} を使用して、Kafka カスタムリソースのステータスからブートストラップアドレスを取得し、Kafka クライアントで使用できます。
ここで、コマンドは tls リスナーの bootstrapServers 値を見つけます。
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.type=="tls")].bootstrapServers}{"\n"}'
my-cluster-kafka-bootstrap.myproject.svc:9093
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.type=="tls")].bootstrapServers}{"\n"}'
my-cluster-kafka-bootstrap.myproject.svc:9093
タイプ条件を @.type=="external" または @.type=="plain" に変更すると、他の Kafka リスナーのアドレスを取得することもできます。
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.type=="external")].bootstrapServers}{"\n"}'
192.168.1.247:9094
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.type=="external")].bootstrapServers}{"\n"}'
192.168.1.247:9094
jsonpath を使用して、カスタムリソースから他のプロパティーまたはプロパティーのグループを抽出できます。
12.1.2. AMQ Streams カスタムリソースのステータス情報 リンクのコピーリンクがクリップボードにコピーされました!
下記の表のとおり、複数のリソースに status プロパティーがあります。
| AMQ Streams リソース | スキーマ参照 | ステータス情報がパブリッシュされる場所 |
|---|---|---|
|
| Kafka クラスター。 | |
|
| デプロイされている場合は Kafka Connect クラスター。 | |
|
| デプロイされている場合は Source-to-Image (S2I) サポートのある Kafka Connect クラスター。 | |
|
| デプロイされている場合は KafkaConnector リソース。 | |
|
| デプロイされている場合は Kafka MirrorMakerツール。 | |
|
| Kafka クラスターの Kafka トピック | |
|
| Kafka クラスターの Kafka ユーザー。 | |
|
| デプロイされている場合は AMQ Streams の Kafka Bridge。 |
リソースの status プロパティーによって、リソースの下記項目の情報が提供されます。
-
status.conditionsプロパティーの Current state (現在の状態)。 -
status.observedGenerationプロパティーの Last observed generation (最後に確認された生成)。
status プロパティーによって、リソース固有の情報も提供されます。以下は例になります。
-
KafkaStatusによって、リスナーアドレスに関する情報と Kafka クラスターの ID が提供されます。 -
KafkaConnectStatusによって、Kafka Connect コネクターの REST API エンドポイントが提供されます。 -
KafkaUserStatusによって、Kafka ユーザーの名前と、ユーザーのクレデンシャルが保存されるSecretが提供されます。 -
KafkaBridgeStatusによって、外部クライアントアプリケーションが Bridge サービスにアクセスできる HTTP アドレスが提供されます。
リソースの Current state (現在の状態) は、spec プロパティーによって定義される Desired state (望ましい状態) を実現するリソースに関する進捗を追跡するのに便利です。ステータス条件によって、リソースの状態が変更された時間および理由が提供され、Operator によるリソースの望ましい状態の実現を妨げたり遅らせたりしたイベントの詳細が提供されます。
Last observed generation (最後に確認された生成) は、Cluster Operator によって最後に照合されたリソースの生成です。observedGeneration の値が metadata.generation の値と異なる場合、リソースの最新の更新が Operator によって処理されていません。これらの値が同じである場合、リソースの最新の変更がステータス情報に反映されます。
AMQ Streams によってカスタムリソースのステータスが作成および維持されます。定期的にカスタムリソースの現在の状態が評価され、その結果に応じてステータスが更新されます。くださいーたとえば、oc edit を使用してカスタムリソースで更新を行う場合、その status は編集不可能です。さらに、status の変更は Kafka クラスターステータスの設定に影響しません。
以下では、Kafka カスタムリソースに status プロパティーが指定されています。
Kafka カスタムリソースとステータス
- 1
- status の
conditionsは、既存のリソース情報から推測できないステータスに関連する基準や、リソースのインスタンスに固有する基準を記述します。 - 2
Ready条件は、Cluster Operator が現在 Kafka クラスターでトラフィックの処理が可能であると判断するかどうかを示しています。- 3
observedGenerationは、最後に Cluster Operator によって照合されたKafkaカスタムリソースの生成を示しています。- 4
listenersは、現在の Kafka ブートストラップアドレスをタイプ別に示しています。- 5
- Kafka クラスター ID。重要
タイプが
nodeportの外部リスナーのカスタムリソースステータスにおけるアドレスは、現在サポートされていません。
Kafka ブートストラップアドレスがステータスに一覧表示されても、それらのエンドポイントまたは Kafka クラスターが準備状態であるとは限りません。
ステータス情報のアクセス
リソースのステータス情報はコマンドラインから取得できます。詳細は、「カスタムリソースのステータスの検出」 を参照してください。
12.1.3. カスタムリソースのステータスの検出 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、カスタムリソースのステータスを検出する方法を説明します。
前提条件
- OpenShift クラスターが必要です。
- Cluster Operator が稼働している必要があります。
手順
カスタムリソースを指定し、
-o jsonpathオプションを使用して標準の JSONPath 式を適用してstatusプロパティーを選択します。oc get kafka <kafka_resource_name> -o jsonpath='{.status}'oc get kafka <kafka_resource_name> -o jsonpath='{.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow この式は、指定されたカスタムリソースのすべてのステータス情報を返します。
status.listenersまたはstatus.observedGenerationなどのドット表記を使用すると、表示するステータス情報を微調整できます。
関連情報
- 「AMQ Streams カスタムリソースのステータス情報」
- JSONPath の使用に関する詳細は、「JSONPath support」を参照してください。