Airflow KubePodOperator вытащить образ из частного репозитория - PullRequest
1 голос
/ 08 октября 2019

Как Apache Airflow KubernetesPodOperator может извлекать образы докеров из частного репозитория?

У KubernetesPodOperator есть image_pull_secrets, который можно передать объект Secrets для аутентификации в частном репозитории. Но объект секретов может представлять только переменную среды или том - ни один из них не соответствует моему пониманию того, как Kubernetes использует секреты для аутентификации в частных репозиториях.

Используя kubectl, вы можете создать требуемый секрет с помощью чего-то вроде

$ kubectl create secret docker-registry $SECRET_NAME \
              --docker-server=https://${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com \
              --docker-username=AWS \
              --docker-password="${TOKEN}" \
              --docker-email="${EMAIL}"

Но как вы можете создать секрет аутентификации в Airflow?

1 Ответ

1 голос
/ 14 октября 2019

Существует secret объект с docker-registry типом согласно kubernetes документация , который можно использовать для аутентификации в частном хранилище.

Как вы упомянули в своем вопросе;Вы можете использовать от kubectl до создания секрета docker-registry типа , который затем можно попытаться передать с помощью image_pull_secrets.

Однако в зависимости от платформы Выиспользование этого может иметь ограниченное или вообще не использовать согласно документации kubernetes :

Настройка узлов для аутентификации в частном реестре

Примечание: Если вы работаете в Google Kubernetes Engine, на каждом узле уже будет .dockercfg с учетными данными для реестра контейнеров Google. Вы не можете использовать этот подход.

Примечание: Если вы работаете в AWS EC2 и используете реестр контейнеров EC2 (ECR), кублет на каждом узле будет управлять и обновлять имя входа ECRполномочия. Вы не можете использовать этот подход.

Примечание: Этот подход подходит, если вы можете контролировать конфигурацию узла. Он не будет надежно работать на GCE и любом другом облачном провайдере, который выполняет автоматическую замену узла.

Примечание: Kubernetes на данный момент поддерживает только раздел докера auths и HttpHeadersконфигурации. Это означает, что помощники по учетным данным (credHelpers или credsStore) не поддерживаются.

Выполнение этой работы на упомянутых платформах возможно, но для этого потребуются автоматизированные сценарии и сторонние инструменты.

Как в примере с Amazon ECR: Помощник по учетным данным Amazon ECR потребуется для периодического извлечения учетных данных AWS в конфигурацию реестра Docker, а затем для создания другого сценария для обновления секретов реестра Dober-реестра Kubernetes.

Asдля самого Airflow я не думаю, что у него есть функциональность, позволяющая создавать свои собственные секреты Docker-репозитория. Вы можете запросить такую ​​функциональность в Apache Airflow JIRA .

PS

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

...