Maximo Application Suite Cliente gerenciado

Instalando o Apache Kafka para IBM Maximo Manage

Apache Kafka fornece um buffer para mensagens que são enviadas para e recebidas de interfaces externas. Apache Kafka não será necessário se o software IBM® Maximo® Manage não fizer interface com sistemas externos.

O operador do Red Hat® AMQ Streams, que é baseado no operador Strict, é a maneira preferencial de instalar o Kafka para instalações locais. Ele também pode ser usado para instalar o Kafka em instalações do Maximo Application Suite baseadas em nuvem quando um serviço Kafka gerenciado pelo provedor em nuvem não é desejável. Para obter mais informações, consulte Red Hat AMQ Streams e Operador Strimzi.
Dica: essa tarefa também pode ser feita usando a seguinte função Ansible® : Kafka. Para obter mais informações, consulte a instalação do IBM Maximo Application Suite com a coleção Ansible e kafka.

O que fazer a seguir

Configure os parâmetros do Apache Kafka Suite. Para obter mais informações, consulte Instalando Apache Kafka.

Instalando usando o console da web Red Hat OpenShift Container Platform

Procedimento

  1. No Red Hat OpenShift® Container Platform, no menu de navegação lateral, clique em Início > Projetos e, em seguida, clique em Criar Projeto. Insira o nome kafkae clique em Criar para provisionar o novo namespace para Kafka.
  2. Na barra de navegação global. Clique no ícone Importar YAML Mais ícone. Insira o YAML a seguir
    
    ---
    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
    
    Dica: para Maximo Application Suite no AWS (BYOL) versão 8.7, mude amq-streams-1.8.x para amq-streams-1.7.x para corresponder à versão dos fluxos do AMQ que estão instalados no namespace do BAS..
  3. Clique em Criar para criar o grupo de operador e os recursos de assinatura no espaço de nomes kafka .
  4. No menu de navegação lateral, clique em Operadores > Operadores instalados. Procure AMQ Streams e verifique se o status do operador está configurado como Bem-sucedido.
  5. Na barra de navegação global clique no ícone Importar YAML . Insira o código YAML a seguir.
    
    ---
    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: {}
    

    Modifique a classe de armazenamento especificada ocs-storagecluster-ceph-rbd para usar uma classe de armazenamento suportada para seu cluster..

  6. Clique em Criar para criar o cluster Kafka .
  7. No menu de navegação lateral, clique em Cargas de trabalho > StatefulSets e alterne para o projeto kafka Você vê dois statefulsets: maskafka-kafka, que são os brokers Kafka e maskafka-zookeeper, que o Kafka ZooKeepers. Selecione cada statefulset e verifique se cada um tem três pods que estão no estado Pronto.
  8. Na barra de navegação global clique no ícone Importar YAML . Insira o YAML a seguir
    
    ---
    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. Clique em Criar para criar um usuário do Kafka , que é usado pelo Maximo Application Suite para autenticar conexões com o Kafka.
  10. No menu de navegação lateral, clique em Cargas de trabalho > Segredos e mude para o projeto kafka . Verifique se o operador de entidade do usuário criou o segredo maskafkauser .
  11. No menu de navegação lateral, clique em Rede > Rotas e alterne para o projeto kafka . Verifique se a rota maskafka-kafka-tls-bootstrap foi criada.
  12. Obtenha as informações Kafka .
    1. Para obter o host e a porta Kafka , insira o código a seguir:
      
      oc get Kafka.kafka.strimzi.io maskafka  -o jsonpath="{.status.listeners[0].addresses[0]}"
      
      Saída de amostra
    2. Obtenha o certificado de autoridade de certificação Kafka .
      
      oc get Kafka.kafka.strimzi.io maskafka  -o jsonpath="{.status.listeners[0].certificates[0]}"
      
      Saída de amostra
    3. Obter o nome do usuário e senha do Kafka .
      
      oc extract secret/maskafkauser -n kafka --keys=sasl.jaas.config --to=-
    4. Obtenha o mecanismo Simple Authentication and Security Layer (SASL).
      
      oc get Kafka.kafka.strimzi.io maskafka -n kafka -o jsonpath='{.spec.kafka.listeners[0].authentication}' | jq -r . 
      
      Saída de amostra:
      
      {
        "type": "scram-sha-512"
      }
      
      Nota: o mecanismo SASL é SCRAM-SHA-512.

Instalando usando a interface da linha de comandos (CLI) do Red Hat OpenShift

Procedimento

  1. No host bastion, crie o arquivo YAML kafka-sub.yaml, que contém o namespace, OperatorGroupe Subscription recursos que são usados para instalar o Kafka:
    
    ---
    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
    
    Dica: para Maximo Application Suite no AWS (BYOL) versão 8.7, mude amq-streams-1.8.x para amq-streams-1.7.x para corresponder à versão dos fluxos do AMQ que estão instalados no namespace do BAS..
  2. Aplique o arquivo kafka-sub.yaml no cluster do Red Hat OpenShift Container Platform :
    
    oc apply -f kafka-sub.yaml
    
  3. Verifique se o operador AMQ Streams foi implementado com sucesso:
    
    oc get csv -n kafka -l operators.coreos.com/amq-streams.kafka
    
    Saída de amostra
  4. No host bastion, crie o arquivo YAML kafka-cluster.yaml, que contém o recurso Kafka que descreve a configuração do cluster 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: {}
    

    Certifique-se de que você modifique a classe de armazenamento especificada ocs-storagecluster-ceph-rbd para usar uma classe de armazenamento suportada para o seu cluster.

  5. Aplique o arquivo kafka-cluster.yaml ao cluster do Red Hat OpenShift :
    
    oc apply -f kafka-cluster.yaml
    
  6. Verifique se o cluster Kafka foi implementado com sucesso. O CR do Kafka está no estado Pronto

    O CR Kafka especificado no comando a seguir é completo com seu nome do grupo de API kafkas.kafka.strimzi.io para evitar ambiguidade com o CR Kafka fornecido pelo kafkas.ibmevents.ibm.com.

    
    oc get kafkas.kafka.strimzi.io -n kafka
    
    Saída de amostra
  7. No host bastion, crie o arquivo YAML kafka-user.yaml. O arquivo contém o recurso KafkaUser que descreve a configuração do usuário Kafka que é usado pelo Maximo Application Suite para autenticar conexões com o Kafka:
    
    ---
    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. Aplique o arquivo kafka-user.yaml ao cluster do Red Hat OpenShift :
    
    oc apply -f kafka-user.yaml
    
  9. Verifique se o operador da entidade do usuário foi criado o segredo maskafkauser .
    
    oc get secret maskafkauser -n kafka
    
    Saída de amostra
  10. Obtenha as informações Kafka .
    1. Obtenha o Kafka host e a porta.
      
      oc get Kafka.kafka.strimzi.io maskafka  -o jsonpath="{.status.listeners[0].addresses[0]}"
      
      Saída de amostra:
      
      {"host":"maskafka-kafka-tls-bootstrap-kafka.apps.cluster1.example-cluster.com","port":443}
      
    2. Obtenha o certificado de autoridade de certificação Kafka .
      
      oc get Kafka.kafka.strimzi.io maskafka  -o jsonpath="{.status.listeners[0].certificates[0]}"
      
      Saída de amostra:
      
      -----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. Obter o nome do usuário e senha do Kafka
      
      oc extract secret/maskafkauser -n kafka --keys=sasl.jaas.config --to=-
    4. Obtenha o mecanismo SASL.
      
      oc get Kafka.kafka.strimzi.io maskafka -n kafka -o jsonpath='{.spec.kafka.listeners[0].authentication}' | jq -r . 
      
      Saída de amostra:
      
      {
        "type": "scram-sha-512"
      }
      
      Nota: o Mecanismo SASL é SCRAM-SHA-512.