Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Router
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Managed Service for YDB
    • SpeechKit
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • Container Registry
    • Managed Service for Prometheus®
    • Message Queue
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Cloud Apps
    • Yandex AI Studio
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Yandex Cloud Video
    • Stackland
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • DataSphere
    • Vision OCR
    • Translate
    • Cloud Registry
    • SmartCaptcha
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Managed Service for GitLab
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • IoT Core
    • Serverless Containers
    • Cloud Notification Service
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
  • Кейсы
  • Документация
  • Блог
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Cloud Stackland
  • Что нового
  • Установка
    • Все руководства
    • Установить Stackland на Yandex BareMetal
    • Установка Stackland на Yandex BareMetal через PXE
    • Установка Stackland на виртуальные машины в Yandex Cloud
    • Настройка внешнего доступа к поду в кластере
    • Проверка подписи собственных образов
    • Все инструкции
    • Проекты
    • Ресурсная модель
    • Масштабирование кластера
    • Лицензирование
  • Управление доступом
  • Правила тарификации
  • Диагностика и устранение неполадок
    • Все рецепты
      • Проектирование модели доступов
      • Подготовка проекта и пространств имен команды
      • Настройка прав в IAM
      • Настройка квот

В этой статье:

  • Ресурсная модель Stackland
  • Ограничения
  • Ограничения мультитенантности
  • Ограничения проектов
  • Создание проекта и пространств имен
  • Проекты и ProjectNamespace
  • Создание проекта
  • Создание пространств имен в проекте
  • Проверка результата
  • Итоги
  1. Сборник рецептов администратора Stackland
  2. Запуск команды разработки в инсталляцию
  3. Подготовка проекта и пространств имен команды

Подготовка проекта и пространств имен команды

Статья создана
Yandex Cloud
Открыть в Markdown
  • Ресурсная модель Stackland
  • Ограничения
    • Ограничения мультитенантности
    • Ограничения проектов
  • Создание проекта и пространств имен
    • Проекты и ProjectNamespace
    • Создание проекта
    • Создание пространств имен в проекте
    • Проверка результата
  • Итоги

Этот рецепт покажет, как создать проект team-alpha, а внутри него два пространства имен: team-alpha-dev — для разработки и team-alpha-prod — для промышленной эксплуатации. Также вы узнаете об ограничениях, которые определяют, как именовать и размещать ресурсы команды.

Ресурсная модель StacklandРесурсная модель Stackland

Прежде чем переходить к созданию проекта, мы покажем, что он из себя представляет и где находится в общей модели ресурсов. Stackland использует трехуровневую иерархию:

Уровень

Описание

Пример

Кластер (Cluster)

Корневая сущность. Управление узлами, компонентами, федерациями

Весь кластер Stackland

Проект (Project)

Логическая группировка пространств имен для команды или приложения

team-alpha

Пространство имен (Namespace)

Стандартная единица изоляции ресурсов Kubernetes®

team-alpha-dev, team-alpha-prod

Проект объединяет несколько пространств имен под единым управлением. Это удобно для:

  • организации окружений разработки (dev, staging, production);

  • разделения микросервисов одного приложения;

  • управления ресурсами команды или отдела.

Подробнее — в статье Ресурсная модель.

ОграниченияОграничения

Ограничения мультитенантностиОграничения мультитенантности

Проекты Stackland не обеспечивают полную изоляцию по умолчанию. Проекты — это логическая группировка ресурсов. Для Stackland действуют те же правила мультитенантности, что и для обычного Kubernetes.

Примечание

Подробнее о мультитенантности в Kubernetes — в официальной документации Kubernetes.

  • Сетевая изоляция. В стандартной конфигурации все поды в кластере могут свободно общаться друг с другом, независимо от того, в каком они проекте или пространстве имен. Чтобы ограничить трафик между подами в разных проектах, нужно вручную создавать сетевые политики (NetworkPolicy), которые действуют как сетевой фаервол. Подробнее о сетевых политиках — в документации Kubernetes.

  • Ресурсная изоляция. Пространства имен и проекты не предотвращают влияние соседних («шумных») приложений друг на друга. Чтобы предотвратить ситуацию, когда приложения одной команды потребляют все ресурсы кластера, необходимо настраивать квоты. Процесс настройки описан в рецепте Настройка квот.

  • Изоляция на уровне узлов. По умолчанию поды из разных проектов могут быть размещены на одном узле. Для выделения узлов конкретному тенанту нужно использовать nodeSelector, taints и tolerations. Подробнее — в документации Kubernetes.

Ограничения проектовОграничения проектов

Эти ограничения определяют правила именования и размещения проектов и пространств имен:

  • Именование пространств имен. Все пространства имен внутри проекта должны начинаться с префикса <имя_проекта>-. Например, для проекта team-alpha допустимы: team-alpha-dev, team-alpha-backend.

  • Зарезервированные префиксы. Имена пространств имен не могут начинаться с stackland- или project- — эти префиксы зарезервированы для системных нужд.

  • Одно пространство имен — один проект. Каждое пространство имен принадлежит строго одному проекту, переносить его между проектами нельзя.

  • Пространства имен без проекта. Пространства имен, созданные без явного указания проекта, автоматически попадают в проект default. Для этих пространств имен необязателен префикс.

  • Распространение доступа. Роль, назначенная на уровне проекта, действует во всех его пространствах имен.

  • Системные проекты. Проекты default и stackland нельзя удалить.

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

Проекты и ProjectNamespaceПроекты и ProjectNamespace

В Stackland проект представлен двумя сущностями:

  1. Ресурс Project (CRD projects.stackland.yandex.cloud) — описывает проект, его имя и настройки.

  2. Ресурс ProjectNamespace (CRD projectnamespaces.stackland.yandex.cloud) — связывает проект с конкретным пространством имен Kubernetes. Создается в служебном пространстве имен project-<имя_проекта>.

Схема работы:

Схема проекта в Stackland

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

Проект можно создать двумя способами: через консоль управления Stackland или через CLI.

Консоль управления
CLI
  1. В левом меню выберите Проекты.

  2. В правом верхнем углу нажмите + Создать.

  3. В разделе Основные параметры укажите:

    • Имя — имя проекта. В нашем примере — team-alpha. Имя должно быть уникальным в рамках кластера. Обязательное поле.

    • Название (displayName) — отображаемое имя проекта в интерфейсе. Необязательное поле.

    • Описание — краткое описание назначения проекта. Необязательное поле.

  4. Значения в разделе Квоты на этом этапе оставьте без изменений.

  5. Нажмите Создать.

Страница создания проекта в консоли управления

После создания проекта Stackland автоматически создаст служебное пространство имен project-<имя_проекта>. В нем будут размещаться ресурсы управления проектом.

Для создания проекта используйте ресурс Project:

  1. Создайте файл манифеста, например project.yaml:

    apiVersion: stackland.yandex.cloud/v1alpha1
    kind: Project
    metadata:
      name: team-alpha
    spec:
      displayName: "Team Alpha"
      description: "Проект команды Alpha"
    

    Где:

    • metadata.name — имя проекта. Укажите team-alpha. Должно быть уникальным в рамках кластера. Обязательное поле.

    • spec.displayName — отображаемое имя проекта. Необязательное поле.

    • spec.description — описание проекта. Необязательное поле.

  2. Примените манифест:

    kubectl apply -f project.yaml
    

    После создания проекта Stackland автоматически создаст служебное пространство имен project-<имя_проекта>. В нем будут размещаться ресурсы управления проектом.

  3. Проверьте создание служебного пространства имен:

    kubectl get ns | grep 'team-alpha'
    project-team-alpha              Active   8m55s
    

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

В этом рецепте мы предлагаем создать два пространства имен в проекте team-alpha: team-alpha-dev и team-alpha-prod. Создайте одно через консоль управления, а второе — с помощью CLI.

Консоль управленияКонсоль управления

  1. В левом меню выберите Проекты.

  2. Выберите из списка проектов team-alpha.

  3. На боковой панели проекта нажмите Пространства имен.

  4. Нажмите + Создать пространство имен.

  5. Укажите параметры:

    • Имя — суффикс имени пространства имен dev. Префикс team-alpha- подставляется автоматически. Обязательное поле.

    • Разрешить удаление — флажок, определяющий возможность удаления пространства имен. По умолчанию флажок снят. Вы можете оставить любой вариант.

  6. Нажмите Создать.

Страница создания пространства имен в консоли управления

CLICLI

Для создания пространства имен используйте ресурс ProjectNamespace. Ресурс создается в служебном пространстве имен проекта project-<имя_проекта>.

  1. Создайте файл манифеста, например namespace.yaml:

    apiVersion: stackland.yandex.cloud/v1alpha1
    kind: ProjectNamespace
    metadata:
      namespace: project-team-alpha
      name: team-alpha-prod
    spec:
      allowDeletion: false
      template:
        labels:
          environment: production
        annotations:
          description: "Production environment"
    

    Где:

    • metadata.namespace — служебное пространство имен проекта в формате project-<имя_проекта>. Укажите project-team-alpha. Обязательное поле.

    • metadata.name — имя создаваемого пространства имен. Должно начинаться с <имя_проекта>-. Обязательное поле.

    • spec.allowDeletion — разрешить или запретить удаление этого ресурса и связанного пространства имен.

    • spec.template.labels — дополнительные метки для пространства имен. Необязательное поле.

    • spec.template.annotations — дополнительные аннотации для пространства имен. Необязательное поле.

  2. Примените манифест:

    kubectl apply -f namespace.yaml
    

Stackland автоматически создаст пространство имен team-alpha-backend с меткой stackland.yandex.cloud/project-name: team-alpha.

Проверка результатаПроверка результата

После создания проекта и пространств имен выполните проверку:

  1. Проверьте список проектов:

    kubectl get projects
    NAME         DISPLAY NAME               PHASE    AGE
    default      Default Project            Active   7d3h
    stackland    Stackland System Project   Active   7d3h
    team-alpha   Team Alpha                 Active   28m
    
  2. Проверьте список ProjectNamespace в служебном пространстве имен:

    kubectl get projectnamespaces -n project-team-alpha
    NAME              PHASE    ALLOW DELETION   AGE
    team-alpha-dev    Active   false            11m
    team-alpha-prod   Active   false            4m1s
    
  3. Проверьте, что пользовательские пространства имен созданы:

    kubectl get namespaces | grep team-alpha
    project-team-alpha              Active   29m
    team-alpha-dev                  Active   12m
    team-alpha-prod                 Active   4m26s
    

ИтогиИтоги

Вы создали проект и пространства имен для команды разработки. Вот что стоит запомнить:

  • В Stackland трехуровневая иерархия ресурсов: кластер содержит проекты, проекты объединяют пространства имен.

  • Все пространства имен внутри проекта должны начинаться с префикса <имя_проекта>-. Префиксы stackland- и project- зарезервированы системой.

  • Каждое пространство имен принадлежит строго одному проекту, и переносить его между проектами после создания нельзя.

  • Проекты default и stackland являются системными и не подлежат удалению, а пространства имен без явного указания проекта автоматически попадают в default.

  • Проект описывается ресурсом Project, а связь с конкретным пространством имен Kubernetes устанавливается через ресурс ProjectNamespace.

Была ли статья полезна?

Предыдущая
Проектирование модели доступов
Следующая
Настройка прав в IAM
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»