Лучший способ проверить, готово ли ведро в node.js

Я использую gcsfuse для монтирования тома в контейнере, и он мне нужен для запуска моего приложения node.js.

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

Я думал о том, как я должен проверить, когда громкость монтируется и снижается ли она.

Чтобы проверить, когда он смонтирован и размонтирован, я читаю и ищу наличие тома в /proc/mountsи добавив в него наблюдателя за изменениями.

Есть ли более простой способ убедиться, что том смонтирован в node.js, docker или kubernetes?

1 ответ

Решение

Вы можете запустить этот dockerfile в привилегированном режиме:

FROM ubuntu 
RUN echo "deb http://packages.cloud.google.com/apt gcsfuse-stretch main" | tee /etc/apt/sources.list.d/gcsfuse.list 
RUN apt-get update && apt install curl -y 
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - 
RUN apt-get update 
RUN apt-get install gcsfuse fuse -y 
RUN mkdir -p /mnt/tmp 
CMD gcsfuse [BUCKET NAME] /mnt/tmp && /bin/bash

Таким образом, вы уверены, что ведро монтируется при инициализации модуля.

С другой стороны, я не рекомендую этот подход, так как есть библиотека Node.sj для Google Cloud Storage [1].

Вот пример списка сегментов:

// Imports the Google Cloud client library
const Storage = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

// Lists all buckets in the current project
storage
  .getBuckets()
  .then(results => {
    const buckets = results[0];

    console.log('Buckets:');
    buckets.forEach(bucket => {
      console.log(bucket.name);
    });
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

[1] https://github.com/googleapis/nodejs-storage/tree/master/samples

Другие вопросы по тегам