Я пытаюсь получить доступ к архиву рабочего процесса Argo через REST API. В документации говорится, что мне нужно создать роль и токен, поэтому Я вот что сделал. Роль с минимальными разрешениями можно создать так:

kubectl create role jenkins --verb=list,update --resource=workflows.argoproj.io

На самом деле это работает, теперь я могу получить доступ к серверу argo с помощью такой команды, как curl http://localhost:2746/api/v1/workflows/argo -H "Authorization: $ARGO_TOKEN". Однако кажется, что для доступа к конечным точкам, таким как /api/v1/archived-workflows, необходимы дополнительные разрешения, потому что все, что я получаю, это следующее:

{
  "code": 7,
  "message": "permission denied"
}

Предположительно мне нужно указать другие глаголы и / или ресурсы в команде kubectl create role, но я не знаю, какие именно, и не могу найти соответствующую документацию. Какие-нибудь намеки?

2
Matthias Berndt 12 Фев 2021 в 22:52

1 ответ

Лучший ответ

Похоже, что роль / serviceaccount / rolebinding, созданные в соответствии с документами, предоставляют разрешения только для перечисления рабочих процессов в пространстве имен argo (независимо от того, заархивированы они или нет).

Пространство имен можно указать для архива следующим образом:

curl http://localhost:2746/api/v1/archived-workflows?listOptions.fieldSelector=metadata.namespace=argo -H "Authorization: $ARGO_TOKEN"
1
Michael Crenshaw 15 Фев 2021 в 21:59