OpenShift - запуск контейнеров с правами root в minishift

Я хочу запустить контейнер в minishift из Docker Hub, как описано в этом article. Поскольку образ в Docker Hub работает как root, а OpenShift не позволяет запускать контейнеры с правами root, я использую эту команду, чтобы переопределить это ограничение. Я вошел в систему как system:admin.

oc adm policy add-scc-to-user anyuid -z default

Однако я продолжаю получать эту ошибку:

Error from server (NotFound): the server could not find the requested resource

Во-первых, неясно, какой ресурс отсутствует. Во-вторых, применимо ли вообще переопределение в minishift? anyuid SCC действительно существует.

oc get scc
NAME               KIND
anyuid             SecurityContextConstraints.v1.security.openshift.io
hostaccess         SecurityContextConstraints.v1.security.openshift.io
hostmount-anyuid   SecurityContextConstraints.v1.security.openshift.io
hostnetwork        SecurityContextConstraints.v1.security.openshift.io
nonroot            SecurityContextConstraints.v1.security.openshift.io
privileged         SecurityContextConstraints.v1.security.openshift.io
restricted         SecurityContextConstraints.v1.security.openshift.io

person cogitoergosum    schedule 02.10.2019    source источник
comment
Что вы получите за oc get sa в этом пространстве имен? А в каком пространстве имен вы работаете?   -  person Graham Dumpleton    schedule 02.10.2019
comment
Под пространством имен вы имеете в виду имя проекта для oc project? Я установил его для проекта, который будет содержать образ контейнера Docker. И в этом пространстве имен oc get sa показывает имена как builder, default и deployer.   -  person cogitoergosum    schedule 02.10.2019
comment
Запустите команду oc adm policy с --loglevel 9 и посмотрите, при каком запросе она не работает.   -  person Graham Dumpleton    schedule 02.10.2019
comment
У пользователя system нет доступа. При использовании admin user команда oc adm policy add-scc-to-user anyuid -z default --loglevel 9 производит следующий вывод: pastebin.com/LFtNJmfA   -  person cogitoergosum    schedule 02.10.2019
comment
Как именно вы входите в систему как администратор кластера. Minishift примет любое имя пользователя и пароль, поэтому, если вы делаете это неправильно, вы можете войти в систему как обычный пользователь. Обычно это делается как developer пользователь запускает oc adm policy add-scc-to-user anyuid -z default --as system:admin. То есть используйте --as для олицетворения.   -  person Graham Dumpleton    schedule 02.10.2019
comment
Выполнил ваши инструкции на --as; та же ошибка: Error from server (NotFound): the server could not find the requested resource.   -  person cogitoergosum    schedule 02.10.2019
comment
У вас определенно есть подходящая oc версия клиента для кластерной версии? Что вы получите за oc version? Эта команда должна работать, поэтому, если это не так, это либо несоответствие клиента, либо что-то испорченное в установке Minishift. А что вы получите за oc whoami?   -  person Graham Dumpleton    schedule 02.10.2019
comment
Давайте продолжим это обсуждение в чате.   -  person cogitoergosum    schedule 02.10.2019
comment
Обратите внимание, что последняя версия Minishift предназначена для OpenShift 3.11 (Kubernetes 1.11). Если у вас более старая версия, вам необходимо обновить ее.   -  person Graham Dumpleton    schedule 02.10.2019
comment
@GrahamDumpleton Я переустановил oc с помощью brew. Теперь я могу установить разрешение! Пожалуйста, добавьте это как ответ, чтобы я мог согласиться. Спасибо!   -  person cogitoergosum    schedule 03.10.2019


Ответы (1)


Вам необходимо войти в систему как system:admin, которую вы получите от главных узлов (пользователь root).

(Если вы хотите выполнять административные операции удаленно, вы можете назначить роль администратора кластера отдельному пользователю, используя приведенную ниже команду с главных узлов oc adm policy add-cluster-role-to-user cluster-admin <user>)

Сначала создайте в проекте ServiceAccount (SA).

oc project <project>
oc create sa nfs-sa

Добавьте ограничения контекста безопасности в SA.

oc adm policy add-scc-to-user privileged -z nfs-sa

Затем укажите serviceaccount в конфигурации deploymentconfig / pod в разделе spec.

serviceAccount: nfs-sa
serviceAccountName: nfs-sa

Спасибо.

person Arockiasmy K    schedule 02.10.2019