Установка дополнительных компонентов#

Перечень сценариев установки дополнительных компонентов:

Примечание

В данном разделе приводятся сценарии установки дополнительных компонентов с настройками инструментов по умолчанию. Дополнительные настройки инструментов приведены в разделе «Конфигурации инструментов дополнительных компонентов».

Alerting#

Компонент Alerting устанавливает инструмент Alertmanager, который отвечает за отправку уведомлений настроенных событий кластера по адресатам настроенным для Alertmanager.

Для установки компонента Alerting:

  1. Создайте файл component-alerting.yaml:

    component-alerting.yaml
    apiVersion: config.dropapp.ru/v1alpha1
    kind: Component
    metadata:
      name: alerting
    
  2. Примените файл:

    ./kubectl apply -f component-alerting.yaml
    
  3. Дождитесь статуса success для инструмента Alertmanager:

    ./kubectl get tool alertmanager
    

    Вывод команды покажет установленный по умолчанию инструмент и его версию:

    NAME           STATUS    AGE   COMPONENT
    alertmanager   success   9s    alerting
    
  4. Ресурсы Alertmanager созданы автоматически в namespace dapp-alerting, проверьте pods:

    ./kubectl get all -n dapp-alerting
    

    Вывод команды покажет список установленных ресурсов и их версии:

    NAME                 READY   STATUS    RESTARTS   AGE
    pod/alertmanager-0   2/2     Running   0          66s
    
    NAME                            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
    service/alertmanager            ClusterIP   00.00.00.000   <none>        9093/TCP   66s
    service/alertmanager-headless   ClusterIP   None           <none>        9093/TCP   66s
    
    NAME                            READY   AGE
    statefulset.apps/alertmanager   1/1     66s
    

Logging#

Компонент Logging устанавливает инструменты Vector-agent и Vector-aggregator.

Для установки компонента Logging:

  1. Создайте файл component-logging.yaml:

    component-logging.yaml
    apiVersion: config.dropapp.ru/v1alpha1
    kind: Component
    metadata:
      name: logging
    
  2. Примените файл:

    ./kubectl apply -f component-logging.yaml
    
  3. Дождитесь статуса success для инструмента Vector-agent и Vector-aggregator:

    ./kubectl get tools -o wide | grep logging
    

    Вывод команды покажет список установленных по умолчанию инструментов и их версии:

    NAME                         STATUS    RETRY     AGE   VERSION            DAPP VERSION   COMPONENT
    vector-agent                 success   0         11m   <tool-version>     <version>      logging
    vector-aggregator            success   0         11m   <tool-version>     <version>      logging
    
  4. Ресурсы Logging созданы автоматически в namespace dapp-logging, проверьте pods:

    ./kubectl get pods -n dapp-logging
    

    Вывод команды покажет список установленных ресурсов и их версии:

    NAME                       READY   STATUS    RESTARTS   AGE
    vector-agent-g87th    1/1     Running   0          11m
    vector-agent-gmw67    1/1     Running   0          11m
    vector-agent-zhs6l    1/1     Running   0          11m
    vector-aggregator-0   1/1     Running   0          11m
    vector-aggregator-1   1/1     Running   0          11m
    

Security#

Компонент Security устанавливает инструмент Gatekeeper, который реализует функции безопасности настроек в кластере.

Для установки компонента Security:

  1. Создайте файл component-security.yaml, укажите в нем логин и пароль для реестра, в котором лежит база данных Trivy:

    component-security.yaml
    apiVersion: config.dropapp.ru/v1alpha1
    kind: Component
    metadata:
      name: security
    
  2. Примените файл:

    ./kubectl apply -f component-security.yaml
    
  3. Дождитесь статуса success для инструмента Gatekeeper:

    ./kubectl get tools -o wide | grep security
    

    Вывод команды покажет установленный по умолчанию инструмент и его версию:

    NAME                         STATUS    RETRY     AGE   VERSION            DAPP VERSION   COMPONENT
    gatekeeper                   success   0         15s   <tool-version>     <version>      security
    
  4. Ресурсы Security созданы автоматически в namespace dapp-security, проверьте pods:

    ./kubectl get pods -n dapp-security
    

    Вывод команды покажет список установленных ресурсов и их версии:

    NAME                                             READY   STATUS      RESTARTS      AGE
    gatekeeper-audit-7565f7dc86-f55nj                1/1     Running     0             2m
    gatekeeper-controller-manager-6566c97597-l99kn   1/1     Running     0             2m
    gatekeeper-controller-manager-6566c97597-xt6sh   1/1     Running     0             2m
    

Monitoring#

Компонент Monitoring устанавливает инструменты Grafana, Victoria-metrics-operator, Console-dashboards, Kube-state-metrics, Prometheus-node-exporter, Metrics-server, Victoria-metrics-k8s-stack, которые реализуют функции мониторинга и наблюдаемости в кластере.

Для установки компонента Monitoring:

  1. Создайте файл component-monitoring.yaml:

    component-monitoring.yaml
    apiVersion: config.dropapp.ru/v1alpha1
    kind: Component
    metadata:
      name: monitoring
    
  2. Примените файл:

    ./kubectl apply -f component-monitoring.yaml
    
  3. Дождитесь статуса success для инструментов Grafana, Victoria-metrics-operator, Console-dashboards, Kube-state-metrics, Prometheus-node-exporter, Metrics-server, Victoria-metrics-k8s-stack:

    ./kubectl get tools -o wide | grep monitoring
    

    Вывод команды покажет список установленных по умолчанию инструментов и их версии:

    NAME                         STATUS    RETRY     AGE   VERSION            DAPP VERSION   COMPONENT
    console-dashboards           success     0       56s   <tool-version>     <version>      monitoring
    grafana                      success     0       56s   <tool-version>     <version>      monitoring
    kube-state-metrics           success     0       46s   <tool-version>     <version>      monitoring
    metrics-server               success     0       36s   <tool-version>     <version>      monitoring
    prometheus-node-exporter     success     0       46s   <tool-version>     <version>      monitoring
    victoria-metrics-k8s-stack   success     0       26s   <tool-version>     <version>      monitoring
    victoria-metrics-operator    success     0       66s   <tool-version>     <version>      monitoring
    
  4. Ресурсы Monitoring созданы автоматически в namespace dapp-monitoring, проверьте pods:

    ./kubectl get pods -n dapp-monitoring
    

    Вывод команды покажет список установленных ресурсов и их версии:

    NAME                                                   READY   STATUS    RESTARTS   AGE
    grafana-86b6dc67fd-9vk2l                               1/1     Running   0          108s
    kube-state-metrics-779cc7f75d-bmswf                    1/1     Running   0          109s
    metrics-server-d46d68bd-6vgjm                          1/1     Running   0          97s
    prometheus-node-exporter-9f84q                         1/1     Running   0          109s
    prometheus-node-exporter-bmv9q                         1/1     Running   0          109s
    prometheus-node-exporter-hvgz7                         1/1     Running   0          109s
    prometheus-node-exporter-jld9q                         1/1     Running   0          110s
    prometheus-node-exporter-nrp8t                         1/1     Running   0          110s
    prometheus-node-exporter-tj472                         1/1     Running   0          110s
    victoria-metrics-operator-5dc4c77bc7-28dzn             1/1     Running   0          2m6s
    vmagent-victoria-metrics-k8s-stack-567d9f8497-mz54b    2/2     Running   0          77s
    vmalert-victoria-metrics-k8s-stack-848d7655d8-r292r    2/2     Running   0          76s
    vminsert-victoria-metrics-k8s-stack-857469cd74-5f2f8   1/1     Running   0          22s
    vminsert-victoria-metrics-k8s-stack-857469cd74-nwfvr   1/1     Running   0          22s
    vmselect-victoria-metrics-k8s-stack-0                  1/1     Running   0          52s
    vmselect-victoria-metrics-k8s-stack-1                  1/1     Running   0          52s
    vmstorage-victoria-metrics-k8s-stack-0                 1/1     Running   0          78s
    vmstorage-victoria-metrics-k8s-stack-1                 1/1     Running   0          78s
    

Grafana доступна по адресу https://grafana.<clusterName>.<publicDomain>. По умолчанию в Grafana можно авторизоваться от имени пользователя kubeadmin так же, как в Console.

В Grafana предустановлены панели (dashboards), позволяющие следить за состоянием кластера DropApp:

Состояние кластера DropApp

GitOps#

Компонент GitOps устанавливает инструмент Argocd.

Для установки компонента GitOps:

  1. Создайте файл component-gitops.yaml:

    component-gitops.yaml
    apiVersion: config.dropapp.ru/v1alpha1
    kind: Component
    metadata:
      name: gitops
    
  2. Примените файл:

    ./kubectl apply -f component-gitops.yaml
    
  3. Дождитесь статуса success для инструмента Argocd:

    ./kubectl get tools -o wide | grep gitops
    

    Вывод команды покажет установленный по умолчанию инструмент и его версию:

    NAME                         STATUS    RETRY     AGE   VERSION              DAPP VERSION   COMPONENT
    argocd                       success     0       13m   <tool-version>       <version>      gitops
    
  4. Ресурсы GitOps созданы автоматически в namespace dapp-gitops, проверьте pods:

    ./kubectl get pods -n dapp-gitops
    

    Вывод команды покажет список установленных ресурсов и их версии:

    NAME                                                   READY   STATUS    RESTARTS   AGE
    argocd-application-controller-0                        1/1     Running   0          12m
    argocd-applicationset-controller-d7b66fbf8-fqhfh       1/1     Running   0          12m
    argocd-notifications-controller-588b8cbfb8-cv8vd       1/1     Running   0          12m
    argocd-redis-59f7ffbfd5-4bczm                          1/1     Running   0          12m
    argocd-repo-server-6478d5988f-v44jx                    1/1     Running   0          12m
    argocd-server-f95c59778-7zc5m                          1/1     Running   0          12m
    

Argocd доступен по адресу https://argocd.<clusterName>.<publicDomain>. По умолчанию в Argocd можно авторизоваться от имени пользователя kubeadmin так же, как в Console.

DevOps#

Компонент DevOps устанавливает инструменты Argo-workflows, Argo-rollouts и Argo-events.

Для установки компонента DevOps:

  1. Создайте файл component-devops.yaml:

    component-devops.yaml
    apiVersion: config.dropapp.ru/v1alpha1
    kind: Component
    metadata:
      name: devops
    
  2. Примените файл:

    ./kubectl apply -f component-devops.yaml
    
  3. Дождитесь статуса success для инструментов Argo-workflows, Argo-rollouts и Argo-events:

    ./kubectl get tools -o wide | grep devops
    

    Вывод команды покажет список установленных по умолчанию инструментов и их версии:

    NAME                         STATUS    RETRY     AGE   VERSION               DAPP VERSION   COMPONENT
    argo-events                  success     0       16m   <tool-version>        <version>      devops
    argo-rollouts                success     0       16m   <tool-version>        <version>      devops
    argo-workflows               success     0       17m   <tool-version>        <version>      devops
    
  4. Ресурсы DevOps созданы автоматически в namespace dapp-devops, проверьте pods:

    ./kubectl get pods -n dapp-devops
    

    Вывод команды покажет список установленных ресурсов и их версии:

    NAME                                                   READY   STATUS    RESTARTS   AGE
    argo-events-controller-manager-6c6fb79cd-qq8hk         1/1     Running   0          17m
    argo-rollouts-7c4f4c5b86-pt5tb                         1/1     Running   0          17m
    argo-rollouts-7c4f4c5b86-trcz4                         1/1     Running   0          17m
    argo-workflows-server-85d867486-5qrtq                  1/1     Running   0          18m
    argo-workflows-workflow-controller-f7fdcddd7-4tnrv     1/1     Running   0          18m
    

Argo-workflows доступен по адресу https://argowf.<clusterName>.<publicDomain>. По умолчанию в Argo-workflows можно авторизоваться от имени пользователя kubeadmin так же, как в Console.

AIOps#

Компонент AIOps устанавливает инструменты K8sGPT и K8sGPT-operator.

Для установки компонента AIOps:

  1. Создайте файл component-aiops.yaml:

    component-aiops.yaml
    apiVersion: config.dropapp.ru/v1alpha1
    kind: Component
    metadata:
      name: aiops
    
  2. Примените файл:

    ./kubectl apply -f component-aiops.yaml
    
  3. Дождитесь статуса success для инструментов K8sGPT и K8sGPT-operator:

    ./kubectl get tools -o wide | grep gitops
    

    Вывод команды покажет установленный по умолчанию инструмент и его версию:

    NAME                         STATUS    RETRY   AGE   VERSION            DAPP VERSION   COMPONENT
    k8sgpt                       success   0       7d    <tool-version>     <version>      aiops
    k8sgpt-operator              success   0       7d    <tool-version>     <version>      aiops
    
  4. Ресурсы AIOps созданы автоматически в namespace dapp-aiops, проверьте pods:

    ./kubectl get pods -n dapp-aiops
    

    Вывод команды покажет список установленных ресурсов и их версии:

    NAME                                                   READY   STATUS    RESTARTS   AGE
    k8sgpt-operator-controller-manager-7b8465449f-79bqp    2/2     Running   0          7d
    

    После установки в выводе будет только K8sGPT-operator.

Чтобы запустить pods K8sGPT необходимо создать секрет с API-токеном для какой-либо LLM и настроить инструмент K8sGPT.

  1. Создайте секрет (для примера API-токен: 32345345detertfdgdg):

    kubectl create secret generic dapp-sre-ai-agent-secret --from-literal=ai-api-key=32345345detertfdgdg -n dapp-aiops
    
  2. Настройте инструмент K8sGPT (например, для Openrouter):

    apiVersion: config.dropapp.ru/v1alpha1
    kind: Tool
    metadata:
      name: k8sgpt
    spec:
      values:
        ai:
          model: qwen/qwen3-235b-a22b
          baseUrl: https://openrouter.ai/api/v1
          secret:
            name: dapp-sre-ai-agent-secret
            key: ai-api-key
    
  3. K8sGPT инструмент анализа состояния кластера с использованием искусственного интеллекта и предоставляет объекты Result. Извлеките все объекты типа Result во всех namespace (флаг -A — all namespaces) в формате JSON:

    kubectl get results -A -o json | jq .
    

    Пример вывода:

    Результат запуска pods для анализа состояния кластера
    {
      "apiVersion": "v1",
      "items": [
        {
          "apiVersion": "core.k8sgpt.ai/v1alpha1",
          "kind": "Result",
          ...
          "spec": {
            "backend": "localai",
            "details": "Error: StatefulSet ссылается на несуществующий сервис  \nSolution:  \n1. Проверьте существование сервиса: kubectl get svc  \n2. Создайте Headless-сервис с clusterIP: None  \n3. Убедитесь, что serviceName в StatefulSet совпадает с именем сервиса  \n4. Примените изменения: kubectl apply -f <манifest>",
            "error": [
              {
                ...
                ],
                "text": "StatefulSet uses the service dapp-gitops/argocd-application-controller which does not exist."
              }
          // Обнаружена ошибка: StatefulSet ссылается на отсутствующий сервис.
          // Включены рекомендации по проверке и исправлению.
            ],
            "kind": "StatefulSet",
            "name": "dapp-gitops/argocd-application-controller",
            "parentObject": ""
          },
          "status": {}
        },
        {
          "apiVersion": "core.k8sgpt.ai/v1alpha1",
          "kind": "Result",
          ....
          "spec": {
            "backend": "localai",
            "details": "Error: Service lacks endpoints due to mismatched/base64-encoded label selector.  \nSolution: 1. Check service's label selector. 2. Decode 'kubevirt.io=' and 'virt-exportproxy' using base64. 3. Ensure pods match decoded labels. 4. Update selector/pod labels. 5. Restart service/pods.",
            "error": [
              {
                ...
                "text": "Service has no endpoints, expected label kubevirt.io=virt-exportproxy"
              }
            ],
            "kind": "Service",
            "name": "kubevirt-hyperconverged/virt-exportproxy",
            "parentObject": ""
          },
          // Обнаружена ошибка: Сервис не имеет endpoints из-за несоответствия селектора меток.
          // Рекомендации включают проверку и корректировку селектора и перезапуск сервисов.
          "status": {}
        }
      ],
      ...
    }