This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new cd25d1a458 Image used for k8s tests copies airflow sources with
airflow user (#39843)
cd25d1a458 is described below
commit cd25d1a45817488b18d32bef8110a361401eb299
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun May 26 12:41:50 2024 +0200
Image used for k8s tests copies airflow sources with airflow user (#39843)
When you have localy umask set to 077 or similar (disallowing
group access), the PROD image used to run k8s tests was not working
properly. The files copied to k8s image when preparing k8s
image for local testing were copied using `root` user. This worked
with no problems when group read access was set (umask 022 or 002 is
usually set by defailt). But when someone had umask set to disable
group read access when checking out the repository (077 or similar)
then the files copied to the K8s image had no group read access
and airflow failed with strange "import error".
This PR adds `--chown airflow:0` to all files copied when k8s image
is prepared and makes sure that airflow user is set by default. This
should work regardless of the umask setting (as long as the host owner
has read access to checked out repository).
---
dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
index d097b61b13..c7ecfcf305 100644
--- a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
@@ -596,17 +596,19 @@ def _rebuild_k8s_image(
f"airflow base image: {params.airflow_image_name_with_tag}\n"
)
if copy_local_sources:
- extra_copy_command = "COPY . /opt/airflow/"
+ extra_copy_command = "COPY --chown=airflow:0 . /opt/airflow/"
else:
extra_copy_command = ""
docker_image_for_kubernetes_tests = f"""
FROM {params.airflow_image_name_with_tag}
+USER airflow
+
{extra_copy_command}
-COPY airflow/example_dags/ /opt/airflow/dags/
+COPY --chown=airflow:0 airflow/example_dags/ /opt/airflow/dags/
-COPY airflow/providers/cncf/kubernetes/kubernetes_executor_templates/
/opt/airflow/pod_templates/
+COPY --chown=airflow:0
airflow/providers/cncf/kubernetes/kubernetes_executor_templates/
/opt/airflow/pod_templates/
ENV GUNICORN_CMD_ARGS='--preload' AIRFLOW__WEBSERVER__WORKER_REFRESH_INTERVAL=0
"""