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
我正在使用 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