Мониторинг API Kubernetes

Материал из Документация Ключ-АСТРОМ

Ключ-АСТРОМ получает информацию о сущностях и метаданных Kubernetes, выполняя запросы к API Kubernetes. Эта информация используется для встроенных оповещений Kubernetes и для предоставления всех сигналов наблюдения в соответствующем контексте Kubernetes на платформе Ключ-АСТРОМ, например, путём создания связей между приложениями, (микро)сервисами, базами данных и сущностями Kubernetes, такими как модули, пространства имен и узлы.

Ключ-АСТРОМ Operator управляет жизненным циклом всех компонентов Ключ-АСТРОМ в кластере Kubernetes и может быть настроен путем развертывания пользовательского ресурса DynaKube. Ключ-АСТРОМ АктивныйШлюз — компонент Ключ-АСТРОМ, необходимый для мониторинга API Kubernetes — предоставляет возможность мониторинга API Kubernetes.

Чтобы включить мониторинг API Kubernetes, выполните следующие действия ниже.

Установка Ключ-АСТРОМ Operator

Установите Ключ-АСТРОМ Operator в любом режиме развертывания

Настройка DynaKube

Настройте значения АктивногоШлюза DynaKube в соответствии со списком параметров и добавьте kubernetes-monitoring возможности АктивногоШлюза.

...

activeGate:

  capabilities:

    - routing

    - kubernetes-monitoring

  ...

Подключение АктивногоШлюза к API Kubernetes

У вас есть два варианта:

  • Подключите контейнеризованный АктивныйШлюз к локальной конечной точке API Kubernetes.
  • Подключите контейнеризованный АктивныйШлюз к общедоступному URL-адресу API Kubernetes.

Инструкции для обоих вариантов смотрите ниже.

Подключение к локальной конечной точке API Kubernetes

Вы можете включить мониторинг, подключив контейнеризованный АктивныйШлюз к локальной конечной точке API Kubernetes.

Существует два способа подключения к локальной конечной точке API Kubernetes:

  • рекомендуется Позвольте Ключ-АСТРОМ Operator автоматически обрабатывать соединение (включен по умолчанию, начиная с версии Ключ-АСТРОМ Operator 0.13.0).
  • Настройте соединение вручную

Подробности ручного метода см. ниже.

Настройка соединение вручную

Для ручного подключения к локальной конечной точке API Kubernetes достаточно указать уникальный идентификатор кластера Kubernetes (uuid пространства имён kube-system). Затем контейнеризованный АктивныйШлюз идентифицирует этот уникальный идентификатор кластера и отправляет его в Ключ-АСТРОМ.

Получите идентификатор кластера Kubernetes

Выполните команду ниже и извлеките UID из выходных данных.

Kubernetes OpenShift
kubectl get namespace kube-system -o jsonpath='{.metadata.uid}' oc get namespace kube-system -o jsonpath='{.metadata.uid}'
Укажите идентификатор кластера Kubernetes в astromkey.
  1. Перейдите в Kubernetes.
  2. Выберите Подключиться вручную.
  3. На странице настроек подключения к кластеру Kubernetes укажите Название, а затем включите Подключить контейнеризованный АктивныйШлюз к локальной конечной точке API Kubernetes.
  4. Для идентификатора кластера Kubernetes введите полученный ранее UID.
  5. Выберите Сохранить изменения, чтобы сохранить конфигурацию.

Вы можете сохранить конфигурацию, даже если АктивныйШлюз не готов к подключению, и завершить настройку позже. Чтобы проверить готовность, выберите Проверить конфигурацию.

Подключение к публичному API Kubernetes

Чтобы подключиться к публичному API Kubernetes, следуйте инструкциям, относящимся к вашей версии Kubernetes:

  • Kubernetes версии 1.24+
  • Версия Kubernetes ниже 1.24

Kubernetes версии 1.24+

1. Получите URL-адрес API Kubernetes.

Kubernetes OpenShift
kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}' oc config view --minify -o jsonpath='{.clusters[0].cluster.server}'

Если вы установили enableIstio на true в пользовательском ресурсе DynaKube, используйте следующую команду для получения URL-адреса API Kubernetes:

Kubernetes OpenShift
kubectl -n default get svc/kubernetes -o jsonpath='https://{.spec.clusterIP}' oc -n default get svc/kubernetes -o jsonpath='https://{.spec.clusterIP}'

2. Создайте файл token-secret.yaml со следующим содержимым:

apiVersion: v1

kind: Secret

metadata:

  name: astromkey-kubernetes-monitoring

  annotations:

    kubernetes.io/service-account.name: "astromkey-kubernetes-monitoring"

type: kubernetes.io/service-account-token

3. Примените файл для создания секрета astromkey-kubernetes-monitoring.

Kubernetes OpenShift
kubectl apply -n astromkey -f token-secret.yaml oc apply -n astromkey -f token-secret.yaml

4. Получите токен на предъявителя.

Kubernetes OpenShift
kubectl get secret astromkey-kubernetes-monitoring -o jsonpath='{.data.token}' -n astromkey | base64 --decode oc get secret astromkey-kubernetes-monitoring -o jsonpath='{.data.token}' -n astromkey | base64 --decode

5. Перейдите в Kubernetes и выберите Подключиться вручную.

6. На странице настроек подключения к кластеру Kubernetes укажите Имя, URL-адрес API Kubernetes и токен носителя для кластера Kubernetes.

7. Выберите Сохранить изменения.

Версия Kubernetes ниже 1.24

1. Получите URL-адрес API Kubernetes.

Kubernetes OpenShift
kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}' oc config view --minify -o jsonpath='{.clusters[0].cluster.server}'

Если вы установили enableIstio на true в пользовательском ресурсе DynaKube, используйте следующую команду для получения URL-адреса API Kubernetes:

Kubernetes OpenShift
kubectl -n default get svc/kubernetes -o jsonpath='https://{.spec.clusterIP}' oc -n default get svc/kubernetes -o jsonpath='https://{.spec.clusterIP}'

2. Получите токен на предъявителя.

Kubernetes OpenShift v3.x OpenShift v4.x
kubectl get secret $(kubectl get sa astromkey-kubernetes-monitoring -o jsonpath='{.secrets[0].name}' -n astromkey) -o jsonpath='{.data.token}' -n astromkey | base64 --decode oc get secret $(oc get sa astromkey-kubernetes-monitoring -o jsonpath='{.secrets[0].name}' -n astromkey) -o jsonpath='{.data.token}' -n astromkey | base64 --decode oc get secret $(oc get sa astromkey-kubernetes-monitoring -o jsonpath='{.secrets[1].name}' -n astromkey) -o jsonpath='{.data.token}' -n astromkey | base64 --decode

3. Перейдите в Kubernetes и выберите Подключиться вручную.

4. На странице настроек подключения к кластеру Kubernetes укажите Название, URL-адрес API Kubernetes и токен носителя для кластера Kubernetes.

Для дистрибутивов Rancher вам понадобится токен-носитель, созданный в веб-интерфейсе Rancher, как описано в разделе «Специальные инструкции для дистрибутивов Rancher», чтобы получить URL-адрес API и токен-носитель выше.

5. Выберите Сохранить изменения.

Специальные инструкции для дистрибутивов Rancher по получению URL-адреса API и токена носителя

Для дистрибутивов Kubernetes через Rancher необходимо использовать токен-носитель и URL-адрес API сервера Rancher, поскольку этот сервер управляет трафиком к серверу Kubernetes API и обеспечивает его защиту. Выполните следующие действия.

1. Получите URL-адрес API Kubernetes.

kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}'

2. Настройте пользователя.

В веб-интерфейсе Rancher создайте нового пользователя или используйте существующего для привязки к токену. Мы рекомендуем создать нового пользователя.

3. Установите разрешения.

Убедитесь, что у пользователя есть разрешения владельца или пользователя для кластера, который вы хотите отслеживать.

Рекомендуется: выберите Пользовательские разрешения и обязательно выберите следующие две роли: Просмотр всех проектов и Просмотр узлов.

4.Создайте ключ API.

Перейдите в раздел «API и ключи» и создайте ключ либо для вашей учётной записи (введите имя кластера), либо для всех кластеров (введите «Без области действия»). В целях безопасности мы рекомендуем выбрать первый вариант.

Вновь созданные ключи содержат четыре поля. Обязательно используйте содержимое поля Bearer token для настройки подключения к Kubernetes API, описанного в следующем разделе.

Другие варианты

  • Если вы не можете использовать Ключ-АСТРОМ Operator, вы можете развернуть АктивныйШлюз напрямую как StatefulSet (не рекомендуется).
  • Если вы хотите контролировать несколько кластеров Kubernetes с помощью одного АктивногоШлюза и вам не нужно разделять сети для административного и рабочего трафика, вы можете установить АктивныйШлюз на виртуальную машину с помощью обычного установщика.