Этот раздел метаданных состоит из нескольких ключей верхнего уровня.
Метаданные предоставляют информацию о содержимом объекта.
Атрибут | Тип | Требуется | Значение по умолчанию | Описание |
---|---|---|---|---|
name |
string |
Y | Имя схемы. name подчиняется ограничениям, перечисленным под этой таблицей. |
|
labels |
map[string]string |
N | Набор пар ключ/значение строки, используемых в качестве произвольных меток для этого компонента. См. раздел «Формат метки» сразу ниже. | |
annotations |
map[string]string |
N | Набор пар ключ/значение строки, используемый в качестве произвольного описательного текста, связанного с этим объектом. См. раздел «Формат аннотаций» сразу ниже. |
name
Комбинация группы, вида и имени должна быть уникальной. Два разных вида (например, компонент и признак) могут иметь одно и то же имя и не вызывать конфликтов. Версия не является отличительным фактором.
Хорошо: Каждый вид допускает имя foo
.
apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
name: foo
---
apiVersion: core.oam.dev/v1alpha2
kind: Trait
metadata:
name: foo
Хорошо: Каждая группа (one.dev
и other.dev
) допускает вид Component
с именем foo
.
apiVersion: one.dev/v1alpha2
kind: Component
metadata:
name: foo
---
apiVersion: other.dev/v1alpha2
kind: Component
metadata:
name: foo
Нехорошо: Версия не является пространством имён.
apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
name: foo
---
apiVersion: core.oam.dev/v1
kind: Component
metadata:
name: foo
Поле name
должно быть отформатировано следующим образом:
Сегмент имени обязателен и должен содержать 63 символа или меньше, начинаться и заканчиваться буквенно-цифровым символом ([a-z0-9A-Z]) с дефисами (-), подчёркиваниями (_), точками (.) и буквенно-цифровые символы между ними.
Если не указано иное, имена должны быть уникальными в пределах группы/версии/вида.
Метки соответствуют спецификации Kubernetes для маркировки:
Допустимые ключи меток имеют два сегмента: необязательный префикс и имя, разделённые косой чертой (/). Сегмент имени является обязательным и должен содержать 63 символа или менее, начинаться и заканчиваться буквенно-цифровыми символами ([a-z0-9A-Z]), с дефисами (-), подчеркиваниями (_) и точками (.), а также буквенно-цифровыми символами между ними. Префикс является необязательным. Если он указан, префикс должен быть поддоменом DNS: серия меток DNS, разделённых точками (.), не более 253 символов в общей сложности, за которыми следует косая черта (/).
Аннотации предоставляют механизм прикрепления произвольного текста к метаданным объекта. Объект аннотаций соответствует спецификации Kubernetes:
Аннотации представляют собой пары ключ/значение. Допустимые ключи аннотаций имеют два сегмента: необязательный префикс и имя, разделенные косой чертой (/). Сегмент имени является обязательным и должен содержать 63 символа или менее, начинаться и заканчиваться буквенно-цифровыми символами ([a-z0-9A-Z]), с дефисами (-), подчеркиваниями (_) и точками (.), а также буквенно-цифровыми символами между ними. Префикс является необязательным. Если он указан, префикс должен быть поддоменом DNS: серия меток DNS, разделённых точками (.), не более 253 символов в общей сложности, за которыми следует косая черта (/).
Следующие метки аннотаций являются предопределёнными и РЕКОМЕНДУЕМЫМИ.
Атрибут | Тип | Требуется | Значение по умолчанию | Описание |
---|---|---|---|---|
description |
string |
N | Краткое описание компонента. | |
version |
string |
N | Пользовательская строка, определяющая семантическую версию компонента, например, версия выпуска этого программного обеспечения. |
Если version
не указана, предполагается, что по умолчанию используется версия 0.1.0
, согласно спецификации SemVer.
Пример:
metadata:
name: alpine-task
labels:
app: my-app-v1 # Не нормативный пример
annotations: **Версия: «1.0.1»**
**Описание**: Задача, поддерживаемая файловой системой Alpine Linux.
Раздел метаданных используется во всех схемах. Он также совместим с разделом метаданных Kubernetes. Обратите внимание, однако, что метаданные Kubernetes являются надмножеством метаданных OAM и содержат атрибуты, которые OAM не распознаёт.
## Группа, версия и вид
Многие API-объекты, описанные в этом документе, используют схему именования, называемую «Группа, Версия, Вид». Эта схема, популяризированная Kubernetes, обеспечивает последовательный способ пространства имён и управления версиями API-объектов и используется здесь для управления версиями объектов OAM API.
В этом разделе описывается схема.
### Группа
Группа — это пространство имён для сбора нескольких связанных видов. Группы используют соглашение об именах DNS. Примерами групп являются:
* components.oam.dev;
* functions.azure.com;
* my.dev.
Все группы в домене oam.dev считаются зарезервированными для объектов OAM. И все объекты, указанные здесь, принадлежат группам в этом домене.
Группа ДОЛЖНА быть уникальной в глобальном масштабе.
### Версия
Строка версии — это версия API. Следуя общей парадигме, API-интерфейсы версионируются только по основному номеру. Второстепенные и патч-номера опущены из версий API. Фактические второстепенные и патч-версии базовых механизмов могут повторяться, но они ДОЛЖНЫ повторять эту версию при любом критическом изменении. Другими словами, основной номер служит гарантией совместимости, и второстепенные и патч-числа не должны изменять эту гарантию. Поэтому потребители API не могут указать более тонкую детализацию, чем основная версия.
Номер версии API всегда начинается с префикса v, за которым следуют одна или несколько цифр.
Примеры:
* v1;
* v2;
* v973.
Есть два дополнительных модификатора, которые являются частью основного номера версии:
1. alphaN (где N — одна или несколько цифр) указывает, что эта функция является экспериментальной и может быть удалена, но её текущий маркер совместимости равен 1.
2. betaN (где N — одна или несколько цифр), указывает, что эта функция ещё не стабильна. N является маркером совместимости.
Версии API, помеченные как alpha или beta, считаются нестабильными и подвержены критическим изменениям.
Можно применять только один из двух модификаторов одновременно:
* v1alpha1;
* v973beta231.
Совместимость устанавливается только точным соответствием. v1 не считается совместимым с v2, v1alpha1 или v1beta2.
У версий нет требования уникальности.
### Вид
Вид — это имя типа. Например, вид компонента — Component, а вид признака — Trait. Виды всегда состоят из слов, где первая буква заглавная, а первая буква каждого слова заглавная. Виды ДОЛЖНЫ использовать заглавные буквы для каждого символа аббревиатуры (например, HTTP, а не Http).
Виды ДОЛЖНЫ быть уникальными в пределах группы.
### Представления группы/версии/вида
Полное представление группы/версии/вида — GROUP/VERSION.KIND. Вот несколько примеров:
* local.dev/v7alpha2.Proxy;
* cache.example.com/v1.Redis;
* azure.com/v2.Functions.
На схемах группа и версия представлены в одном поле, а вид — в другом:
```yaml
apiVersion: local.dev/v7alpha2
kind: Proxy
В редких случаях необходимо связать группу и вид, но без указания версии. Это делается, например, при объявлении рабочей нагрузки по умолчанию. Как правило, такое поведение НЕ РЕКОМЕНДУЕТСЯ, но когда это необходимо, эта спецификация следует шаблону Kubernetes построения имени DNS из множественного имени вида и группы:
Proxies.local.dev # разрешено, но не рекомендуется
Эта форма не принимается в качестве альтернативы полностью квалифицированной версии. Она принимается только в тех случаях, когда модель явно заявляет, что такая форма принята.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )