В этом разделе описывается модель компонента.
Компоненты описывают функциональные единицы, которые могут быть созданы как часть более крупного распределённого приложения. В разделе 7. Приложение будет описано, как компоненты группируются вместе и как затем настраиваются экземпляры этих компонентов, в то время как этот раздел будет посвящён самой модели компонента.
Роль сущности ComponentDefinition
заключается в том, чтобы позволить поставщикам компонентов объявлять в инфраструктурно-нейтральном формате характеристики выполнения такой единицы исполнения.
Например, каждый микросервис в приложении описывается как компонент. Обратите внимание, что сам ComponentDefinition
НЕ является экземпляром этого микросервиса, а представляет собой объявление настраиваемых атрибутов этого микросервиса. Эти настраиваемые атрибуты должны быть представлены в виде списка параметров, которые позволяют команде приложения устанавливать и создавать экземпляр этого компонента позже во время развёртывания.
На практике в качестве компонента можно смоделировать простую контейнерную рабочую нагрузку, диаграмму Helm или облачную базу данных.
Здесь приведены атрибуты, предоставляющие информацию верхнего уровня о определении компонента.
Атрибут | Тип | Требуется | Значение по умолчанию | Описание |
---|---|---|---|---|
apiVersion |
string |
Да | Строка, которая идентифицирует версию схемы, которую должен иметь объект. Основные типы используют core.oam.dev/v1beta1 в этой версии модели |
|
kind |
string |
Да | Должно быть ComponentDefinition
|
|
metadata |
Metadata |
Да | Метаданные объекта. | |
spec |
Spec |
Да | Спецификация для определения компонента. |
Атрибут | Тип | Требуется | Значение по умолчанию | Описание |
---|---|---|---|---|
workload |
WorkloadTypeDescriptor |
Да | Идентификатор типа рабочей нагрузки этого компонента. | |
schematic |
Schematic | Да | Схематическая информация для этого компонента. |
Атрибут | Тип | Требуется | Значение по умолчанию | Описание |
---|---|---|---|---|
type |
string |
Да | Ссылка на WorkloadDefinition через имя. |
|
definition |
WorkloadGVK | Да | Взаимоисключающий с type , ссылка на WorkloadDefinition через группу, версию и вид. |
Атрибут | Тип | Требуется | Значение по умолчанию | Описание |
---|---|---|---|---|
apiVersion |
string |
Да | Версия API типа рабочей нагрузки. | |
kind |
string |
Да | Вид API типа рабочей нагрузки. |
Этот раздел объявляет схематическое представление компонента, который может быть создан как часть приложения в последующем рабочем процессе развёртывания. Обратите внимание, что OAM сам по себе не обеспечивает соблюдение того, как реализовать схематическое изображение, при условии, что оно может:
В настоящее время в KubeVela поддерживаются следующие реализации схем (cue, helm, kube).
Ниже приведён полный пример определения компонента CUE с именем webserver
:
[| {
name: context.name
image: parameter.image }|] // дополнительный шаблон outputs: service: {
apiVersion: "v1"
kind: "Service"
spec: {
selector: {
"app.oam.dev/component": context.name
}
ports: [
{
port: parameter.port
targetPort: parameter.port
},
]
}
} parameter: {
image: string
cmd?: [...string]
port: *80 | int
env?: [...{
name: string
value?: string
valueFrom?: {
secretKeyRef: {
name: string
key: string
}
}
}]
cpu?: string
} После установки веб-сервера на платформе пользователь сможет развернуть этот компонент в приложении следующим образом: Примеры других схемных форматов:if parameter["cmd"] != _|_ {
command: parameter.cmd
}
if parameter["env"] != _|_ {
env: parameter.env
}
if context["config"] != _|_ {
env: context.config
}
ports: [{
containerPort: parameter.port
}]
if parameter["cpu"] != _|_ {
resources: {
limits:
cpu: parameter.cpu
requests:
cpu: parameter.cpu
}
}
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: webserver-demo
spec:
components:
- name: hello-world
type: webserver # заявка на развертывание определения компонента веб-сервера
properties: # установка значений параметров
image: crccheck/hello-world
port: 8000 # этот порт будет автоматически открыт для общественности
env:
- name: "foo"
value: "bar"
cpu: "100m"
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )