Openshift 3.1:使用 REST 列出服务帐户的项目 - returns 空列表

Openshift 3.1: List projects of a serviceaccount using REST - returns empty list

我正在使用 openshift REST api 和服务帐户,目标是设置一些东西以通过 REST 调用部分自动化 openshift 管理。 目前仍在使用 Openshift 3.1。

我到目前为止的进展: 我设法创建了一个服务帐户,授予它访问权限并将其用于 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 }'`
$ TOKEN=`oc describe secret $SECRET | grep -i ^token | awk '{print }'`
$ 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 添加到多个其他项目,但列表仍然是空的。

你很快就解决了。您用于策略的用户需要包含命名空间:

$ oc policy add-role-to-user admin system:serviceaccount:default:robot -n default

这是创建 robot 的项目的命名空间。在您的第一个 oc describe serviceaccount robot 中,使用了命名空间 default

我还看到您检索了 cloudforms 服务帐户的秘密,但我想这只是一个错字。

另请参阅有关它的更多文档:OpenShift Origin ServiceAccounts