Отлаживать приложение
На этом этапе мы развернули наше приложение в локальном кластере. Но теперь у нас есть проблема. Как отладить мое приложение, которое находится внутри докера, который находится внутри kubernetes, который находится внутри виртуальной машины?
Подготовка к отладке
В этом случае мы будем использовать удаленную отладку Java.
Первый шаг:
Подготовьте свой файл Dockerfile:
FROM openjdk:11.0.3-jdk-slim RUN mkdir /usr/myapp COPY target/java-kubernetes.jar /usr/myapp/app.jar WORKDIR /usr/myapp EXPOSE 8080 ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar app.jar" ]
Эта ТОЧКА ВХОДА позволяет передавать параметры java через переменную среды $JAVA_OPTS.
Второй шаг:
Изменение app-config app.yaml файла для заполнения $JAVA_OPTS .
JAVA_OPTS: "-agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n -Xms256m -Xmx512m -XX:MaxMetaspaceSize=128m"
Третий шаг:
Создание и развертывание приложения:
mvn clean install eval $(minikube -p dev.to docker-env) && docker build --force-rm -t java-k8s . kubectl apply -f kubernetes/app/
Четвертый шаг:
Предоставление порта отладки локальному хосту:
Получить капсулы:
kubectl get pods -n dev-to NAME READY STATUS RESTARTS AGE myapp-7796bc89bf-h2f82 1/1 Running 0 3h3m
Открыть порт pod 5005:
kubectl port-forward -n dev-to myapp-7796bc89bf-h2f82 5005:5005 Forwarding from 127.0.0.1:5005 -> 5005 Forwarding from [::1]:5005 -> 5005
Измените имя своего модуля по мере необходимости .
Создайте удаленную отладку на своей СТОРОНЕ:
В IntelliJ перейдите в раздел Запуск/Отладка конфигураций .
- Добавьте новую удаленную конфигурацию следующим образом:
После этого запустите настройку. Вы должны увидеть сообщение ниже:
Connected to the target VM, address: 'localhost:5005', transport: 'socket'
Проверьте, работает ли:
Теперь вы можете установить точку останова в HelloController .
minikube -p dev.to service -n dev-to myapp --url http://192.168.99.100:32301
curl http://192.168.99.100:32301/hello
Вывод
В этой части мы узнали о том, как отлаживать приложения внутри локального кластера kubernetes.
В следующей части мы рассмотрим некоторые рекомендации и способы доступа к приложению с удобным URL-адресом с помощью Ingress.
До скорой встречи!
Оригинал: “https://dev.to/sandrogiacom/kubernetes-for-java-developers-debug-application-4l1a”