如何在开始构建之前授予容器 root 权限(serviceaccount)
How to give a container root permission (serviceaccount) before starting the build
Openshift 不允许 运行 容器作为 root,但您可以通过创建服务帐户来做到这一点:
oc adm policy add-scc-to-user anyuid -z useroot
然后修补部署配置,这将因此部署具有新更改的新复制控制器版本,是否可以创建服务帐户并将其包含在以下命令中:
oc new-app --name=test --docker-image=myregistry.com/test:latest
并在上述命令中包含服务帐户名称,以避免拥有新版本的应用程序,或者是否有任何其他可能性预见到此 root 权限错误并将 pod 的安全性降低到 运行作为 root 无需修补或重新部署应用程序
Will 和 Graham 已经为您提供了很好的评论,
所以我建议它们的其他实用细节如下。
如果您在 oc new-app
之前将 anyuid
scc
授予 default
ServiceAccount
,test
pods 将会运行 为 root
权限,无需更改版本。
# oc adm policy add-scc-to-user anyuid -z default
# oc new-app --name=test --docker-image=myregistry.com/test:latest
# oc rollout history dc/test
deploymentconfigs "test"
REVISION STATUS CAUSE
1 Complete config change
# oc rsh dc/test id
uid=0(root) gid=0(root) groups=0(root)
或
如果需要指定自定义ServiceAccount
名称,可以提取oc new-app
yaml,添加serviceAccountName: useroot
元素后创建资源。这些步骤也不会更改部署版本。
# oc create sa useroot
# oc adm policy add-scc-to-user anyuid -z useroot
# oc new-app --name=test --docker-image=myregistry.com/test:latest -o yaml --dry-run > test.yml
# vim test.yml
apiVersion: v1
items:
- apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
...
spec:
...
template:
spec:
serviceAccountName: useroot
...
# oc create -f ./test.yml
imagestream.image.openshift.io/test created
deploymentconfig.apps.openshift.io/test created
service/test created
# oc rollout history dc/test
deploymentconfigs "test"
REVISION STATUS CAUSE
1 Complete config change
# oc rsh dc/test id
uid=0(root) gid=0(root) groups=0(root)
Openshift 不允许 运行 容器作为 root,但您可以通过创建服务帐户来做到这一点:
oc adm policy add-scc-to-user anyuid -z useroot
然后修补部署配置,这将因此部署具有新更改的新复制控制器版本,是否可以创建服务帐户并将其包含在以下命令中:
oc new-app --name=test --docker-image=myregistry.com/test:latest
并在上述命令中包含服务帐户名称,以避免拥有新版本的应用程序,或者是否有任何其他可能性预见到此 root 权限错误并将 pod 的安全性降低到 运行作为 root 无需修补或重新部署应用程序
Will 和 Graham 已经为您提供了很好的评论, 所以我建议它们的其他实用细节如下。
如果您在 oc new-app
之前将 anyuid
scc
授予 default
ServiceAccount
,test
pods 将会运行 为 root
权限,无需更改版本。
# oc adm policy add-scc-to-user anyuid -z default
# oc new-app --name=test --docker-image=myregistry.com/test:latest
# oc rollout history dc/test
deploymentconfigs "test"
REVISION STATUS CAUSE
1 Complete config change
# oc rsh dc/test id
uid=0(root) gid=0(root) groups=0(root)
或
如果需要指定自定义ServiceAccount
名称,可以提取oc new-app
yaml,添加serviceAccountName: useroot
元素后创建资源。这些步骤也不会更改部署版本。
# oc create sa useroot
# oc adm policy add-scc-to-user anyuid -z useroot
# oc new-app --name=test --docker-image=myregistry.com/test:latest -o yaml --dry-run > test.yml
# vim test.yml
apiVersion: v1
items:
- apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
...
spec:
...
template:
spec:
serviceAccountName: useroot
...
# oc create -f ./test.yml
imagestream.image.openshift.io/test created
deploymentconfig.apps.openshift.io/test created
service/test created
# oc rollout history dc/test
deploymentconfigs "test"
REVISION STATUS CAUSE
1 Complete config change
# oc rsh dc/test id
uid=0(root) gid=0(root) groups=0(root)