Openshift:如何以非交互方式编辑 scc?
Openshift: how to edit scc non-interactively?
我正在试验 openshift/minishift,我发现自己必须 运行:
oc edit scc privileged
并添加:
- system:serviceaccount:default:router
所以我可以公开 pods。有没有办法在脚本中做到这一点?
我知道 oc adm
有一些策略操作命令,但我不知道如何添加这一行。
我找到了一个管道示例 sed
Here 并将其改编为 ruby 这样我就可以轻松地编辑数据结构。
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
您可以使用 oc patch
命令和类型 json 来实现它。下面的代码片段将在第 0 个元素之前向数组添加一个新项目。您可以尝试使用假 "bla" 值等
oc patch scc privileged --type=json -p '[{"op": "add", "path": "/users/0", "value":"system:serviceaccount:default:router"}]'
--type=json
会将提供的补丁解释为 jsonpatch operation. Unfortunately oc patch --help
doesn't provide any example for json patch type. Luckily example usage can be found in kubernetes docs: kubectl patch
从命令行向 SCC 添加和删除用户的最简单方法是使用 oc adm policy
命令:
oc adm policy add-scc-to-user <scc_name> <user_name>
有关详细信息,请参阅 this section。
因此对于您的特定 use-case,它将是:
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
我正在试验 openshift/minishift,我发现自己必须 运行:
oc edit scc privileged
并添加:
- system:serviceaccount:default:router
所以我可以公开 pods。有没有办法在脚本中做到这一点?
我知道 oc adm
有一些策略操作命令,但我不知道如何添加这一行。
我找到了一个管道示例 sed
Here 并将其改编为 ruby 这样我就可以轻松地编辑数据结构。
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
您可以使用 oc patch
命令和类型 json 来实现它。下面的代码片段将在第 0 个元素之前向数组添加一个新项目。您可以尝试使用假 "bla" 值等
oc patch scc privileged --type=json -p '[{"op": "add", "path": "/users/0", "value":"system:serviceaccount:default:router"}]'
--type=json
会将提供的补丁解释为 jsonpatch operation. Unfortunately oc patch --help
doesn't provide any example for json patch type. Luckily example usage can be found in kubernetes docs: kubectl patch
从命令行向 SCC 添加和删除用户的最简单方法是使用 oc adm policy
命令:
oc adm policy add-scc-to-user <scc_name> <user_name>
有关详细信息,请参阅 this section。
因此对于您的特定 use-case,它将是:
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