将容器安装到我的部署中时,如何避免“权限被拒绝”错误? 背景什么似乎不起作用我尝试了什么

问题描述

背景

我目前正在使用 Helm(使用 Apache Airflow 图表)部署 this。我正在使用 git-sync sidecar 挂载 Airflow 需要访问的 sql 和 Python 文件才能执行脚本/文件

什么似乎不起作用

一旦我完成了我的容器的部署,我的 Airflow 用户似乎无法使用这些文件(已由 git sidecar 挂载),并以错误退出(此错误发生在所有已挂载的文件上)不仅仅是目标):

[Errno 13] Permission denied: 'target'

我尝试了什么

我用于部署的 docker 容器如下所示:

FROM apache/airflow:1.10.14-python3.8

USER root

# apt deps
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
           nano \
           gcc \
           python3-dev \
    && apt-get autoremove -yqq --purge \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Use airflow user for pip installs and other things.
USER airflow

# Additional requirements for Airflow
copY requirements.txt /tmp/requirements.txt
RUN pip install -r /tmp/requirements.txt

# Creating folder for logs
RUN mkdir -p /opt/airflow/dbt_logs
RUN pip install dbt==0.18.1 

EXPOSE 8081

scheduler 容器中运行 ls -ld */(在 /opt/airflow 中)我得到:

airflow@airflow-scheduler-58c7cb87b8-8nk6f:/opt/airflow$ ls -ld */
drwxrwsrwx 5    1000    1000 41 Dec 26 16:02 dags/
drwxr-xr-x 2 airflow airflow  6 Dec 26 14:10 dbt_logs/
drwxrwxr-x 1 airflow root    52 Dec 26 16:02 logs/

并在我得到的 web 服务器 容器中运行 ls -ld */(在 /opt/airflow 中):

airflow@airflow-web-7f8df9457-7n2dp:/opt/airflow$ ls -ld */
drwxrwsrwx 5 root    nogroup 41 Dec 26 14:20 dags/
drwxr-xr-x 1 airflow airflow 21 Dec 26 14:41 dbt_logs/
drwxrwxr-x 1 airflow root    23 Dec 26 14:20 logs/

这是我的 dags 目录中 dbt 文件夹的结构:

airflow@airflow-scheduler-6cdc985b9b-ssmhx:/opt/airflow/dags/dbt/dw$ ls -l
total 16
-rw-r--r-- 1 root 1000 3061 Dec 27 09:00 README.md
drwxr-sr-x 2 root 1000   22 Dec 27 09:00 analysis
drwxr-sr-x 2 root 1000   22 Dec 27 09:00 data
-rw-r--r-- 1 root 1000 1852 Dec 27 09:00 dbt_project.yml
drwxr-sr-x 2 root 1000  214 Dec 27 09:00 macros
drwxr-sr-x 3 root 1000   21 Dec 27 09:00 models
-rw-r--r-- 1 root 1000  141 Dec 27 09:00 packages.yml
-rw-r--r-- 1 root 1000  842 Dec 27 09:00 profiles.yml
drwxr-sr-x 2 root 1000   22 Dec 27 09:00 snapshots
drwxr-sr-x 2 root 1000   22 Dec 27 09:00 tests

值得一提的是,我似乎无法使用气流用户在 dbt 目录中创建文件(权限被拒绝)

在我看来,一旦卷被挂载,它的所有者就变成了 root 用户。如何让 Airflow 用户能够访问已挂载的 git 存储库?

如果需要,很乐意提供更多详细信息

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)