Openshift 3.1:使用REST列出serviceaccount的项目-返回空列表

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:

我正在使用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": []
}
#名称为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。修好了,修好了。谢谢虽然我认为我已经尝试过了(我和一位同事谈过,他也指出了同样的事情),但我仍然有一个额外的服务帐户。修好了,修好了。谢谢