Настройка Fluent Bit для работы с Yandex Cloud Logging
Важно
Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.
Примечание
Включить отправку логов мастера Managed Service for Kubernetes в Cloud Logging можно с помощью настройки master logging
при создании или изменении кластера. Настройка доступна только через API, CLI и Terraform. Подробнее см. в руководстве Передача логов кластера Managed Service for Kubernetes в Cloud Logging.
Обработчик логов Fluent Bit
Чтобы настроить передачу логов подов и сервисов Yandex Managed Service for Kubernetes в Yandex Cloud Logging:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Если у вас еще нет сети, создайте ее.
-
Если у вас еще нет подсетей, создайте их в зонах доступности, где будут созданы кластер Managed Service for Kubernetes и группа узлов.
-
- Сервисный аккаунт для ресурсов Managed Service for Kubernetes с ролью editor на каталог, в котором создается кластер Managed Service for Kubernetes.
- Сервисный аккаунт для узлов Managed Service for Kubernetes с ролью container-registry.images.puller на каталог с реестром Docker-образов. От его имени узлы Managed Service for Kubernetes будут скачивать из реестра необходимые Docker-образы.
Совет
Вы можете использовать один и тот же сервисный аккаунт для обеих операций.
-
Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
Создайте кластер Managed Service for Kubernetes и группу узлов. При создании кластера Managed Service for Kubernetes укажите ранее созданные сервисные аккаунты для ресурсов и узлов и группы безопасности.
-
Если у вас еще нет Terraform, установите его.
-
Скачайте файл с настройками провайдера
. Поместите его в отдельную рабочую директорию и укажите значения параметров. -
Скачайте в ту же рабочую директорию файл конфигурации кластера Managed Service for Kubernetes k8s-cluster-with-log-group.tf
.В этом файле описаны:
-
Сеть.
-
Лог-группа Cloud Logging.
-
Кластер Managed Service for Kubernetes.
-
Группа узлов Managed Service for Kubernetes.
-
Сервисный аккаунт для ресурсов и узлов Managed Service for Kubernetes.
-
Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
-
Укажите в файле конфигурации:
- Идентификатор каталога.
- Версию Kubernetes для кластера Managed Service for Kubernetes и групп узлов.
- Имя сервисного аккаунта для ресурсов и узлов Managed Service for Kubernetes.
- Имя лог-группы Cloud Logging.
-
Выполните команду
terraform init
в директории с конфигурационными файлами. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Установите и настройте Fluent Bit
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Создайте объекты, необходимые для работы Fluent Bit:
kubectl create namespace logging && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-service-account.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-1.22.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-binding-1.22.yaml
-
Создайте секрет, содержащий ключ сервисного аккаунта:
kubectl create secret generic secret-key-json \ --from-file=key.json \ --namespace logging
-
Скачайте конфигурационный файл
config.yaml
:wget https://raw.githubusercontent.com/knpsh/yc-logging-fluent-bit-example/main/config.yaml
-
Укажите параметры трансляции логов в блоке
data.output-elasticsearch.conf
файлаconfig.yaml
:... output-elasticsearch.conf: | [OUTPUT] Name yc-logging Match * group_id <идентификатор_лог-группы> resource_id <опционально_идентификатор_кластера> message_key log endpoint api.yandexcloud.kz:443 authorization iam-key-file:/etc/secret/key.json ...
Идентификатор лог-группы можно получить со списком лог-групп в каталоге.
При необходимости укажите дополнительные настройки
Fluent Bit. -
Создайте объекты Fluent Bit:
kubectl apply -f config.yaml
Результат:
configmap/fluent-bit-config created daemonset.apps/fluent-bit created
-
Убедитесь, что под Fluent Bit перешел в состояние
Running
:kubectl get pods -n logging
Проверьте результат
Проверьте передачу логов подов и сервисов Managed Service for Kubernetes в лог-группу Cloud Logging.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите кластер Managed Service for Kubernetes.
- Если вы зарезервировали для кластера Managed Service for Kubernetes статический публичный IP-адрес, освободите и удалите его.
- Удалите созданные подсети и сети.
- Удалите созданные сервисные аккаунты.
- Удалите лог-группу.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-