Openshift 3.1:使用REST列出serviceaccount的项目-返回空列表
我正在使用openshift REST api和服务帐户,目的是通过REST调用来部分自动化openshift的管理。 目前仍在Openshift 3.1上 到目前为止,我的收获是: 我设法创建了一个serviceaccount,授予它访问权限,并将其用于REST调用。然而,我不能让它有一个项目列表Openshift 3.1:使用REST列出serviceaccount的项目-返回空列表,rest,openshift,openshift-origin,service-accounts,Rest,Openshift,Openshift Origin,Service Accounts,我正在使用openshift REST api和服务帐户,目的是通过REST调用来部分自动化openshift的管理。 目前仍在Openshift 3.1上 到目前为止,我的收获是: 我设法创建了一个serviceaccount,授予它访问权限,并将其用于REST调用。然而,我不能让它有一个项目列表 # account exists with name robot in namespace default $ oc describe serviceaccount robot Name:
# 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": []
}
#名称为robot的帐户存在于命名空间默认值中
$oc描述serviceaccount机器人
名称:机器人
名称空间:默认值
标签:
...
#尝试了几种授予访问权限的方法:
$oc策略将角色添加到用户管理系统:serviceaccounts:robot-n默认值
$oc策略将角色添加到用户管理机器人-n默认值
$oc策略将角色添加到用户管理系统:serviceaccounts:默认值:robot-n默认值
#获取令牌进行REST调用
$SECRET=`oc描述服务帐户机器人| grep-i令牌| awk'{print$2}'`
$TOKEN=`oc descripe secret$secret | grep-i^TOKEN | awk'{print$2}'`
$curl-X GET-H“Authorization:Bearer$TOKEN”https://$OPENSHIFT\u主机名/oapi/v1/projects-不安全
{
“种类”:“项目列表”,
“apiVersion”:“v1”,
“元数据”:{
“selfLink”:“/oapi/v1/projects”
},
“项目”:[]
}
我不明白为什么我的项目列表还是空的。我已尝试将serviceaccount添加到多个其他项目中,但列表仍然为空。您很快就能解决它。用于策略的用户需要包含命名空间:
$ oc policy add-role-to-user admin system:serviceaccount:default:robot -n default
这是已在其中创建robot
的项目的命名空间。在您的第一个oc描述serviceaccount robot
中,使用了名称空间default
我还看到您检索了cloudforms服务帐户的一个秘密,但我猜这只是一个输入错误
另请参阅有关它的更多文档:您很快就可以解决它了。用于策略的用户需要包含命名空间:
$ oc policy add-role-to-user admin system:serviceaccount:default:robot -n default
这是已在其中创建robot
的项目的命名空间。在您的第一个oc描述serviceaccount robot
中,使用了名称空间default
我还看到您检索了cloudforms服务帐户的一个秘密,但我猜这只是一个输入错误
另请参阅更多关于它的文档:虽然我认为我实际上已经尝试过了(同时,我与一位同事进行了交谈,他指出了同样的事情),但在serviceaccounts之后,我仍然有一个额外的s。修好了,修好了。谢谢虽然我认为我已经尝试过了(我和一位同事谈过,他也指出了同样的事情),但我仍然有一个额外的服务帐户。修好了,修好了。谢谢