Доступно только в Enterprise Edition.
Находится в процессе активного развития. Функциональность может существенно измениться.

Шаблоны для проектов доступные по умолчанию

Deckhouse Kubernetes Platform включает следующий набор шаблонов для создания проектов:

  • default — шаблон для базовых сценариев использования проектов:
    • ограничение ресурсов;
    • сетевая изоляция;
    • автоматические алерты и сбор логов;
    • выбор профиля безопасности;
    • настройка администраторов проекта.
  • secure — включает все возможности шаблона default, а также дополнительные функции:
    • настройку допустимых для проекта UID/GID;
    • правила аудита обращения Linux-пользователей проекта к ядру;
    • сканирование запускаемых образов контейнеров на наличие известных уязвимостей (CVE).
  • secure-with-dedicated-nodes — включает все возможности шаблона secure, а также дополнительные функции:
    • определение селектора узла для всех подов в проекте: если под создан, селектор узла пода будет автоматически заменён на селектор узла проекта;
    • определение стандартных tolerations для всех подов в проекте: если под создан, стандартные значения tolerations добавляются к нему автоматически.

Чтобы перечислить все доступные параметры для шаблона проекта, выполните команду:

1kubectl get projecttemplates <ИМЯ_ШАБЛОНА_ПРОЕКТА> -o jsonpath='{.spec.parametersSchema.openAPIV3Schema}' | jq

Создание проекта

  1. Для создания проекта создайте ресурс Project с указанием имени шаблона проекта в поле .spec.projectTemplateName.
  2. В параметре .spec.parameters ресурса Project укажите значения параметров для секции .spec.parametersSchema.openAPIV3Schema ресурса ProjectTemplate.

    Пример создания проекта с помощью ресурса Project из default ProjectTemplate представлен ниже:

    1apiVersion: deckhouse.io/v1alpha2
    2kind: Project
    3metadata:
    4  name: my-project
    5spec:
    6  description: This is an example from the Deckhouse documentation.
    7  projectTemplateName: default
    8  parameters:
    9    resourceQuota:
    10      requests:
    11        cpu: 5
    12        memory: 5Gi
    13        storage: 1Gi
    14      limits:
    15        cpu: 5
    16        memory: 5Gi
    17    networkPolicy: Isolated
    18    podSecurityProfile: Restricted
    19    extendedMonitoringEnabled: true
    20    administrators:
    21    - subject: Group
    22      name: k8s-admins
    
  3. Для проверки статуса проекта выполните команду:

    1kubectl get projects my-project
    

    Успешно созданный проект должен отображаться в статусе Sync (синхронизирован). Если отображается статус Error (ошибка), добавьте аргумент -o yaml к команде (например, kubectl get projects my-project -o yaml) для получения более подробной информации о причине ошибки.

Создание собственного шаблона для проекта

Шаблоны проектов по умолчанию включают базовые сценарии использования и служат примером возможностей шаблонов.

Для создания своего шаблона:

  1. Возьмите за основу один из шаблонов по умолчанию, например, default.
  2. Скопируйте его в отдельный файл, например, my-project-template.yaml при помощи команды:

    1kubectl get projecttemplates default -o yaml > my-project-template.yaml
    
  3. Отредактируйте файл my-project-template.yaml, внесите в него необходимые изменения.

    Необходимо изменить не только шаблон, но и схему входных параметров под него.

    Шаблоны для проектов поддерживают все функции шаблонизации Helm.

  4. Измените имя шаблона в поле .metadata.name.
  5. Примените полученный шаблон командой:

    1kubectl apply -f my-project-template.yaml
    
  6. Проверьте доступность нового шаблона с помощью команды:

    1kubectl get projecttemplates <ИМЯ_НОВОГО_ШАБЛОНА>