第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
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 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 の新機能をテストする場合などに役立ちます。
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
タイプ条件を @.type=="external"
または @.type=="plain"
に変更すると、他の Kafka リスナーのアドレスを取得することもできます。
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 クラスター。 | |
|
デプロイされている場合は | |
| デプロイされている場合は Kafka MirrorMakerツール。 | |
| Kafka クラスターの Kafka トピック | |
| Kafka クラスターの Kafka ユーザー。 | |
| デプロイされている場合は AMQ Streams の Kafka Bridge。 |
リソースの status
プロパティーによって、リソースの下記項目の情報が提供されます。
-
status.conditions
プロパティーの Current state (現在の状態)。 -
status.observedGeneration
プロパティーの Last observed generation (最後に確認された生成)。
status
プロパティーによって、リソース固有の情報も提供されます。以下に例を示します。
-
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 カスタムリソースとステータス
apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka metadata: spec: # ... status: conditions: 1 - lastTransitionTime: 2019-07-23T23:46:57+0000 status: "True" type: Ready 2 observedGeneration: 4 3 listeners: 4 - addresses: - host: my-cluster-kafka-bootstrap.myproject.svc port: 9092 type: plain - addresses: - host: my-cluster-kafka-bootstrap.myproject.svc port: 9093 certificates: - | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- type: tls - addresses: - host: 172.29.49.180 port: 9094 certificates: - | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- type: external # ...
- 1
- status の
conditions
は、既存のリソース情報から推測できないステータスに関連する基準や、リソースのインスタンスに固有する基準を記述します。 - 2
Ready
条件は、Cluster Operator が現在 Kafka クラスターでトラフィックの処理が可能であると判断するかどうかを示しています。- 3
observedGeneration
は、最後に Cluster Operator によって照合されたKafka
カスタムリソースの生成を示しています。- 4
listeners
は、現在の Kafka ブートストラップアドレスをタイプ別に示しています。重要タイプが
nodeport
の外部リスナーのカスタムリソースステータスにおけるアドレスは、現在サポートされていません。
Kafka ブートストラップアドレスがステータスに一覧表示されても、それらのエンドポイントまたは Kafka クラスターが準備状態であるとは限りません。
ステータス情報のアクセス
リソースのステータス情報はコマンドラインから取得できます。詳細は、「カスタムリソースのステータスの検出」 を参照してください。
12.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」を参照してください。