IBM Maximo Manage 用の Apache Kafka のインストール
Apache Kafka は、外部インターフェースとの間で送受信されるメッセージのバッファーを提供します。 IBM® Maximo® Manage ソフトウェアが外部システムとのインターフェースを持たない場合、 Apache Kafka は不要です。
Red Hat® AMQ Streams オペレーターは、Strict オペレーターに基づいており、オンプレミス・インストール用に Kafka をインストールするための推奨される方法です。 また、クラウド・プロバイダーによる管理対象 Kafka サービスが望ましくない場合に、クラウド・ベースの Maximo Application Suite インストール済み環境に Kafka をインストールするためにも使用できます。 詳しくは、 Red Hat AMQ Streams オペレーター および Strimzi オペレーターを参照してください。
ヒント: このタスクは、 Ansible® 役割 Kafkaを使用して実行することもできます。 詳しくは、 IBM Maximo Application Suite installation with Ansible collection および kafkaを参照してください。
次の作業
Apache Kafka Suite のパラメーターを構成します。 詳細については、 Apache Kafka のインストール」を参照してください。
Red Hat OpenShift Container Platform Web コンソールを使用したインストール
手順
- Red Hat OpenShift® Container Platformで、サイド・ナビゲーション・メニューから、 ホーム > 「プロジェクト」 をクリックし、 「プロジェクトの作成」をクリックします。 名前 kafkaを入力し、 「作成」 をクリックして Kafkaの新規名前空間をプロビジョンします。
- グローバル・ナビゲーション・バーで、 「YAML のインポート」 アイコン
をクリックします。 以下の YAML を入力します。--- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: "kafka" namespace: "kafka" spec: targetNamespaces: - "kafka" --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: amq-streams namespace: "kafka" spec: channel: amq-streams-1.8.x installPlanApproval: Automatic name: amq-streams source: redhat-operators sourceNamespace: openshift-marketplaceヒント: Maximo Application Suite on AWS (BYOL) バージョン 8.7の場合は、BAS 名前空間にインストールされている AMQ ストリームのバージョンに合わせてamq-streams-1.8.xをamq-streams-1.7.xに変更します。 - kafka 名前空間にオペレーター・グループおよびサブスクリプション・リソースを作成するには、 「作成」 をクリックします。
- サイド・ナビゲーション・メニューから、 「オペレーター」 > 「インストール済みオペレーター」をクリックします。 AMQ Streams を検索し、オペレーター状況が 「成功」に設定されていることを確認します。
- グローバル・ナビゲーション・バーで、 「YAML のインポート」 アイコンをクリックします。 以下の YAML コードを入力します。
--- apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: "maskafka" namespace: "kafka" spec: # ------------------------------------------------------- kafka: version: 2.7.0 replicas: 3 resources: requests: memory: 4Gi cpu: "1" limits: memory: 4Gi cpu: "2" jvmOptions: -Xms: 3072m -Xmx: 3072m config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 log.message.format.version: "2.7" log.retention.hours: 24 log.retention.bytes: 1073741824 log.segment.bytes: 268435456 log.cleaner.enable: true log.cleanup.policy: delete auto.create.topics.enable: false storage: type: jbod volumes: - id: 0 type: persistent-claim class: "ocs-storagecluster-ceph-rbd" size: 100Gi deleteClaim: true authorization: type: simple listeners: - name: tls port: 9094 type: route tls: true authentication: type: scram-sha-512 # ------------------------------------------------------- zookeeper: replicas: 3 resources: requests: memory: 1Gi cpu: "0.5" limits: memory: 1Gi cpu: "1" jvmOptions: -Xms: 768m -Xmx: 768m storage: type: persistent-claim class: "ocs-storagecluster-ceph-rbd" size: 10Gi deleteClaim: true # ------------------------------------------------------- entityOperator: userOperator: {} topicOperator: {}クラスターでサポートされるストレージ・クラスを使用するように、指定されたストレージ・クラス
ocs-storagecluster-ceph-rbdを変更します。 - Kafka クラスターを作成するには、 「作成」 をクリックします。
- サイド・ナビゲーション・メニューから、 「ワークロード」 > StatefulSets をクリックし、 kafka プロジェクトに切り替えます。 maskafka-kafka( Kafka ブローカー) と maskafka-zookeeper( Kafka ZooKeepers) の 2 つのステートフル・セットが表示されます。 各ステートフル・セットを選択し、それぞれに Ready 状態の 3 つのポッドがあることを確認します。
- グローバル・ナビゲーション・バーで、 「YAML のインポート」 アイコンをクリックします。 以下の YAML を入力します。
--- apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaUser metadata: name: "maskafkauser" labels: strimzi.io/cluster: "maskafka" namespace: "kafka" spec: authentication: type: scram-sha-512 authorization: type: simple acls: - host: '*' operation: All resource: name: '*' patternType: literal type: topic - host: '*' operation: All resource: name: '*' patternType: literal type: group - host: '*' operation: All resource: name: '*' patternType: literal type: cluster - host: '*' operation: All resource: name: '*' patternType: literal type: transactionalId - Kafkaへの接続を認証するために Maximo Application Suite が使用する Kafka ユーザーを作成するには、 「作成」 をクリックします。
- サイド・ナビゲーション・メニューから、 「ワークロード」 > 「シークレット」 をクリックし、 kafka プロジェクトに切り替えます。 ユーザー・エンティティー・オペレーターが maskafkauser シークレットを作成したことを確認します。
- サイド・ナビゲーション・メニューから、 「ネットワーキング」 > 「ルート」 をクリックし、 kafka プロジェクトに切り替えます。 maskafka-kafka-tls-bootstrap 経路が作成されたことを確認します。
- Kafka 情報を取得します。
- Kafka のホストとポートを取得するには、以下のコードを入力します。
oc get Kafka.kafka.strimzi.io maskafka -o jsonpath="{.status.listeners[0].addresses[0]}"出力例{"host":"maskafka-kafka-tls-bootstrap-kafka.apps.cluster1.example-cluster.com","port":443} - Kafka CA 証明書を取得します。
oc get Kafka.kafka.strimzi.io maskafka -o jsonpath="{.status.listeners[0].certificates[0]}"出力例-----BEGIN CERTIFICATE----- MIIFLTCCAxWgAwIBAgIUTExUl2XrdIPy6vZAtk9toGh2jbEwDQYJKoZIhvcNAQEN BQAwLTETMBEGA1UECgwKaW8uc3RyaW16aTEWMBQGA1UEAwwNY2x1c3Rlci1jYSB2 MDAeFw0yMjA1MTEyMTAyMzFaFw0yMzA1MTEyMTAyMzFaMC0xEzARBgNVBAoMCmlv LnN0cmltemkxFjAUBgNVBAMMDWNsdXN0ZXItY2EgdjAwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQDh6bYIudhZQ1/rR9IgSb7pzqTvtRiNOvzmnZPdtVtT q7lNLytPqpR6uuCIrhpuR0CPb++Rvjp2QrWgXr5VWBktT1MLk8WzDfX3+qxd5xC8 B00EKneBZkhohxBdb0co8ipxDpQAFTy+SeXhuROd5vwLEuh3OJeZMEUfTcNfUbvo J/IHUIGeDmhK//DumQE79z3vfLc2EcQgenMo0VoBy4ooQ2o4B7Y3plXHuStvtn6h lam30rSA+p3nKskrMDDpNKadHtmCrwI/rZZBFYb7DTdUpi69NeW3TEMRXGG3dMdk YYTdKN0zkB5BTvRx5FC6GX+cz/Uq3SnxlSmWB1DT+2nlnlwzVAgbNdsW4HiDUIdI FBJyQDqWTH9e7aUv3RzlrT4c995YBTfh1Jdvq5mzneMf6lab7iZoW1hGYQLRRC5y v8iTycwHd7EEGf/tjGrJ/s5nWPgGv/DEOg95/UvTRz9dZUWRwHCFANd0LaFW/HdF qkhuiVZOKNXqfr7zxnCw/F+0408+vcR43HKUTwId7vql+F+EgjT69U5pDF4sh6ep SgLTHoCGd/bekq5HHkrylCOty+ZU9EEWp4fQD+wN3RzGxJ080AA3RjkqsXmHbd5e aXlnhDB68mWpoHFuJ6YciNBBXlC/2HhDeR7PiMD9Zj0/7A3UHZj4hHXcSQoCnSW7 mwIDAQABo0UwQzAdBgNVHQ4EFgQU6yQKlZ+FEJyMkjsPxhmHERps1vgwEgYDVR0T AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIB AEfcrS4I2xsbTuULMtHlOGLgv7Mo+aJ8Os+vCE+MvSMVrsSvslVnigzE6aSvi7Ys TTpstmAhIfOcEEqldRa5GcG6Az6NWlbskZXfftojWtjnZevkuRnn/xICdizX+mj4 A3WL/GOVpTAWVUa5+lUh1AzFWhBw5kDvMxHyQhmpegt98ptxNpj5n9cHSWwJpjXl boNil+Y5kA4raWGa6gEOE0lwmLyS5pjOWCTCTD2MvldNakYPMqObVPE4DNia4qal huxOyxdr51KNBc7yVgQ1Fa7ZD+rF1a6aa6GwvwAKYNoxd7VW7fmZBSckpuWer9+R YCVvgE2a4vLnc5zLFwOfhjqaZSiIx0PMEmkHx1ZTriVg0GVZ8beU+I9BxUQsJyJU S4z9UaHexmYu/YRAQXKODw1xhqqR6oW2+CXYrtUvzN6kamFh8jN3AKf4PKA+TmjL maW0M7FVp+0Erne59hBcZhKG0QYx4AkjCwKclRwDBxXcBTcmXduDFeGzLub0napJ Uczo2zURQ7L6qPew9Guh0O1dnGp+kgi8T8kt/DniMvQBWDK3GvFi0A5mVjLQqMHQ HvAPzshx7Si1O45hepGK4fxQMcwAHw6c1V3j10R8RHh7bckld5mJ5Nh/BjZhk/LK N5Klfwoek0QSVAXQfnX1YtJfrHfz5+TYx0NnYTcgX6fE -----END CERTIFICATE-----
- Kafka のユーザー名とパスワードを取得します。
oc extract secret/maskafkauser -n kafka --keys=sasl.jaas.config --to=- - Simple Authentication and Security Layer (SASL) メカニズムを取得します。
oc get Kafka.kafka.strimzi.io maskafka -n kafka -o jsonpath='{.spec.kafka.listeners[0].authentication}' | jq -r .サンプル出力:{ "type": "scram-sha-512" }注: SASL メカニズムは SCRAM-SHA-512です。
- Kafka のホストとポートを取得するには、以下のコードを入力します。
Red Hat OpenShift コマンド・ライン・インターフェース (CLI) を使用したインストール
手順
- 要塞ホストから、YAML ファイル kafka-sub.yamlを作成します。このファイルには、 Kafkaのインストールに使用される名前空間、
OperatorGroup、およびSubscriptionリソースが含まれています。--- apiVersion: v1 kind: Namespace metadata: name: "kafka" --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: "kafka" namespace: "kafka" spec: targetNamespaces: - "kafka" --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: amq-streams namespace: "kafka" spec: channel: amq-streams-1.8.x installPlanApproval: Automatic name: amq-streams source: redhat-operators sourceNamespace: openshift-marketplaceヒント: Maximo Application Suite on AWS (BYOL) バージョン 8.7の場合は、BAS 名前空間にインストールされている AMQ ストリームのバージョンに合わせてamq-streams-1.8.xをamq-streams-1.7.xに変更します。 - kafka-sub.yaml ファイルを Red Hat OpenShift Container Platform クラスターに適用します。
oc apply -f kafka-sub.yaml - AMQ Streams オペレーターが正常にデプロイされたことを確認します。
oc get csv -n kafka -l operators.coreos.com/amq-streams.kafka出力例NAME DISPLAY VERSION REPLACES PHASE amqstreams.v1.8.4 Red Hat Integration-AMQ Streams 1.8.4 amqstreams.v1.8.3 成功
- 要塞ホストから、YAML ファイル kafka-cluster.yamlを作成します。このファイルには、 Kafka クラスターの構成を記述する Kafka リソースが含まれています。
--- apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: "maskafka" namespace: "kafka" spec: # ------------------------------------------------------- kafka: version: 2.7.0 replicas: 3 resources: requests: memory: 4Gi cpu: "1" limits: memory: 4Gi cpu: "2" jvmOptions: -Xms: 3072m -Xmx: 3072m config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 log.message.format.version: "2.7" log.retention.hours: 24 log.retention.bytes: 1073741824 log.segment.bytes: 268435456 log.cleaner.enable: true log.cleanup.policy: delete auto.create.topics.enable: false storage: type: jbod volumes: - id: 0 type: persistent-claim class: "ocs-storagecluster-ceph-rbd" size: 100Gi deleteClaim: true authorization: type: simple listeners: - name: tls port: 9094 type: route tls: true authentication: type: scram-sha-512 # ------------------------------------------------------- zookeeper: replicas: 3 resources: requests: memory: 1Gi cpu: "0.5" limits: memory: 1Gi cpu: "1" jvmOptions: -Xms: 768m -Xmx: 768m storage: type: persistent-claim class: "ocs-storagecluster-ceph-rbd" size: 10Gi deleteClaim: true # ------------------------------------------------------- entityOperator: userOperator: {} topicOperator: {}指定されたストレージ・クラス
ocs-storagecluster-ceph-rbdを変更して、クラスターでサポートされるストレージ・クラスを使用するようにしてください。 - kafka-cluster.yaml ファイルを Red Hat OpenShift クラスターに適用します。
oc apply -f kafka-cluster.yaml - Kafka クラスターが正常にデプロイされたことを確認します。 Kafka CR は作動可能状態です。
以下のコマンドで指定される Kafka CR は、 kafkas.ibmevents.ibm.comによって提供される Kafka CR とのあいまいさを避けるために、API グループ名 kafkas.kafka.strimzi.io で完全修飾されています。
oc get kafkas.kafka.strimzi.io -n kafka出力例NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS READY 警告 maskafka 3 3 True
- 要塞ホストから、YAML ファイルを作成します kafka-user.yaml。 このファイルには、 Kafkaへの接続を認証するために Maximo Application Suite によって使用される Kafka ユーザーの構成を記述する KafkaUser リソースが含まれています。
--- apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaUser metadata: name: "maskafkauser" labels: strimzi.io/cluster: "maskafka" namespace: "kafka" spec: authentication: type: scram-sha-512 authorization: type: simple acls: - host: '*' operation: All resource: name: '*' patternType: literal type: topic - host: '*' operation: All resource: name: '*' patternType: literal type: group - host: '*' operation: All resource: name: '*' patternType: literal type: cluster - host: '*' operation: All resource: name: '*' patternType: literal type: transactionalId - kafka-user.yaml ファイルを Red Hat OpenShift クラスターに適用します。
oc apply -f kafka-user.yaml - ユーザー・エンティティー・オペレーターが maskafkauser シークレットを作成したことを確認します。
oc get secret maskafkauser -n kafka出力例名前タイプ・データ・ページ maskafkauser 不透明 2 2m14s
- Kafka 情報を取得します。
- Kafka のホストとポートを取得します。
oc get Kafka.kafka.strimzi.io maskafka -o jsonpath="{.status.listeners[0].addresses[0]}"サンプル出力:{"host":"maskafka-kafka-tls-bootstrap-kafka.apps.cluster1.example-cluster.com","port":443} - Kafka CA 証明書を取得します。
oc get Kafka.kafka.strimzi.io maskafka -o jsonpath="{.status.listeners[0].certificates[0]}"サンプル出力:-----BEGIN CERTIFICATE----- MIIFLTCCAxWgAwIBAgIUTExUl2XrdIPy6vZAtk9toGh2jbEwDQYJKoZIhvcNAQEN BQAwLTETMBEGA1UECgwKaW8uc3RyaW16aTEWMBQGA1UEAwwNY2x1c3Rlci1jYSB2 MDAeFw0yMjA1MTEyMTAyMzFaFw0yMzA1MTEyMTAyMzFaMC0xEzARBgNVBAoMCmlv LnN0cmltemkxFjAUBgNVBAMMDWNsdXN0ZXItY2EgdjAwggIiMA0GCSqGSIb3DQEB AQUAA4ICDwAwggIKAoICAQDh6bYIudhZQ1/rR9IgSb7pzqTvtRiNOvzmnZPdtVtT q7lNLytPqpR6uuCIrhpuR0CPb++Rvjp2QrWgXr5VWBktT1MLk8WzDfX3+qxd5xC8 B00EKneBZkhohxBdb0co8ipxDpQAFTy+SeXhuROd5vwLEuh3OJeZMEUfTcNfUbvo J/IHUIGeDmhK//DumQE79z3vfLc2EcQgenMo0VoBy4ooQ2o4B7Y3plXHuStvtn6h lam30rSA+p3nKskrMDDpNKadHtmCrwI/rZZBFYb7DTdUpi69NeW3TEMRXGG3dMdk YYTdKN0zkB5BTvRx5FC6GX+cz/Uq3SnxlSmWB1DT+2nlnlwzVAgbNdsW4HiDUIdI FBJyQDqWTH9e7aUv3RzlrT4c995YBTfh1Jdvq5mzneMf6lab7iZoW1hGYQLRRC5y v8iTycwHd7EEGf/tjGrJ/s5nWPgGv/DEOg95/UvTRz9dZUWRwHCFANd0LaFW/HdF qkhuiVZOKNXqfr7zxnCw/F+0408+vcR43HKUTwId7vql+F+EgjT69U5pDF4sh6ep SgLTHoCGd/bekq5HHkrylCOty+ZU9EEWp4fQD+wN3RzGxJ080AA3RjkqsXmHbd5e aXlnhDB68mWpoHFuJ6YciNBBXlC/2HhDeR7PiMD9Zj0/7A3UHZj4hHXcSQoCnSW7 mwIDAQABo0UwQzAdBgNVHQ4EFgQU6yQKlZ+FEJyMkjsPxhmHERps1vgwEgYDVR0T AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIB AEfcrS4I2xsbTuULMtHlOGLgv7Mo+aJ8Os+vCE+MvSMVrsSvslVnigzE6aSvi7Ys TTpstmAhIfOcEEqldRa5GcG6Az6NWlbskZXfftojWtjnZevkuRnn/xICdizX+mj4 A3WL/GOVpTAWVUa5+lUh1AzFWhBw5kDvMxHyQhmpegt98ptxNpj5n9cHSWwJpjXl boNil+Y5kA4raWGa6gEOE0lwmLyS5pjOWCTCTD2MvldNakYPMqObVPE4DNia4qal huxOyxdr51KNBc7yVgQ1Fa7ZD+rF1a6aa6GwvwAKYNoxd7VW7fmZBSckpuWer9+R YCVvgE2a4vLnc5zLFwOfhjqaZSiIx0PMEmkHx1ZTriVg0GVZ8beU+I9BxUQsJyJU S4z9UaHexmYu/YRAQXKODw1xhqqR6oW2+CXYrtUvzN6kamFh8jN3AKf4PKA+TmjL maW0M7FVp+0Erne59hBcZhKG0QYx4AkjCwKclRwDBxXcBTcmXduDFeGzLub0napJ Uczo2zURQ7L6qPew9Guh0O1dnGp+kgi8T8kt/DniMvQBWDK3GvFi0A5mVjLQqMHQ HvAPzshx7Si1O45hepGK4fxQMcwAHw6c1V3j10R8RHh7bckld5mJ5Nh/BjZhk/LK N5Klfwoek0QSVAXQfnX1YtJfrHfz5+TYx0NnYTcgX6fE -----END CERTIFICATE----- - Kafka のユーザー名とパスワードの取得
oc extract secret/maskafkauser -n kafka --keys=sasl.jaas.config --to=- - SASL メカニズムを取得します。
oc get Kafka.kafka.strimzi.io maskafka -n kafka -o jsonpath='{.spec.kafka.listeners[0].authentication}' | jq -r .サンプル出力:{ "type": "scram-sha-512" }注: SASL メカニズムは SCRAM-SHA-512です。
- Kafka のホストとポートを取得します。