Назад | Перейти на главную страницу

vault init зависает на кубернетах

Я пытаюсь настроить кластер хранилища с автоматическим запечатыванием в кубернетах, но наблюдаю странное поведение.

У меня есть одно хранилище, обеспечивающее транзитный секрет для автоматического опознавания второго хранилища. Они работают в одном кластере k8s в разных пространствах имен. Второе хранилище запускается в модуле со сценарием автоматического запуска (см. Ниже), но при запуске хранилища init зависает и в конечном итоге возвращает код 2 (тайм-аут), несмотря на то, что экземпляр хранилища успешно инициализирован и распечатан.

Проблема в том, что я пытаюсь запустить второе хранилище с помощью сценария после запуска в его модуле, и код ошибки 2 нарушает работу модуля.

Кто-нибудь видел подобное поведение или может помочь его решить?

apiVersion: v1
kind: ConfigMap
metadata:
  name: post-start
data:
   post-start.sh: |
#!/bin/sh

#redirect stdout and stderr to kube logs
# exec &> /proc/1/fd/1

export VAULT_CLIENT_TIMEOUT=240

echo $VAULT_CLIENT_TIMEOUT > /proc/1/fd/1

nc -z 127.0.0.1 8200
while [ $? = 1 ]; do
  sleep 2
  nc -z 127.0.0.1 8200
done

echo "port 8200 ready" > /proc/1/fd/1
vault init

После некоторой игры выясняется, что настоящая проблема заключалась в том, что порт 8200 никогда не был готов, потому что второе хранилище не запускалось. Второе хранилище не запускалось, потому что оно не могло связаться с хранилищем 1, и я разобрался, правильно настроив TLS (эта ссылка может пригодиться)

После настройки TLS хранилище 2 смогло запуститься, и пост-сценарий успешно завершился.

Пожалуйста, обратитесь к документация определения обработчиков postStart и preStop и для крючки жизненного цикла контейнера:

Доставка крючка должна быть по крайней мере один раз, что означает, что ловушка может вызываться несколько раз для любого данного события, например, для PostStart или PreStop. Реализация ловушки должна правильно с этим справиться.

Посмотрите например:

  lifecycle:
    postStart:
      exec:
        command:
          - "sh"
          - "-c"
          - >
            if [ -s /var/www/mybb/inc/config.php ]; then
            rm -rf /var/www/mybb/install;
            fi;
            if [ ! -f /var/www/mybb/index.php ]; then
            cp -rp /originroot/var/www/mybb/. /var/www/mybb/;
            fi

Также предоставьте журналы сбоя POD.