Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Установка модуля OpenSearch

1. Предварительные условия

  • Вы ознакомились с архитектурой и концепциями OpenSearch в Nova Container Platform.

  • Вы ознакомились с документацией по планированию установки и системным требованиям OpenSearch.

  • У вас есть доступ к кластеру с учетной записью, имеющей роль cluster-admin в Kubernetes.

  • Вы установили утилиту kubectl для работы с Kubernetes.

  • Вы ознакомились с инструкцией по работе с OperatorHUB.

2. Установка модуля OpenSearch с помощью kubectl

2.1. С помощью кастомизации

  1. Сохраните один из представленных ниже манифестов в файл, например, OpenSearch.yaml. Ниже предоставлены примеры манифестов для различных конфигураций.

    Для кластера в минимальной конфигурации
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-pre
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      prune: true
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      dependsOn:
      - name: nova-release-ingress-internal-main
      - name: nova-release-cert-manager-post
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/pre
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
    ---
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-main
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      prune: true
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      dependsOn:
      - name: nova-release-ingress-internal-main
      - name: nova-release-cert-manager-post
      - name: nova-release-logs-pre
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/main
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
      healthChecks:
      - apiVersion: apps/v1
        kind: StatefulSet
        name: nova-logs
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: Deployment
        name: nova-logs-dashboards
        namespace: nova-logs
    ---
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-post
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      prune: true
      dependsOn:
      - name: nova-release-logs-main
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/post
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
      healthChecks:
      - apiVersion: apps/v1
        kind: StatefulSet
        name: nova-logs-logging-fluentd
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-k8s-audit-apiserver-host-tailer-host-tailer
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-node-audit-host-tailer-host-tailer
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-logs-fluentbit-fluentbit
        namespace: nova-logs
    Для высокодоступного кластера в рекомендуемой конфигурации
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-pre
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      prune: true
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      dependsOn:
      - name: nova-release-ingress-internal-main
      - name: nova-release-cert-manager-post
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/pre
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
    ---
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-main
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      prune: true
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      dependsOn:
      - name: nova-release-ingress-internal-main
      - name: nova-release-cert-manager-post
      - name: nova-release-logs-pre
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/main
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
      healthChecks:
      - apiVersion: apps/v1
        kind: StatefulSet
        name: nova-logs
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: Deployment
        name: nova-logs-dashboards
        namespace: nova-logs
      patches:
      - patch: |
          - op: replace
            path: /spec/replicas
            value: 3
        target:
          kind: Deployment
          name: "nova-logs-dashboards"
          namespace: nova-logs
      - patch: |
          - op: replace
            path: /spec/replicas
            value: 3
        target:
          kind: StatefulSet
          name: "nova-logs"
          namespace: nova-logs
      - patch: |
          apiVersion: apps/v1
          kind: StatefulSet
          metadata:
            name: nova-logs
            namespace: nova-logs
          spec:
            template:
              spec:
                containers:
                  - name: "opensearch"
                    env:
                      - name: cluster.initial_master_nodes
                        value: "nova-logs-0,nova-logs-1,nova-logs-2"
    ---
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-post
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      patches:
        - patch: |
            apiVersion: logging.banzaicloud.io/v1beta1
            kind: Logging
            metadata:
              name: nova-logs-logging
              namespace: nova-logs
            spec:
              fluentd:
                scaling:
                  replicas: 3
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      prune: true
      dependsOn:
      - name: nova-release-logs-main
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/post
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
      healthChecks:
      - apiVersion: apps/v1
        kind: StatefulSet
        name: nova-logs-logging-fluentd
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-k8s-audit-apiserver-host-tailer-host-tailer
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-node-audit-host-tailer-host-tailer
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-logs-fluentbit-fluentbit
        namespace: nova-logs
  2. Установите манифест в кластер Kubernetes, выполнив команду:

    kubectl apply -f OpenSearch.yaml

  3. Проверьте состояние запущенных компонентов OpenSearch, выполнив команду:

    kubectl get pods -n nova-logs

2.2. С помощью оператора

  1. Установите оператор nova-ml-platform-operator. Для этого сохраните представленный ниже манифест в файл, например OpenSearchOperator.yaml.

    Пример манифеста для установки nova-opensearch-operator
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: nova-opensearch-operator
      namespace: nova-operators
    spec:
      channel: stable
      installPlanApproval: Automatic
      name: nova-opensearch-operator
      source: nova-catalog
      sourceNamespace: nova-operatorhub
      startingCSV: nova-opensearch-operator.v1.0.0
  2. Установите манифест в кластер Kubernetes, выполнив команду:

    kubectl apply -f OpenSearchOperator.yaml
  3. Проверьте состояние оператора после установки.

    kubectl get pods -n nova-operators
    Пример вывода:
    NAME                                             READY   STATUS    RESTARTS      AGE
    nova-opensearch-operator-588cd5c558-gqwmj        1/1     Running   1 (44h ago)   5d

    Убедитесь, что оператор находится в статусе Running. В столбце READY должно быть 1/1. Ниже представлены примеры манифестов для различных конфигураций.

    Для кластера в минимальной конфигурации
    apiVersion: opensearch.nova-platform.io/v1alpha1
    kind: OpenSearchCluster
    metadata:
      name: opensearch-cluster
    spec:
      opensearch: (1)
        replicas: 1 (2)
        config: (3)
          immutableIndices: (4)
            - k8s-audit*
            - security-auditlog*
      dashboards: (5)
        replicas: 1 (6)
    1. spec.opensearch (тип: object) - конфигурация узлов OpenSearch.

    2. spec.opensearch.replicas (тип: int) - количество реплик OpenSearch. Допустимые значения: нечетные числа >= 1. Не может превышать количество инфраструктурных узлов кластера

    3. spec.opensearch.config (тип: object) - Необязателен. Дополнительная конфигурация OpenSearch.

    4. spec.opensearch.config.immutableIndices (тип: []string) - Необязателен. Список индексов, которые будут защищены от изменения и удаления. Данный параметр позволяет объявить список индексов OpenSearch неизменяемыми. Для указанных индексов подсистема безопасности OpenSearch (Security Compliance) активирует режим immutable_indices: любые операции изменения или удаления документов в таких индексах будут запрещены. Индексы становятся доступны только для записи новых документов и чтения.

      Индекс, указанный в immutableIndices, должен существовать в OpenSearch до применения настройки. Добавление несуществующего индекса не вызывает ошибку, но настройка применится только после создания индекса.

    5. spec.dashboards (тип: object) - конфигурация OpenSearch Dashboards.

    6. spec.dashboards.replicas (тип: int) - количество реплик Dashboards. Должно быть >= 1.

    Для высокодоступного кластера в рекомендуемой конфигурации
    apiVersion: opensearch.nova-platform.io/v1alpha1
    kind: OpenSearchCluster
    metadata:
      name: opensearch-cluster
    spec:
      opensearch: (1)
        replicas: 3 (2)
        config: (3)
          immutableIndices: (4)
            - k8s-audit*
            - security-auditlog*
      dashboards: (5)
        replicas: 3 (6)
    1. spec.opensearch (тип: object) - конфигурация узлов OpenSearch.

    2. spec.opensearch.replicas (тип: int) - количество реплик OpenSearch. Допустимые значения: нечетные числа >= 1. Не может превышать количество инфраструктурных узлов кластера

    3. spec.opensearch.config (тип: object) - Необязателен. Дополнительная конфигурация OpenSearch.

    4. spec.opensearch.config.immutableIndices (тип: []string) - Необязателен. Список индексов, которые будут защищены от изменения и удаления. Данный параметр позволяет объявить список индексов OpenSearch неизменяемыми. Для указанных индексов подсистема безопасности OpenSearch (Security Compliance) активирует режим immutable_indices: любые операции изменения или удаления документов в таких индексах будут запрещены. Индексы становятся доступны только для записи новых документов и чтения.

      Индекс, указанный в immutableIndices, должен существовать в OpenSearch до применения настройки. Добавление несуществующего индекса не вызывает ошибку, но настройка применится только после создания индекса.

    5. spec.dashboards (тип: object) - конфигурация OpenSearch Dashboards.

    6. spec.dashboards.replicas (тип: int) - количество реплик Dashboards. Должно быть >= 1.

  4. Установите манифест в кластер Kubernetes, выполнив команду:

    kubectl apply -f OpenSearch.yaml

  5. Проверьте состояние запущенных компонентов OpenSearch, выполнив команду:

    kubectl get pods -n nova-logs

3. Установка модуля OpenSearch с помощью Nova Console

В текущей версии оператор не поддерживает управление количеством экземпляров fluentd. Если необходимо увеличить их количество, рекомендуется использовать установку через кастомизацию.

Модуль OpenSearch управляется оператором через Custom Resource OpenSearchCluster. Оператор автоматически создает и поддерживает необходимые Flux Kustomization-объекты (nova-release-logs-pre, nova-release-logs-main, nova-release-logs-post) — создавать их вручную не требуется.

Установите модуль OpenSearch через Nova Console OperatorHUB. Для этого выполните следующие шаги.

  1. Установите оператор Nova OpenSearch Operator. В Nova Console в главном меню выберите OperatorsOperatorHUB. Выберите Nova OpenSearch Operator. Нажмите кнопку Установить.

    Заполните поля формы по примеру, представленному на скриншоте.

    opensearch 3

    Подтвердите установку, нажав Установить.

  2. Перейдите в раздел OperatorsУстановленные операторы. Выберите Nova OpenSearch Operator или сразу после установки нажмите Открыть оператор.

  3. Перейдите ко вкладке OpenSearchCluster и нажмите на кнопку Создать OpenSearchCluster.

  4. Заполнить настройки OpenSearch можно двумя способами:

    • С помощью формы

      opensearch 1
      • Имя - имя должно быть уникальным в пределах пространства имен.

      • Количество реплик дашборда - значение должно быть нечетным и соответствовать количеству инфраструктурных узлов.

      • Количество реплик opensearch - значение должно быть нечетным и соответствовать количеству инфраструктурных узлов.

    • С помощью манифеста

      Для кластера в минимальной конфигурации

      Подходит для тестовых и некритичных сред. В составе развертывания — один узел OpenSearch и один экземпляр Dashboards.

      apiVersion: opensearch.nova-platform.io/v1alpha1
      kind: OpenSearchCluster
      metadata:
        name: opensearch-cluster
      spec:
        opensearch: (1)
          replicas: 1 (2)
          config: (3)
            immutableIndices: (4)
              - k8s-audit*
              - security-auditlog*
        dashboards: (5)
          replicas: 1 (6)
      1. spec.opensearch (тип: object) - конфигурация узлов OpenSearch.

      2. spec.opensearch.replicas (тип: int) - количество реплик OpenSearch. Допустимые значения: нечетные числа >= 1. Не может превышать количество инфраструктурных узлов кластера

      3. spec.opensearch.config (тип: object) - Необязателен. Дополнительная конфигурация OpenSearch.

      4. spec.opensearch.config.immutableIndices (тип: []string) - Необязателен. Список индексов, которые будут защищены от изменения и удаления. Данный параметр позволяет объявить список индексов OpenSearch неизменяемыми. Для указанных индексов подсистема безопасности OpenSearch (Security Compliance) активирует режим immutable_indices: любые операции изменения или удаления документов в таких индексах будут запрещены. Индексы становятся доступны только для записи новых документов и чтения.

        Индекс, указанный в immutableIndices, должен существовать в OpenSearch до применения настройки. Добавление несуществующего индекса не вызывает ошибку, но настройка применится только после создания индекса.

      5. spec.dashboards (тип: object) - конфигурация OpenSearch Dashboards.

      6. spec.dashboards.replicas (тип: int) - количество реплик Dashboards. Должно быть >= 1.

      Для высокодоступного кластера в рекомендуемой конфигурации

      Подходит для продуктивных окружений. Три узла OpenSearch образуют кворум, три реплики Dashboards обеспечивают отказоустойчивость.

      Требуется не менее трех инфраструктурных узлов в кластере.

      apiVersion: opensearch.nova-platform.io/v1alpha1
      kind: OpenSearchCluster
      metadata:
        name: opensearch-cluster
      spec:
        opensearch: (1)
          replicas: 3 (2)
          config: (3)
            immutableIndices: (4)
              - k8s-audit*
              - security-auditlog*
        dashboards: (5)
          replicas: 3 (6)
      1. spec.opensearch (тип: object) - конфигурация узлов OpenSearch.

      2. spec.opensearch.replicas (тип: int) - количество реплик OpenSearch. Допустимые значения: нечетные числа >= 1. Не может превышать количество инфраструктурных узлов кластера

      3. spec.opensearch.config (тип: object) - Необязателен. Дополнительная конфигурация OpenSearch.

      4. spec.opensearch.config.immutableIndices (тип: []string) - Необязателен. Список индексов, которые будут защищены от изменения и удаления. Данный параметр позволяет объявить список индексов OpenSearch неизменяемыми. Для указанных индексов подсистема безопасности OpenSearch (Security Compliance) активирует режим immutable_indices: любые операции изменения или удаления документов в таких индексах будут запрещены. Индексы становятся доступны только для записи новых документов и чтения.

        Индекс, указанный в immutableIndices, должен существовать в OpenSearch до применения настройки. Добавление несуществующего индекса не вызывает ошибку, но настройка применится только после создания индекса.

      5. spec.dashboards (тип: object) - конфигурация OpenSearch Dashboards.

      6. spec.dashboards.replicas (тип: int) - количество реплик Dashboards. Должно быть >= 1.

  5. Нажмите Создать. Отслеживайте статус на вкладке OpenSearchCluster на странице оператора.

3.1. Установка через кастомизацию

  1. Скопируйте один из представленных ниже манифестов в буфер обмена.

    Для кластера в минимальной конфигурации
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-pre
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      prune: true
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      dependsOn:
      - name: nova-release-ingress-internal-main
      - name: nova-release-cert-manager-post
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/pre
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
    ---
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-main
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      prune: true
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      dependsOn:
      - name: nova-release-ingress-internal-main
      - name: nova-release-cert-manager-post
      - name: nova-release-logs-pre
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/main
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
      healthChecks:
      - apiVersion: apps/v1
        kind: StatefulSet
        name: nova-logs
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: Deployment
        name: nova-logs-dashboards
        namespace: nova-logs
    ---
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-post
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      prune: true
      dependsOn:
      - name: nova-release-logs-main
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/post
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
      healthChecks:
      - apiVersion: apps/v1
        kind: StatefulSet
        name: nova-logs-logging-fluentd
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-k8s-audit-apiserver-host-tailer-host-tailer
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-node-audit-host-tailer-host-tailer
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-logs-fluentbit-fluentbit
        namespace: nova-logs
    Для высокодоступного кластера в рекомендуемой конфигурации
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-pre
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      prune: true
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      dependsOn:
      - name: nova-release-ingress-internal-main
      - name: nova-release-cert-manager-post
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/pre
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
    ---
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-main
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      prune: true
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      dependsOn:
      - name: nova-release-ingress-internal-main
      - name: nova-release-cert-manager-post
      - name: nova-release-logs-pre
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/main
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
      healthChecks:
      - apiVersion: apps/v1
        kind: StatefulSet
        name: nova-logs
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: Deployment
        name: nova-logs-dashboards
        namespace: nova-logs
      patches:
      - patch: |
          - op: replace
            path: /spec/replicas
            value: 3
        target:
          kind: Deployment
          name: "nova-logs-dashboards"
          namespace: nova-logs
      - patch: |
          - op: replace
            path: /spec/replicas
            value: 3
        target:
          kind: StatefulSet
          name: "nova-logs"
          namespace: nova-logs
      - patch: |
          apiVersion: apps/v1
          kind: StatefulSet
          metadata:
            name: nova-logs
            namespace: nova-logs
          spec:
            template:
              spec:
                containers:
                  - name: "opensearch"
                    env:
                      - name: cluster.initial_master_nodes
                        value: "nova-logs-0,nova-logs-1,nova-logs-2"
    ---
    apiVersion: kustomize.toolkit.fluxcd.io/v1
    kind: Kustomization
    metadata:
      name: nova-release-logs-post
      namespace: nova-gitops
      labels:
        nova-application-group: logging
        kustomization.nova-platform.io/cluster: "true"
    spec:
      patches:
        - patch: |
            apiVersion: logging.banzaicloud.io/v1beta1
            kind: Logging
            metadata:
              name: nova-logs-logging
              namespace: nova-logs
            spec:
              fluentd:
                scaling:
                  replicas: 3
      serviceAccountName: kustomize-controller
      commonMetadata:
        labels:
          app.kubernetes.io/managed-by: Nova
      interval: 10m
      retryInterval: 30s
      timeout: 5m
      prune: true
      dependsOn:
      - name: nova-release-logs-main
      sourceRef:
        kind: GitRepository
        name: nova-release-gitrepo-main
      path: ./resources/opensearch/post
      postBuild:
        substituteFrom:
        - kind: ConfigMap
          name: nova-gitops-common-substitute-config
      healthChecks:
      - apiVersion: apps/v1
        kind: StatefulSet
        name: nova-logs-logging-fluentd
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-k8s-audit-apiserver-host-tailer-host-tailer
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-node-audit-host-tailer-host-tailer
        namespace: nova-logs
      - apiVersion: apps/v1
        kind: DaemonSet
        name: nova-logs-fluentbit-fluentbit
        namespace: nova-logs
  2. Выполните вход в Nova Console.

  3. Используйте опцию импорта нового объекта и вставьте в форму ранее скопированный манифест.

  4. Перейдите на вкладку АдминистрированиеCustomResourceDefinitions. С помощью поиска найдите свой OpenSearchCluster.

    opensearch 4
  5. Перейдите на вкладку Инстансы и нажмите на инстанс.

    opensearch 5
  6. Перейдите на вкладку YAML. Поле status.phase показывает фазу жизненного цикла ресурса.

    opensearch 6

4. Удаление модуля OpenSearch

4.1. Удаление с помощью kubectl

Для полного удаления OpenSearch из кластера Nova выполните следующие команды:

kubectl delete kustomization nova-release-logs-post -n nova-gitops
kubectl delete kustomization nova-release-logs-main -n nova-gitops
kubectl delete kustomization nova-release-logs-pre -n nova-gitops

4.2. Удаление с помощью OperatorHUB

Для полного удаления OpenSearch из кластера Nova выполните следующие шаги.

  1. Перейдите в раздел OperatorsУстановленные операторы. Выберите Nova Opensearch Operator.

  2. Перейдите на вкладку OpenSearchCluster.

  3. Выберите установленный модуль и нажмите Удалить.

    opensearch 2