Как изменить роль helm в большом количестве namespace одной командой?

Есть много namespace, в каждом из них создана роль helm для запуска helm. Необходимо добавить право на create ролей в каждую роль helm в кластере во всех namespace приложений. Подскажите, как это сделать?

Предполагаю, что это можно сделать через

kubectl path role helm -p "набор параметров" -А

но я не уверен, что здесь сработает флаг на все namespace и мне непонятно, как задать набор параметров. Манифест одной из ролей helm выглядит

kubectl describe role helm -n myapp

Name:         helm
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources                               Non-Resource URLs  Resource Names  Verbs
  ---------                               -----------------  --------------  -----
  *                                       []                 []              [*]
  *.apps                                  []                 []              [*]
  *.autoscaling                           []                 []              [*]
  *.batch                                 []                 []              [*]
  *.extensions                            []                 []              [*]
  *.networking.k8s.io                     []                 []              [*]
  rolebindings.rbac.authorization.k8s.io  []                 []              [get patch]
  roles.rbac.authorization.k8s.io         []                 []              [get patch]

Yaml выглядит:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    meta.helm.sh/release-name: myapp-develop
    meta.helm.sh/release-namespace: myapp-beta
  creationTimestamp: "2023-11-17T11:15:45Z"
  labels:
    app.kubernetes.io/managed-by: Helm
  name: helm
  namespace: myapp-beta
rules:
- apiGroups:
  - ""
  - apps
  - autoscaling
  - batch
  - extensions
  - networking.k8s.io
  resources:
  - '*'
  verbs:
  - '*'
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - rolebindings
  - roles
  verbs:
  - get
  - patch

Или подскажите пожалуйста как можно это сделать иначе?


Ответы (1 шт):

Автор решения: Joe

Решил это с помощью регулярного выражения: kubectl get role -A | grep helm | awk '{print " --namespace=" $1}' | xargs -l1 kubectl patch role helm --patch '{"rules": [{"apiGroups": ["","apps","autoscaling","batch","extensions","networking.k8s.io"],"resources": [""],"verbs": [""]},{"apiGroups": ["rbac.authorization.k8s.io"],"resources": ["rolebindings","roles"],"verbs": ["get","patch","create"]}]}'

→ Ссылка