Maximo Application Suite お客様管理

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 コンソールを使用したインストール

手順

  1. Red Hat OpenShift® Container Platformで、サイド・ナビゲーション・メニューから、 ホーム > 「プロジェクト」 をクリックし、 「プロジェクトの作成」をクリックします。 名前 kafkaを入力し、 「作成」 をクリックして Kafkaの新規名前空間をプロビジョンします。
  2. グローバル・ナビゲーション・バーで、 「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.xamq-streams-1.7.x に変更します。
  3. kafka 名前空間にオペレーター・グループおよびサブスクリプション・リソースを作成するには、 「作成」 をクリックします。
  4. サイド・ナビゲーション・メニューから、 「オペレーター」 > 「インストール済みオペレーター」をクリックします。 AMQ Streams を検索し、オペレーター状況が 「成功」に設定されていることを確認します。
  5. グローバル・ナビゲーション・バーで、 「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 を変更します。

  6. Kafka クラスターを作成するには、 「作成」 をクリックします。
  7. サイド・ナビゲーション・メニューから、 「ワークロード」 > StatefulSets をクリックし、 kafka プロジェクトに切り替えます。 maskafka-kafka( Kafka ブローカー) と maskafka-zookeeper( Kafka ZooKeepers) の 2 つのステートフル・セットが表示されます。 各ステートフル・セットを選択し、それぞれに Ready 状態の 3 つのポッドがあることを確認します。
  8. グローバル・ナビゲーション・バーで、 「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
    
  9. Kafkaへの接続を認証するために Maximo Application Suite が使用する Kafka ユーザーを作成するには、 「作成」 をクリックします。
  10. サイド・ナビゲーション・メニューから、 「ワークロード」 > 「シークレット」 をクリックし、 kafka プロジェクトに切り替えます。 ユーザー・エンティティー・オペレーターが maskafkauser シークレットを作成したことを確認します。
  11. サイド・ナビゲーション・メニューから、 「ネットワーキング」 > 「ルート」 をクリックし、 kafka プロジェクトに切り替えます。 maskafka-kafka-tls-bootstrap 経路が作成されたことを確認します。
  12. Kafka 情報を取得します。
    1. Kafka のホストとポートを取得するには、以下のコードを入力します。
      
      oc get Kafka.kafka.strimzi.io maskafka  -o jsonpath="{.status.listeners[0].addresses[0]}"
      
      出力例
    2. Kafka CA 証明書を取得します。
      
      oc get Kafka.kafka.strimzi.io maskafka  -o jsonpath="{.status.listeners[0].certificates[0]}"
      
      出力例
    3. Kafka のユーザー名とパスワードを取得します。
      
      oc extract secret/maskafkauser -n kafka --keys=sasl.jaas.config --to=-
    4. 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です。

Red Hat OpenShift コマンド・ライン・インターフェース (CLI) を使用したインストール

手順

  1. 要塞ホストから、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.xamq-streams-1.7.x に変更します。
  2. kafka-sub.yaml ファイルを Red Hat OpenShift Container Platform クラスターに適用します。
    
    oc apply -f kafka-sub.yaml
    
  3. AMQ Streams オペレーターが正常にデプロイされたことを確認します。
    
    oc get csv -n kafka -l operators.coreos.com/amq-streams.kafka
    
    出力例
  4. 要塞ホストから、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 を変更して、クラスターでサポートされるストレージ・クラスを使用するようにしてください。

  5. kafka-cluster.yaml ファイルを Red Hat OpenShift クラスターに適用します。
    
    oc apply -f kafka-cluster.yaml
    
  6. Kafka クラスターが正常にデプロイされたことを確認します。 Kafka CR は作動可能状態です。

    以下のコマンドで指定される Kafka CR は、 kafkas.ibmevents.ibm.comによって提供される Kafka CR とのあいまいさを避けるために、API グループ名 kafkas.kafka.strimzi.io で完全修飾されています。

    
    oc get kafkas.kafka.strimzi.io -n kafka
    
    出力例
  7. 要塞ホストから、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
    
  8. kafka-user.yaml ファイルを Red Hat OpenShift クラスターに適用します。
    
    oc apply -f kafka-user.yaml
    
  9. ユーザー・エンティティー・オペレーターが maskafkauser シークレットを作成したことを確認します。
    
    oc get secret maskafkauser -n kafka
    
    出力例
  10. Kafka 情報を取得します。
    1. 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}
      
    2. 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-----
      
    3. Kafka のユーザー名とパスワードの取得
      
      oc extract secret/maskafkauser -n kafka --keys=sasl.jaas.config --to=-
    4. 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です。