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

时间:2017-01-27 08:27:21

标签: 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:           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添加到多个其他项目中,但列表保持为空。

1 个答案:

答案 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