我正在使用openshift REST api和服务帐户,其目标是通过REST调用部分自动化管理openshift。 目前仍在使用Openshift 3.1。
我到目前为止: 我设法创建了一个serviceaccount,给它访问权限并将其用于REST调用。但是,我不能让它有一个项目清单。
# account exists with name robot in namespace default
$ oc describe serviceaccount robot
Name: robot
Namespace: default
Labels: <none>
...
# tried a couple of approaches for granting access:
$ oc policy add-role-to-user admin system:serviceaccounts:robot -n default
$ oc policy add-role-to-user admin robot -n default
$ oc policy add-role-to-user admin system:serviceaccounts:default:robot -n default
# get token en do REST call
$ SECRET=`oc describe serviceaccount robot | grep -i tokens | awk '{print $2}'`
$ TOKEN=`oc describe secret $SECRET | grep -i ^token | awk '{print $2}'`
$ curl -X GET -H "Authorization: Bearer $TOKEN" https://$OPENSHIFT_HOSTNAME/oapi/v1/projects --insecure
{
"kind": "ProjectList",
"apiVersion": "v1",
"metadata": {
"selfLink": "/oapi/v1/projects"
},
"items": []
}
我不明白,我的项目清单仍然是空的。我尝试将serviceaccount添加到多个其他项目中,但列表保持为空。
答案 0 :(得分:2)
你非常接近解决它。您用于策略的用户需要包含命名空间:
$ oc policy add-role-to-user admin system:serviceaccount:default:robot -n default
这是已创建robot
的项目的命名空间。在您的第一个oc describe serviceaccount robot
中,使用了名称空间default
。
我也看到你检索了一个cloudforms服务帐户的秘密,但我想这只是一个错字。
另请参阅有关它的更多文档:OpenShift Origin ServiceAccounts