Манитон Docs

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" для ресурсов, которые должны скрейпиться Prometheus
  • prometheus.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: kustomize

Best Practices

  1. Всегда используйте стандартные labels для лучшей организации и автоматизации
  2. Добавляйте kubernetes.io/description для человекочитаемой документации
  3. Используйте app.kubernetes.io/managed-by для указания инструмента управления
  4. Добавляйте версии через app.kubernetes.io/version для отслеживания изменений
  5. Группируйте ресурсы через app.kubernetes.io/part-of для управления платформой
  6. Используйте 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

On this page