Fleet — инструмент управления кластерами¶
Fleet — программное обеспечение с открытым исходным кодом для централизованного управления конфигурацией и развёртыванием приложений на больших парках машин, в первую очередь серверов и edge-устройств. Разрабатывается компанией Rancher Labs (ныне часть SUSE) и тесно интегрировано с Kubernetes. Инструкция по работе с Fleet описывает установку контроллера, подключение кластеров, создание Git-репозиториев с манифестами и механизм непрерывной доставки (GitOps).
¶Назначение и принцип работы
Fleet решает задачу управления множеством кластеров Kubernetes из единой точки. Вместо того чтобы вручную применять манифесты к каждому кластеру, администратор описывает желаемое состояние в Git-репозитории, а Fleet автоматически синхронизирует его со всеми подключёнными кластерами.
Ключевая идея — модель GitOps: Git выступает единственным источником истины. Изменения в репозитории (коммиты) становятся триггером для развёртывания. Fleet отслеживает состояние и приводит кластеры к заданной конфигурации, сообщая о расхождениях.
Основные компоненты:
- fleet-controller — центральный компонент, работающий на управляющем кластере; хранит ресурсы GitRepo, Bundle и ClusterRegistration.
- fleet-agent — агент, устанавливаемый в каждом управляемом кластере; получает задания и применяет манифесты.
- fleet-manager — вспомогательный компонент для регистрации кластеров.
¶Установка
Типовая инструкция начинается с установки Fleet на управляющий кластер. Наиболее распространённый способ — через Helm:
`` helm repo add fleet https://rancher.github.io/fleet-helm-charts/ helm repo update helm install fleet-crd fleet/fleet-crd -n cattle-fleet-system --create-namespace helm install fleet fleet/fleet -n cattle-fleet-system ``
Альтернативно Fleet устанавливается вместе с Rancher, где он входит в стандартную поставку. После установки проверяют статус подов в пространстве имён cattle-fleet-system.
¶Регистрация кластеров
Чтобы подключить управляемый кластер, необходимо развернуть в нём агент и создать объект регистрации. Инструкция предполагает два сценария:
- Кластер под управлением Rancher — регистрация происходит автоматически при добавлении кластера в Rancher.
- Внешний кластер — используется команда
fleet-agentили манифест ClusterRegistrationToken, после чего агент устанавливается через полученный манифест.
После регистрации кластер получает метки, по которым в дальнейшем таргетируются развёртывания.
¶Создание GitRepo
Центральный объект в инструкции — ресурс GitRepo. Он описывает репозиторий и правила распространения содержимого:
``` apiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: my-app namespace: fleet-default spec: repo: https://github.com/example/manifests branch: main paths:
- apps
targets:
- clusterSelector:
matchLabels: env: production ```
Поле repo задаёт адрес, branch — ветку, paths — подкаталоги с манифестами, targets — кластеры-получатели. Fleet периодически опрашивает репозиторий (по умолчанию раз в 15 секунд) и при изменениях пересобирает бандлы.
¶Бандлы и таргетинг
На основе GitRepo Fleet формирует Bundle — сгруппированный набор ресурсов. Бандлы распространяются по кластерам согласно селекторам. Инструкция рекомендует использовать метки кластеров (matchLabels) и выражения (matchExpressions) для гибкого таргетинга, например развёртывания на все кластеры с меткой region=eu.
Поддерживаются также helm-бандлы: если в репозитории лежит чарт, Fleet разворачивает его как Helm-релиз.
¶Мониторинг и отладка
Инструкция по эксплуатации включает проверку состояния:
kubectl get gitrepos -A— список репозиториев и их статус;kubectl get bundles -A— состояние бандлов;kubectl get clusterregistrationtokens -A— токены регистрации.
При ошибках смотрят логи контроллера и агента. Частая причина сбоев — неверные права доступа к репозиторию или несовпадение меток таргетинга.
¶Применение
Fleet применяется для:
- массового развёртывания приложений в десятках и сотнях кластеров;
- управления edge-устройствами с ограниченными ресурсами (например, в составе Rancher Fleet для K3s);
- реализации GitOps-процессов без внешних CI/CD-систем.
¶Ограничения
Fleet ориентирован прежде всего на Kubernetes. Для управления «голыми» серверами без Kubernetes он не предназначен. Кроме того, при большом числе кластеров возрастает нагрузка на управляющий кластер, что требует масштабирования контроллера.
IRONLIVE — база данных и аналитика по компаниям России.
На главную IRONLIVE →