Управлять пространствами имен в проекте
Пространства имен в проекте позволяют организовать ресурсы и обеспечить их изоляцию. Каждый проект может содержать несколько пространств имен.
Перед началом работы
Убедитесь, что:
- У вас есть роль администратора проекта или администратора кластера.
- Проект уже создан. Если нет, создайте проект.
Создать пространство имен
Пространства имен в проекте именуются с обязательным префиксом <имя_проекта>-. Например, для проекта test-project допустимы имена test-project-main, test-project-backend.
-
В левом меню выберите Проекты.
-
Выберите нужный проект из списка.
-
На боковой панели проекта нажмите Пространства имен.
-
Нажмите + Создать пространство имен.
-
Укажите параметры:
- Имя — суффикс имени пространства имен. Префикс
<имя_проекта>-подставляется автоматически. Обязательное поле. - Разрешить удаление — снимите флажок, чтобы защитить пространство имен от случайного удаления. По умолчанию флажок снят.
- Имя — суффикс имени пространства имен. Префикс
-
Нажмите Создать.
Для создания пространства имен используйте ресурс ProjectNamespace. Ресурс создается в служебном пространстве имен проекта project-<имя_проекта>.
-
Создайте файл манифеста, например
namespace.yaml:apiVersion: stackland.yandex.cloud/v1alpha1 kind: ProjectNamespace metadata: namespace: project-team-alpha name: team-alpha-backend spec: template: labels: environment: production annotations: description: "Backend services"Где:
metadata.namespace— служебное пространство имен проекта в форматеproject-<имя_проекта>. Обязательное поле.metadata.name— имя создаваемого пространства имен. Должно начинаться с<имя_проекта>-. Обязательное поле.spec.template.labels— дополнительные метки для пространства имен. Необязательное поле.spec.template.annotations— дополнительные аннотации для пространства имен. Необязательное поле.
-
Примените манифест:
kubectl apply -f namespace.yaml
Stackland автоматически создаст пространство имен team-alpha-backend с меткой stackland.yandex.cloud/project-name: team-alpha.
Альтернативный способ: создание через Namespace
Вы можете создать пространство имен напрямую, указав метку принадлежности к проекту:
apiVersion: v1
kind: Namespace
metadata:
name: team-alpha-backend
labels:
stackland.yandex.cloud/project-name: team-alpha
Примечание
Для создания пространства имен напрямую необходимы права на создание Namespace в кластере. Имя пространства имен должно начинаться с <имя_проекта>-.
Просмотреть пространства имен проекта
- В левом меню выберите Проекты.
- Выберите нужный проект из списка.
- На боковой панели проекта нажмите Пространства имен.
Чтобы получить список пространств имен проекта, выполните команду:
kubectl get namespaces -l stackland.yandex.cloud/project-name=team-alpha
Чтобы получить список ресурсов ProjectNamespace:
kubectl get projectnamespaces -n project-team-alpha
Защита от удаления
По умолчанию пространства имен защищены от удаления. Флажок Разрешить удаление управляет этой защитой:
- Флажок снят — пространство имен защищено от удаления.
- Флажок установлен — пространство имен можно удалить.
Чтобы изменить настройку защиты через консоль управления:
- В левом меню выберите Проекты.
- Выберите нужный проект из списка.
- На боковой панели проекта нажмите Пространства имен.
- Нажмите на имя нужного пространства имен.
- Нажмите Редактировать.
- Установите или снимите флажок Разрешить удаление.
- Нажмите Сохранить.
Чтобы изменить настройку защиты через CLI:
apiVersion: stackland.yandex.cloud/v1alpha1
kind: ProjectNamespace
metadata:
namespace: project-team-alpha
name: team-alpha-backend
spec:
allowDeletion: true
Удалить пространство имен
- В левом меню выберите Проекты.
- Выберите нужный проект из списка.
- На боковой панели проекта нажмите Пространства имен.
- В строке нужного пространства имен нажмите значок ⋯ и выберите Удалить.
- Подтвердите удаление.
-
Отключите защиту от удаления, если она включена:
kubectl patch projectnamespace team-alpha-backend \ -n project-team-alpha \ --type merge \ -p '{"spec":{"allowDeletion":true}}' -
Удалите ресурс
ProjectNamespace:kubectl delete projectnamespace team-alpha-backend -n project-team-alpha
Stackland автоматически удалит связанное пространство имен и все ресурсы внутри него.
Важно
При удалении пространства имен будут удалены все ресурсы внутри него. Эта операция необратима.