Overview

IBM® Automation OpenSearch is an open source search and analytics suite that can be used to ingest, search, visualize, and analyze data.

The ibm-opensearch-operator-controller-manager deployment provides the Opensearch APIs.

Prerequisites

Complete the following prerequisites to deploy the OpenSearch:

  • Make sure that the ibm-cert-manager-operator or cert-manager is installed on the cluster.

  • Make sure that you install the OpenSearch in the namespace where you deployed the foundational services.

StorageClass

A ReadWriteOnce (RWO) PersistentVolume (PV) is needed for OpenSearch.

Storage

High performance RWO storage is required for each node and pod. RWO storage can include the following options:

  • AWS Elastic Block Store (EBS)
  • IBM Fusion Data Foundation and IBM Spectrum Scale
  • NetApp Trident
  • Portworx
  • Red Hat® OpenShift® Data Foundation

For file-based backup and restore operations, you can use one of the following Object Storage options:

  • For better performance, use block storage.
  • AWS Elastic File System (EFS)
  • High-performance ReadWriteMany (RWX)
  • IBM Fusion Data Foundation and IBM Spectrum Scale
  • NetApp Trident
  • NFS CSI
  • Portworx
  • Red Hat OpenShift Data Foundation

For an example storage configuration, see the storage section in the following example OpenSearch CR.

Example of an OpenSearch custom resource

An Opensearch CR is shown in the following example:

apiVersion: opensearch.cloudpackopen.ibm.com/v1
kind: Cluster
metadata:
  labels:
    app.kubernetes.io/name: cluster
    app.kubernetes.io/instance: single
    app.kubernetes.io/part-of: ibm-opensearch-operator
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/created-by: ibm-opensearch-operator
  name: <Opensearch CR name>
spec:
  backup:
    enable: false                           # Enable this option if you need a snapshot backup.
    sizeLimit: 1Gi
    snapshotPVC: ""
    snapshotPVCStorageClass: rook-cephfs       # Replace this value with your storageClass.
  license:
    accept: true
  enableDefaultNetworkPolicy: true
  serviceAccount: ""
  baseImage:
  opensearchImage:
  version: 3.2.0
  plugins:
    analysisICU: false
    analysisKuromoji: false
    analysisNori: false
    analysisPhonetic: false
    analysisSmartcn: false
    analysisStempe: false
    analysisUkrainian: false
    cacheEhcache: false
    cryptoKms: false
    discoveryAzureClassic: false
    discoveryEc2: false
    discoveryGce: false
    identityShiro: false
    ingestAttachment: false
    mapperAnnotatedText: false
    mapperMurmur3: false
    mapperSize: false
    queryInsights: false
    repositoryS3: true
    storeSMB: false
    telemetryOtel: false
    transportNio: false
    transportReactorNetty4: false
    security:
      enabled: true
      image:
      version: 3.2.0.0
      internalUserSecret:
  nodePools:
    - name: "all"
      replicas: 3
      opensearchyml: |
        plugins.security.ssl.http.enabled: true
        plugins.security.allow_default_init_securityindex: true
        http.compression: false
      resources:
        requests:
          cpu: 1
          memory: 32Mi
          ephemeral-storage: 1024Mi # Set `ephemeral-storage` to a value less than 2Gi as required by the Kyverno policy.
        limits:
          cpu: 3
          memory: 1512Mi
          ephemeral-storage: 1512Mi # Set `ephemeral-storage` to a value less than 2Gi as required by the Kyverno policy.
      storage:
        data:
          sizeLimit: 5Gi
          storageClass: rook-cephfs     # Replace this value with your storageClass.
          useEphemeral: false  # Set this value to false for production environments.
        deployment:
          sizeLimit: 10Gi
          storageClass: rook-cephfs     # Replace this value with your storageClass.
          useEphemeral: false # Set this value to false for production environments.