Можно ли установить переменную для модуля, используя команду, которая должна запускаться внутри этого модуля? - PullRequest
0 голосов
/ 24 мая 2019

Можно ли установить переменную для модуля, используя команду, которая должна запускаться внутри этого модуля?

что я пытаюсь сделать, это получить частный и публичный ip с узла, чтобы я мог использовать их в приложении на разрешенном хосте, я могу получить приватный ip, используя это:

containers:
- env:
  - name: NODE_IP
    valueFrom:
      fieldRef:
         status.hostIP

но только этот частный ip, и мне нужен публичный, моя идея состоит в том, чтобы получить их отсюда:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html с этими 2 командами:

curl http://169.254.169.254/latest/meta-data/local-ipv4
curl http://169.254.169.254/latest/meta-data/public-ipv4

внутри контейнера будет что-то вроде этого:

command: MYPRIVATEIP=$(curl http://169.254.169.254/latest/meta-data/local-ipv4)
command: MYPUBLICIP=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)

containers:
- env:
  - name: NODE_IP
    valueFrom:
      fieldRef:
         status.hostIP

я уже пытаюсь выразить это следующим образом:

    env:
    - name: MYIP
      value: $(curl http://169.254.169.254/latest/meta-data/local-ipv4)

, но это ничего не делает, кроме размещения текста в виде плоскости.

то, что я ожидаю, это вывод этой команды внутри var, чтобы мое приложение могло оттуда забрать и добавить в разрешенный хост.Заранее благодарю за любую помощь!С уважением

1 Ответ

1 голос
/ 25 мая 2019

Я думаю, что вы можете использовать события жизненного цикла для достижения этой цели. Вы можете прочитать о них здесь. https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/.

Поэтому я предлагаю вам создать сценарий оболочки init.sh, чтобы экспортировать все необходимые переменные окружения и запустить его после запуска модуля.

spec:
  containers:
  - name: container-name
    image: image-name
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "/init.sh"]

Вы можете включить файл init.sh в образ докера при создании образа с помощью команды COPY.

...