Airflow - KubernetesPodOperator - привязка роли к сервисному аккаунту

В настоящее время я использую KubernetesPodOperator для запуска пода в кластере Kubernetes. Я получаю следующую ошибку:

kubernetes.client.rest.ApiException: (403) Причина: Запрещено

Заголовки ответа HTTP: HTTPHeaderDict({'Audit-Id': '','Cache-Control': 'no-cache, private', 'Content-Type': 'application /json', 'X-Content-Type-Options ':' nosniff ',' Date ':' Mon,30 августа 2021 г., 00:12:57 GMT ',' Content-Length ':' 309'})

Тело ответа HTTP: {"kind":"Status","apiVersion":"v1","metadata":{}, "status": "Failure","message": "pods is запрещено: User" system:serviceaccount : airflow10:airflow-worker-serviceaccount "не может перечислить ресурсы" pods "в группе API" "в пространстве имен" default "", "cause": "Forbidden", "details": {"kind":"pods"}, "код": 403}

Я могу решить эту проблему, выполнив следующие команды:

kubectl create clusterrole pod-creator --verb= create, get, list, watch --resource = pods

kubectl create clusterrolebinding pod-creator-clusterrolebinding --clusterrole = pod-creator --serviceaccount = airflow10:airflow-worker-serviceaccount

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

Заранее спасибо :)

1 ответ

Решение

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

Это можно сделать несколькими способами «автоматически», если вы намеревались несколько автоматизировать развертывание. Например, если развертывание воздушного потока выполняется с помощью диаграммы Helm, в диаграмму можно добавить конфигурацию необходимых ресурсов для создания соответствующих привязок ролей. Вы можете увидеть, как это работает наша официальная диаграмма Helm:

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