Разрешение хукам (заданиям) руля для создания ресурсов k8s

Я хочу запустить pre-install helm hook.

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

      kubectl create secret generic my-secret --from-literal=foo=bar

Можно ли разрешить это действие через RBAC?

Если да, то какие минимальные разрешения необходимо предоставить конкретному модулю / заданию для выполнения этой задачи?

1 ответ

Решение

Это возможно, но, может быть, не самое простое.

Для этого вы можете использовать стандартную систему Kubernetes RBAC с такой ролью, как

      # templates/pre-install-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: {{ include "chart.name" . }}-pre-install
  annotations:
    helm.sh/hook: pre-install
rules:
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["create"]

Однако эта роль должна быть привязана к чему-либо, чтобы иметь эффект, а это означает, что вам также необходимо создать ServiceAccount и RoleBinding, чтобы соединить их вместе:

      # templates/pre-install-service-account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: {{ include "chart.name" . }}-pre-install
  annotations:
    helm.sh/hook: pre-install
      # templates/pre-install-service-role-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: {{ include "chart.name" . }}-pre-install
  annotations:
    helm.sh/hook: pre-install
subjects:
  - kind: ServiceAccount
    namespace: {{ .Release.Namespace }}
    name: {{ include "chart.name" . }}-pre-install
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: {{ include "chart.name" . }}-pre-install

И, наконец, в вашем задании перед установкой вам необходимо указать

      serviceAccountName: {{ include "chart.name" . }}-pre-install

Обратите внимание, что хуки предварительной установки Helm запускаются перед установкой чего-либо еще, что означает, что там, где нам нужны эти вспомогательные объекты, связанные с авторизацией, для запуска ловушки, они также должны быть помечены как хуки предварительной установки. При использовании политики удаления по умолчанию они будут оставаться установленными до тех пор, пока диаграмма не будет удалена.

Возможно, вам будет проще просто создать секрет в диаграмме Helm, если у вас будут необходимые данные во время развертывания.

Другие вопросы по тегам