#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
функции здесь. И либо измените рабочий каталог в спецификации задачи, либо используйте пользовательскую спецификацию модуля?