2017-01-27 28 views
0

Я играю с api и служебной учетной записью REST-RST с целью настроить что-то, чтобы частично автоматизировать администрирование openshift через вызовы REST. В настоящее время по-прежнему на Openshift 3.1.Openshift 3.1: Список проектов служебного аккаунта с использованием REST - возвращает пустой список

Место, где я добрался: Мне удалось создать учетную запись службы, предоставить ей доступ и использовать ее для вызовов 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": [] 
} 

Я не понимаю, мой список проектов по-прежнему пуст. Я попытался добавить учетную запись службы в несколько других проектов, но список остается пустым.

ответ

2

Вы очень близки к его решению. Пользователь, который вы использовали для вашей политики должна содержать пространство имен:

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

Это пространство имен проекта, в котором robot был создан. В вашем первом oc describe serviceaccount robot используется пространство имен default.

Также я вижу, что вы извлекаете секретную службу службы cloudforms, но я думаю, что это просто опечатка.

Смотрите также другие документы об этом: OpenShift Origin ServiceAccounts

+0

Хотя я думал, что на самом деле пытался это (я говорил с коллегой в то же время, кто указал на то же самое), я все еще имел дополнительный s после serviceaccounts. Фиксация, которая зафиксировала его. Благодаря! – HSquirrel