Jenkins Kubernetes: монтировать подпуть тома

Насколько я понял, api kubernetes позволяет монтировать подпуть pvc в контейнер в спецификации volumeMounts.

В моем примере я хочу смонтировать ПВХ my-pvc, но в подкаталоге с /my-subpath до /my-mount.

Таким образом, каталог /my-subpath на my-pvc будет смонтирован в контейнере под /my-mount.

При обычном использовании Kubernetes это выглядело бы следующим образом, если бы я понял документацию:

volumeMounts:
- mountPath: /my-mount
      name: my-pvc
      subPath: "my-subpath"

Моя проблема сейчас в том, что в плагине jenkins kubernetes это кажется невозможным.

Если я правильно понял документы, кажется, что это возможно только смонтируйте корневой каталог, то есть /, пвх my-pvc в /my-mount в контейнере, поскольку нет опции subPath:  Скриншот документации Jenkins

Что-то мне не хватает, или это просто невозможно?


person Mark G    schedule 28.05.2020    source источник
comment
Я не совсем уверен в том, что вам нужно, но просто хочу уточнить, my-subpath является подкаталогом /my-mount?   -  person Technext    schedule 28.05.2020
comment
Обычно том монтируется из корня, то есть /, в /my-mount, как я понял. Я хочу смонтировать /my-subpath на /my-mount.   -  person Mark G    schedule 28.05.2020
comment
Можете ли вы попробовать заменить существующие значения указанными здесь? - mountPath: /my-mount/my-subpath & subPath: my-subpath. Также обратите внимание, что значение subPath не содержит / в начале.   -  person Technext    schedule 28.05.2020
comment
Извините, если мое описание немного неясно. Я не пытаюсь подключиться к /my-mount/my-subpath. Проблема в том, что api плагина jenkins kubernetes не имеет subPath (см. Скриншот документа), или это просто не задокументировано?   -  person Mark G    schedule 28.05.2020
comment
Насколько я понимаю, вы хотите смонтировать /pvc/my-subpath внутри своего контейнера как /my-mount. Я прав?   -  person hariK    schedule 28.05.2020
comment
Да @hariK, я считаю, что OP пытается это сделать, и он также знает, как это сделать с k8s. Вопрос в том, как использовать подпуть в jenkins, который, по-видимому, не поддерживает эту функцию.   -  person Matt    schedule 28.05.2020
comment
@HelloWorld Да, это то, что я пытаюсь сделать, и в чем моя проблема.   -  person Mark G    schedule 28.05.2020


Ответы (1)


Это невозможно из-за доступных опций плагина Jenkins Kubernetes ATM. Но все же вы можете добиться этого, применив необработанный шаблон модуля в конфигурации облачного модуля Kubernetes.

Пример вывода

Started by user admin
Replayed #11
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] podTemplate
[Pipeline] {
[Pipeline] node
Still waiting to schedule task
‘hello-docker-j0rk6’ is offline
Agent hello-docker-j0rk6 is provisioned from template hello-docker
---
apiVersion: "v1"
kind: "Pod"
metadata:
  annotations: {}
  labels:
    run: "hello-docker"
    jenkins: "slave"
    jenkins/label: "hello-docker"
  name: "hello-docker-j0rk6"
spec:
  containers:
  - command:
    - "cat"
    image: "jenkins/jnlp-slave:3.27-1-alpine"
    name: "hello-docker"
    resources: {}
    tty: true
    volumeMounts:
    - mountPath: "/app/logs"
      name: "tmp"
      subPath: "logs"
    - mountPath: "/home/jenkins/agent"
      name: "workspace-volume"
      readOnly: false
person hariK    schedule 28.05.2020