我与openshift/minishift实验,我发现自己不必运行:Openshift:如何编辑SCC非交互式?
oc edit scc privileged
,并添加:
- system:serviceaccount:default:router
所以我可以公开的豆荚。有没有办法在脚本中做到这一点?
我知道oc adm
有政策操作的一些命令,但我无法弄清楚如何加入这一行。
我与openshift/minishift实验,我发现自己不必运行:Openshift:如何编辑SCC非交互式?
oc edit scc privileged
,并添加:
- system:serviceaccount:default:router
所以我可以公开的豆荚。有没有办法在脚本中做到这一点?
我知道oc adm
有政策操作的一些命令,但我无法弄清楚如何加入这一行。
可以使用oc patch
命令和类型JSON实现它。下面的代码片段将在第0个元素之前向数组添加一个新项目。你可以尝试一下用假“BLA”数值等
oc patch scc privileged --type=json -p '[{"op": "add", "path": "https://stackoverflow.com/users/0", "value":"system:serviceaccount:default:router"}]'
的--type=json
将解释提供补丁为jsonpatch操作。不幸的是oc patch --help
不提供JSON补丁类型的任何实例。幸运的是,例如使用可以在kubernetes文档中找到:kubectl patch
我找到一个管道示例sed
Here,并将其改编为红宝石,以便我可以轻松编辑数据结构。
oc get scc privileged -o json |\
ruby -rjson -e 'i = JSON.load(STDIN.read); i["users"].push "system:serviceaccount:default:router"; puts i.to_json ' |\
oc replace scc -f -
这里是quick and dirty script上手minishift
在命令行中添加和删除用户的SCC最简单的方法是使用oc adm policy
命令:
oc adm policy add-scc-to-user <scc_name> <user_name>
欲了解更多信息,请参阅this section。
因此,对于您的具体使用情况,这将是:
oc adm policy add-scc-to-user privileged system:serviceaccount:default:router
我很惊讶它的需要,但。我通常使用“oc cluster up”,但是使用最近的minishift进行测试,其已经添加了开箱即用:
$ minishift start
$ eval $(minishift oc-env)
$ oc login -u system:admin
$ oc get scc privileged -o yaml | grep system:serviceaccount:default:router
- system:serviceaccount:default:router
$ minishift version
minishift v1.14.0+1ec5877
$ oc version
openshift v3.7.1+a8deba5-34
太棒了!我coud找不到'OC patch' +1,'OC代替-f -'奏效了我。 – Tiago