【问题标题】:Openshift: how to edit scc non-interactively?Openshift:如何以非交互方式编辑 scc?
【发布时间】:2017-07-07 16:59:04
【问题描述】:

我正在尝试使用 openshift/minishift,我发现自己不得不运行:

oc edit scc privileged

并添加:

- system:serviceaccount:default:router

这样我就可以暴露 pod。有没有办法在脚本中做到这一点?

我知道oc adm 有一些用于策略操作的命令,但我不知道如何添加这一行。

【问题讨论】:

    标签: openshift openshift-origin


    【解决方案1】:

    您可以使用oc patch 命令和json 类型来实现它。下面的 sn-p 将在第 0 个元素之前向数组添加一个新项目。您可以尝试使用假的“bla”值等。

    oc patch scc privileged --type=json -p '[{"op": "add", "path": "/users/0", "value":"system:serviceaccount:default:router"}]'
    

    --type=json 会将提供的补丁解释为jsonpatch 操作。不幸的是,oc patch --help 没有提供任何 json 补丁类型的示例。幸运的是,可以在 kubernetes 文档中找到示例用法:kubectl patch

    【讨论】:

    • 太棒了!我找不到oc patch +1,oc replace -f - 对我有用。
    【解决方案2】:

    从命令行向 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
    

    【讨论】:

      【解决方案3】:

      我找到了一个指向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

      【讨论】:

        猜你喜欢
        • 2012-05-05
        • 2020-03-12
        • 1970-01-01
        • 1970-01-01
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-05
        相关资源
        最近更新 更多