Kubernetes Labels и Annotations Standard
Единые требования к labels и annotations в инфраструктуре
Kubernetes Labels и Annotations Standard
Документация по стандартам labels и annotations для всех ресурсов Kubernetes в проекте Maniton.
Стандартные Labels (app.kubernetes.io/*)
Все ресурсы должны использовать следующие стандартные labels:
Обязательные Labels
app.kubernetes.io/name: Имя приложения (например,auth,postgresql,kafka)app.kubernetes.io/component: Архитектурная роль компонента:microservice- микросервисы приложенияdatabase- базы данныхcache- кэш (Redis)message-broker- брокер сообщений (Kafka)identity-provider- провайдер идентичности (Keycloak)dlt-node- узел распределенного реестра (Besu)monitoring- компоненты мониторингаlogging- компоненты логирования
app.kubernetes.io/part-of: Имя платформы (maniton-platform)app.kubernetes.io/managed-by: Инструмент управления (kustomize)
Опциональные Labels
app.kubernetes.io/version: Версия приложения (SemVer или Git hash)app.kubernetes.io/instance: Уникальное имя инстанса (для StatefulSets)
Примеры
metadata:
labels:
app: auth
app.kubernetes.io/name: auth
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: maniton-platform
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/version: "1.0.0"Annotations
Рекомендуемые Annotations
kubernetes.io/description: Человекочитаемое описание ресурсаprometheus.io/scrape:"true"для ресурсов, которые должны скрейпиться Prometheusprometheus.io/port: Порт для метрикprometheus.io/path: Путь к эндпоинту метрик
Примеры
metadata:
annotations:
kubernetes.io/description: "Auth service для аутентификации и авторизации пользователей"
prometheus.io/scrape: "true"
prometheus.io/port: "3000"
prometheus.io/path: "/metrics"Структура Labels по компонентам
Микросервисы
app: <service-name>
app.kubernetes.io/name: <service-name>
app.kubernetes.io/component: microservice
app.kubernetes.io/part-of: maniton-platform
app.kubernetes.io/managed-by: kustomizeБазы данных
app: <db-name>
app.kubernetes.io/name: postgresql
app.kubernetes.io/component: database
app.kubernetes.io/part-of: maniton-platform
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/instance: <db-name>Инфраструктура
app: <component-name>
app.kubernetes.io/name: <component-name>
app.kubernetes.io/component: <cache|message-broker|identity-provider>
app.kubernetes.io/part-of: maniton-platform
app.kubernetes.io/managed-by: kustomizeМониторинг
app: <monitoring-component>
app.kubernetes.io/name: <prometheus|grafana|loki|promtail>
app.kubernetes.io/component: <monitoring|logging>
app.kubernetes.io/part-of: maniton-platform
app.kubernetes.io/managed-by: kustomizeBest Practices
- Всегда используйте стандартные labels для лучшей организации и автоматизации
- Добавляйте
kubernetes.io/descriptionдля человекочитаемой документации - Используйте
app.kubernetes.io/managed-byдля указания инструмента управления - Добавляйте версии через
app.kubernetes.io/versionдля отслеживания изменений - Группируйте ресурсы через
app.kubernetes.io/part-ofдля управления платформой - Используйте
app.kubernetes.io/componentдля архитектурной классификации
Проверка Labels
# Проверить labels всех ресурсов
kubectl get all -n maniton --show-labels
# Проверить labels конкретного ресурса
kubectl get deployment auth -n maniton --show-labels
# Фильтрация по label
kubectl get pods -l app.kubernetes.io/component=microservice -n maniton
kubectl get pods -l app.kubernetes.io/part-of=maniton-platform -n maniton