Это хорошая идея, чтобы включить --inspect для nodejs в производстве (kubernetes)? - PullRequest
1 голос
/ 15 января 2020

У меня есть модуль nodejs, работающий в производственной среде kubernetes. Кроме того, в том же кластере, где работает одно и то же приложение, имеется среда подготовки и проверки. Недавно я добавил --inspect к команде start в dockerfile, которая развертывается во всех средах. У меня вопрос: если я включу отладку и в рабочей среде, повлияет ли это на производительность или использование памяти? Это хорошая практика в целом? В противном случае мне потребуется создать отдельный файл Docker для производства.

Ответы [ 3 ]

2 голосов
/ 15 января 2020

повлияет ли это на производительность или использование памяти?

И то и другое, вероятно, незначительно, если просто включить флаг, пробег может отличаться, если на самом деле отладка в реальном времени.

Это хорошая практика

Я бы сказал, нет, и это имеет последствия для безопасности . Хотя это будет проблемой только в том случае, если вы установите IP-адрес c, по умолчанию отладка будет разрешена только на локальном хосте.

My.advice будет создавать отдельный файл Docker для prod.

0 голосов
/ 10 февраля 2020

Вы можете использовать Rookout . Это платформа, которая позволяет отлаживать код во время работы, не останавливая среду выполнения, и также поддерживает Kubernetes.

По сути, вы устанавливаете Rookout SDK, устанавливая его пакет npm:

npm install --save rookout

или (если вы используете пряжу)

yarn add rookout

Затем просто инициируйте sdk в своем коде с помощью предоставленного токена:

const rookout = require('rookout');

rookout.start({
    token: 'YOUR_ROOKOUT_TOKEN'
});

Затем просто повторно разверните свое приложение, и вам больше не придется повторно развертывать его для отладки. Вы можете просто войти в Rookout Web IDE, и тогда вы сможете разместить неразрывные точки останова, чтобы получать любые данные из вашего кода, которые вам нужны.

Кроме того, важно отметить, что использование Rookout имеет мало без влияния на производительность. С точки зрения производительности это почти то же самое, что и установка оператора console.log; едва заметно.

0 голосов
/ 16 января 2020

Придумал лучшее решение. Создайте скрипт-обертку, который включает отладку только для непроизводственных сред. Для производства, если это абсолютно необходимо, лучше вручную выполнить c в pod и отладить. Вот сценарий: start.sh

#!/bin/sh
if [ "$ENVIRONMENT" = "production" ] ;then
 npm start;
else
 npm run debug;
fi

и в файле Docker,

CMD [ "/app/src/start.sh" ]
...