Как смонтировать том данных на добавленный узел в среде Jelasti c - PullRequest
0 голосов
/ 07 мая 2020

Я хочу создать среду Jelasti c с балансировщиком нагрузки и узлом cp. Я хочу добавить узел cp с помощью метода addNodes api, потому что для запуска ему нужны определенные данные c. Мой манифест выглядит так:

jpsVersion: 1.3
jpsType: install
application:
  id: test-app
  name: Test App
  version: 0.0

  env:
    topology:
      nodes:
        - nodeGroup: bl
          nodeType: nginx-dockerized
          tag: 1.16.1
          displayName: Node balancing
          count: 1
          fixedCloudlets: 1
          cloudlets: 4

  onInstall:
  - addFile
  - setup

  actions:
    addFile:
    - cmd [bl]:
      - mkdir /data
      - echo "Hello world" > /data/test.txt
      user: root
    setup:
    - addNodes:
      - nodeGroup: cp
        nodeType: docker
        displayName: Test Mount
        count: 1
        fixedCloudlets: 1
        cloudlets: 4
        dockerName: alpine
        volumeMounts:
          /kickstart:
            readOnly: true
            sourcePath: /data
            sourceNodeGroup: bl
        dockerVolumes:
        - /kickstart

По какой-то причине я хочу, чтобы на моем альпийском изображении были данные, которые я храню в папке /kickstart. Конечно, в таком случае это совершенно не важно. Приведенный выше пример просто достаточно прост, чтобы его можно было воспроизвести. В моем реальном варианте использования образ docker, который я хочу смонтировать, не сможет работать без каких-либо данных c, специфичных для приложения, которые заполняются настройками манифеста, заполненными после ввода пользователя. Вот почему необходимо, чтобы данные были доступны после добавления узла docker.

Моя проблема в том, что приведенный выше простой манифест не работает. Действительно, на моем узле docker у меня нет доступа к папке /kickstart/test.txt. Что я делаю не так?

1 Ответ

1 голос
/ 08 мая 2020

volumeMounts опция недоступна для действия addNodes

Вот пример того, как это реализовать:

type: install
name: Test App
​
nodes:
  - nodeGroup: bl
    nodeType: nginx
    tag: 1.16.1
    displayName: Node balancing    
    cloudlets: 4
​
  - nodeGroup: cp
    displayName: Test Mount
    cloudlets: 4
    image: alpine
    startServiceOnCreation: false
    volumes: 
      - /kickstart
    volumeMounts: 
      /kickstart:       
        sourcePath: /data
        sourceNodeGroup: bl     
        readOnly: true

onInstall:
  - cmd [bl]: |-
      echo "Hello world" > /data/test.txt
    user: root    

  - env.control.ExecDockerRunCmd [${nodes.cp.join(id,)}] 

также вы можете использовать несуществующие каталоги в volumeMounts

он все создаст сам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...