oc-команда для перенаправления локальных портов на удаленные отладочные порты на основе имени службы вместо имени pod - PullRequest
0 голосов
/ 13 июня 2019

Чтобы минимизировать время установки присоединения сеанса отладки к удаленному модулю (микросервис, развернутый в OpenShift) с помощью intelliJ, Я пытаюсь извлечь максимальную пользу из настройки «Перед запуском» конфигурации удаленной отладки.

Я использую 2 шага перед подключением отладчика к сокету JVM со следующими аргументами командной строки (эта настройка работает, но требует редактирования при каждом новом развертывании);


    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000

шаг 1: внешние инструменты: oc с аргументами:


    login
    https://url.of.openshift.environment
    --username=<login>
    --password=<password>

шаг 2: внешние инструменты: oc с аргументами:


    port-forward
    microservice-name-65-6bhz8   -> this needs to be changed after every deploy
    8000
    3000
    3001 

справочная информация: это информация в сервисе его YAML под spec> Containers> env:

- name: JAVA_TOOL_OPTIONS
              value: >-
                -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n            
                -Dcom.sun.management.jmxremote=true
                -Dcom.sun.management.jmxremote.port=3000            
                -Dcom.sun.management.jmxremote.rmi.port=3001
                -Djava.rmi.server.hostname=127.0.0.1            
                -Dcom.sun.management.jmxremote.authenticate=false
                -Dcom.sun.management.jmxremote.ssl=false

Поскольку имя модуля изменяется при каждом (повторном) развертывании Я пытаюсь найти команду oc, которую можно использовать для перенаправления портов без указания имени модуля . (Например, на основании названия сервиса) Или совершенно другое решение, которое позволяет мне нажать 1 кнопку для настройки сеанса отладки (предпочтительно в intelliJ).

> Настройки экрана IntelliJ

----------------------------- редактировать после подсказок --------------- ----------------

Пока что я сделал небольшой пакетный скрипт, который делает свое дело: Не стесняйтесь помочь с еще более быстрым решением (Проверяю https://openshiftdo.org/) или другие решения IntelliJent


    set /p _username=Type your username:
    set /p _password=Type your password:
    oc login replace-with-openshift-console-url --username=%_username% --password=%_password%
    oc project replace-with-project-name  
    oc get pods --selector app=replace-with-app-name -o jsonpath={.items[?(@.status.phase=='Running')].metadata.name} > temp.txt
    set /p PODNAME= <temp.txt
    del temp.txt
    oc port-forward %PODNAME% 8000 3000 3001

1 Ответ

0 голосов
/ 13 июня 2019

Вам понадобится имя pod для переноса вперед, но, конечно, вы можете получить его программно, поэтому вам не нужно каждый раз обновляться на месте.

Есть несколько способов сделать это, используя jsonpath, go template, bash и т. Д. Например, можно использовать следующее, заменяя имя вашего приложения, как требуется:

oc get pod -l app=replace-me -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'

...