Аннотации в Kubernetes
Вы можете использовать аннотации Kubernetes для прикрепления произвольных неидентифицирующих метаданных к объектам. Клиенты, такие как инструменты и библиотеки, могут извлечь эти метаданные.
Прикрепление метаданных к объектам
Вы можете использовать метки (labels) или аннотации для прикрепления метаданных к объектам Kubernetes. Метки можно использовать для выбора объектов и для поиска коллекций объектов, которые удовлетворяют определенным условиям. Аннотации, напротив, не используются для идентификации и выбора объектов. Метаданные в аннотации могут быть маленькими или большими, структурированными или неструктурированными и могут включать символы, не разрешенные метками.
Аннотации, как и метки, являются картами ключ/значение:
"metadata": {
"annotations": {
"key1" : "value1",
"key2" : "value2"
}
}
Вот несколько примеров информации, которая может быть записана в аннотациях:
- Поля, управляемые декларативным уровнем конфигурации. Присоединение этих полей в качестве аннотаций отличает их от значений по умолчанию, установленных клиентами или серверами, и от автоматически сгенерированных полей и полей, устанавливаемых системами автоматического изменения размера или автоматического масштабирования.
- Информация о сборке, релизе или образе, такие как метки времени, идентификаторы релиза, ветка git, PR номера, хеши образов и адрес реестра (registry).
- Указатели на журналирование, мониторинг, аналитику или аудит репозиториев.
- Информация о клиентской библиотеке или инструменте, которая может использоваться для целей отладки: например, имя, версия и информация о сборке.
- Информация о происхождении пользователя или инструмента/системы, такая как URL-адреса связанных объектов из других компонентов экосистемы.
- Легкие метаданные инструмента развертывания: например, config или контрольные точки.
- Номера телефонов или пейджеров ответственных лиц или записи в справочнике, в которых указывается, где можно найти эту информацию, например на веб-сайте команды.
- Директивы от конечного пользователя к реализациям для изменения поведения или использования нестандартных функций.
Вместо того, чтобы использовать аннотации, вы могли бы хранить этот тип информации во внешней базе данных или каталоге, но это усложнило бы создание общих клиентских библиотек и инструментов для развертывания, управления, самоанализа и тому подобного.
Синтаксис и набор символов
Аннотации представляют собой пары ключ/значение. Допустимые ключи аннотации имеют два сегмента: необязательный префикс и имя, разделенные косой чертой (/). Сегмент имени является обязательным и должен состоять из 63 символов или менее, начиная с буквенно-цифрового символа ([a-z0-9A-Z]) и заканчивая дефисами (-), символами подчеркивания (_), точками (.) и буквенно-цифровыми символами между ними. Префикс является необязательным. Если указан, префикс должен быть субдоменом DNS: набор меток DNS, разделенных точками (.), всего не более 253 символов, за которыми следует косая черта (/).
Если префикс пропущен, ключ аннотации считается закрытым для пользователя. Компоненты автоматизированной системы (например, kube-scheduler, kube-controller-manager, kube-apiserver, kubectl или другая сторонняя автоматизация), которые добавляют аннотации к объектам конечного пользователя, должны указывать префикс.
Префиксы kubernetes.io/ и k8s.io/ зарезервированы для основных компонентов Kubernetes.
Например, вот файл конфигурации для модуля Pod с аннотацией imageregistry: https://hub.docker.com/
:
apiVersion: v1
kind: Pod
metadata:
name: annotations-demo
annotations:
imageregistry: "https://hub.docker.com/"
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Читайте также:
- Метки (labels) в Kubernetes
- Селекторы меток (label selectors) в Kubernetes
- Пространства имен (namespaces) в Kubernetes
Комментарии
Отправить комментарий