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

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

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

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

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

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

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

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

  1. Для установки модуля OpenSearch в Nova Container Platform используйте один из представленных далее манифестов:

    Для кластера в минимальной конфигурации
    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:
                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:
      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. Установите модуль OpenSearch через kubectl или Nova Console, используя один из представленных выше манифестов.

    Установка с помощью kubectl
    1. Сохраните один из представленных выше манифестов в файл, например, OpenSearch.yaml.

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

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

      kubectl get pods -n nova-logs
    4. Проверьте состояние Cluster Kustomizations, выполнив команду:

      kubectl get ks -l nova-application-group=logging -n nova-gitops
    Установка с помощью Nova Console
    1. Скопируйте один из представленных выше манифестов в буфер обмена.

    2. Выполните вход в Nova Console.

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

    4. Перейдите в раздел Workloads  Pods и выберите Namespace nova-logs. Проверьте состояние запущенных компонентов OpenSearch.

    5. Перейдите в раздел Administration  Cluster Settings, на вкладке Configuration выберите Cluster Kustomizations. Проверьте состояние Cluster Kustomizations с именем nova-release-logs.

      cluster kust