Отладка приложения рельсов в Миникубе - PullRequest
1 голос
/ 18 октября 2019

Я запускаю службу rails внутри кластера мини-кубов на моей локальной машине. Мне нравится добавлять точки прерывания в мой код, чтобы взаимодействовать с процессом. Это не работает в то время как внутри Minikube. Я могу присоединиться к модулю, на котором запущен мой контейнер rails, и нажать на оператор binding.pr в своем коде, и вместо того, чтобы получить интерактивную точку останова, я просто вижу попытку pry создать точку останова, но в конечном итоге переместиться прямо за ней. Кто-нибудь выяснит, как заставить это работать? Я предполагаю, что развернутый модуль не является интерактивным.

1 Ответ

1 голос
/ 21 октября 2019

Вы пытаетесь получить интерактивный доступ к своему приложению.

Ваша проблема вызвана тем, что k8s по умолчанию не выделяет буфер TTY и stdin для контейнера.

Я повторил вашу проблему и нашел решение.

Чтобы получить интерактивную точку останова, вам нужно добавить 2 флага в ваш yaml развертывания, чтобы указать, что вам нужен интерактивный сеанс:

   stdin: true
   tty: true

Вотпример развертывания:

   apiVersion: apps/v1
   kind: Deployment
   metadata:
     labels:
       run: test
     name: test
   spec:
     selector:
       matchLabels:
         run: test
     template:
       metadata:
         labels:
           run: test
       spec:
         containers:
         - image: test
           name: test
           stdin: true
           tty: true

Более подробную информацию об этом можно найти здесь .

Не забудьте использовать опцию -it при подключении к модулю, как показано ниже:

   kubectl attach -it <pod_name>

Дайте мне знать, помогло ли это.

...