Как изменить роль 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 шт):
Решил это с помощью регулярного выражения: 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"]}]}'