Конвейер Tekton не может создать файл в каталоге рабочей области, если он не запущен от имени root

#tekton #tekton-pipelines

Вопрос:

Я хочу создать файл в каталоге рабочей области. Но я могу сделать это только в том случае, если буду работать от имени root с

 securityContext:
       runAsUser: 0
 

если я оставлю его пустым или захочу работать от имени пользователя 1001, он даст мне касание: не могу коснуться «/workspace/workspace_folder/test.txt’: В разрешении отказано
Похоже, что при создании каталога рабочей области он принадлежит пользователю 99

Шаги по воспроизведению проблемы

 apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
  name: echo-hello-world
spec:
  steps:
    - name: echo
      image: ubuntu
      script: |
        #!/bin/bash
        echo "Current user is"
        whoami
        ls -l
        echo "creating a file in the workspace"
        touch /workspace/workspace_folder/test.txt
      # securityContext:
      #   runAsUser: 0
  workspaces:
  - name: task-workspace
    description: |
      The folder where we write the message to. If no workspace
      is provided then the message will not be written.
    mountPath: /workspace/workspace_folder
---

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: echo-pipeline
spec:
  workspaces:
    - name: pipeline-workspace
  tasks:
    - name: echo-task
      taskRef:
        name: echo-hello-world
      workspaces:
        - name: task-workspace
          workspace: pipeline-workspace
---
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: echo-pipelinerun-6
spec:
  pipelineRef:
    name: echo-pipeline
  workspaces:
    - name: pipeline-workspace
      volumeClaimTemplate:
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 1Gi
 

Вывод, когда я запускаю вышеуказанный конвейер

 Current user is
1000840000
total 4
drwxr-xr-x. 2 99 99 4096 May 18 01:48 workspace_folder
creating a file in the workspace
touch: cannot touch '/workspace/workspace_folder/test.txt': Permission denied
 

Ответ №1:

Я думаю, что это сделано специально. Если я правильно помню, любой контейнер в Kubernetes будет работать без прав root, если не определен надлежащий контекст безопасности. Поскольку задачи Tekton также являются просто блоками, они, скорее всего, будут составлены с наименее привилегированным контекстом безопасности. Вы должны быть в состоянии проверить это в источнике Тектон-трубопроводов.

Если вам действительно нужен специальный том рабочей области, я думаю, вы могли бы включить флаг disable-working-directory-overwrite функции здесь. И либо измените рабочий каталог в спецификации задачи, либо используйте пользовательскую спецификацию модуля?