Назад | Перейти на главную страницу

В чем разница между проектом объектов и пространством имен в Openshift 4.x

В openshift 4.x у вас есть API для project который кажется полностью похожим на namespace в том смысле, что когда вы создаете проект, создается пространство имен и наоборот. Я знаю namespace - стандартный объект в кубернетах, а проект специфичен для Openshift. Так что же project приносит?

# list projects
oc get projects                                                      
NAME                                                    DISPLAY NAME   STATUS
default                                                                Active
kube-node-lease                                                        Active
kube-public                                                            Active
kube-system                                                            Active
local-storage                                                          Active
openshift                                                              Active
openshift-apiserver                                                    Active

# list namespaces
$ oc get ns
NAME                                                    STATUS   AGE
default                                                 Active   17d
kube-node-lease                                         Active   17d
kube-public                                             Active   17d
kube-system                                             Active   17d
local-storage                                           Active   16d
openshift                                               Active   17d
openshift-apiserver                                     Active   17d
openshift-apiserver-operator                            Active   17d

Список тот же, за исключением разных столбцов

oc get project foo
Error from server (NotFound): namespaces "foo" not found
oc get ns foo
Error from server (NotFound): namespaces "foo" not found

15:30 $ oc new-project foo                          
Now using project "foo" on server "https://api.goo.tadadidou.bo:6443".
...       
$ oc get project foo
NAME   DISPLAY NAME   STATUS
foo                   Active
$ oc get ns foo
NAME   STATUS   AGE
foo    Active   70s

Даже вывод yaml похож, за исключением значения поля Kind: что либо Project или Namespace.

По сути, проект аналогичен пространству имен, но OpenShift предоставляет дополнительные административные средства управления проектами.

Если вы развертываете программное обеспечение на OpenShift, вы в основном будете использовать проект точно так же, как пространство имен Kubernetes, за исключением того, что обычному пользователю может быть запрещено создавать свои собственные проекты, для чего требуется администратор кластера. (Похоже, что ваш кластер позволяет вам создавать свои собственные проекты, или вы используете персональный кластер, такой как CodeReady Containers или его предшественник Minishift.)

Из документы:

В OpenShift проекты - это единица изоляции и сотрудничества. В проекте есть один или несколько участников, квота на ресурсы, которые проект может потреблять, и средства управления безопасностью ресурсов в проекте. В рамках проекта участники могут иметь разные роли - администраторы проекта могут устанавливать членство, редакторы могут создавать ресурсы и управлять ими, а зрители могут видеть, но не иметь доступа к работающим контейнерам. В обычном кластерном проекте администраторы не могут изменять свои квоты - это разрешено администраторам кластера.

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

Проект OpenShift - это альтернативное представление пространства имен Kubernetes. Проекты доступны для редактирования конечным пользователям, а пространства имен - нет. Непосредственное создание проекта обычно разрешено администраторам, а конечные пользователи должны использовать ресурс requestproject.