第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 操作の実施

リソースタイプに対して操作を行うには、getdescribeeditdelete などの oc コマンドを使用します。たとえば、oc get kafkatopics はすべての Kafka トピックのリストを取得し、oc get kafkas はデプロイされたすべての Kafka クラスターを取得します。

リソースタイプを参照する際には、単数形と複数形の両方の名前を使うことができます。oc get kafkasoc get kafka と同じ結果になります。

リソースの 短縮名 を使用することもできます。短縮名を理解すると、AMQ Streams を管理する時間を節約できます。Kafka のショートネームは k なので、oc get k を実行してすべての Kafka クラスターをリストアップすることもできます。

oc get k

NAME         DESIRED KAFKA REPLICAS   DESIRED ZK REPLICAS
my-cluster   3                        3
表20.1 各 AMQ Streams リソースの正式名および短縮名
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 リファレンス を参照してください。

表20.2 ステータス情報を提供するカスタムリソース
AMQ Streams リソーススキーマ参照ステータス情報がパブリッシュされる場所

Kafka

KafkaStatus スキーマ参照

Kafka クラスター

KafkaTopic

KafkaTopicStatus スキーマ参照

Kafka クラスター内の Kafka トピック

KafkaUser

KafkaUserStatus スキーマ参照

Kafka クラスター内の Kafka ユーザー

KafkaConnect

KafkaConnectStatus スキーマ参照

Kafka Connect クラスター

KafkaConnector

KafkaConnectorStatus スキーマ参照

KafkaConnector リソース

KafkaMirrorMaker2

KafkaMirrorMaker2Status スキーマ参照

Kafka MirrorMaker 2 クラスター

KafkaMirrorMaker

KafkaMirrorMakerStatus スキーマ参照

Kafka MirrorMaker クラスター

KafkaBridge

KafkaBridgeStatus スキーマ参照

AMQ Streams Kafka Bridge

KafkaRebalance

KafkaRebalance スキーマ参照

リバランスの状況と結果

リソースの 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

1
Kafka クラスター ID。
2
ステータス conditions は、Kafka クラスターの現在の状態を表します。
3
Ready 状態は、Cluster Operator が Kafka クラスターがトラフィックを処理できると見なしていることを示します。
4
listeners は、Kafka ブートストラップアドレスをタイプ別に記述します。
5
observedGeneration 値は、クラスターオペレーターによる Kafka カスタムリソースの最後の調整を示します。
注記

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 などのドット表記を使用すると、表示するステータス情報を微調整できます。

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.