Мониторинг 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.
- Перейдите в Kubernetes.
- Выберите Подключиться вручную.
- На странице настроек подключения к кластеру Kubernetes укажите Название, а затем включите Подключить контейнеризованный АктивныйШлюз к локальной конечной точке API Kubernetes.
- Для идентификатора кластера Kubernetes введите полученный ранее UID.
- Выберите Сохранить изменения, чтобы сохранить конфигурацию.
Вы можете сохранить конфигурацию, даже если АктивныйШлюз не готов к подключению, и завершить настройку позже. Чтобы проверить готовность, выберите Проверить конфигурацию.
Подключение к публичному 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 с помощью одного АктивногоШлюза и вам не нужно разделять сети для административного и рабочего трафика, вы можете установить АктивныйШлюз на виртуальную машину с помощью обычного установщика.