Problem polega na tym, że ja nie znam kubernetesa i chmur, a devopsi nie znają javy. :)
"DevOps" dobre. Wręcz piękne. Betonowa ściana pomiędzy development i operations nazwana "DevOps".
Takie oczywiste fakty, k8s nie ma żadnego wpływu na działanie kontenera, kontener nie ma żadnego wpływu na działanie aplikacji. Dalej nie rozumiem co znaczy "się zatrzymuje"? Co właściwie się dzieje:
- aplikacja nie startuje
- kontener w kubernetesie się restartuje (podłącz się np. przez k9s do klastra i zobacz)
- co się dzieje w logach?
Jeżeli już masz zlokalizowany @PostConstruct
, który "nie przechodzi", to problem prawdopodobnie leży w nim. To co może się dziać:
- Masz tam jakieś połączenie do usługi zewnętrznej, które jest niemożliwe do zrealizowania. Baza danych, key vault, kolejka whatever,
- Błędne sekrety
- Nie zgadzają się limity pamięci dla aplikacji, poda.
Co znaczy, że "lokalnie nie występuje", piszesz o odpaleniu aplikacji java -jar app.jar
, czy uruchomieniu kontenera w dockerze, czy uruchomieniu kilku kontenerów w minikube?
Sorki, musisz oganąć podstawy zabaw z kontenerami:
Zacznij od:
-
K9s - narzędzie konsolowe, ale z interfacem
- IntelliJ ma jakieś pluginy do kubernetesa, podobno działają
- nauczenie się jak pobrać logi z klastra kubernetesowego też nie jest zadaniem szczególnie wymagającym, weź jakiegoś devopsa za twarz i niech cię nauczy
- możesz zmienić definicję kontenera, tak, żeby aplikacja w środku odpalała się w trybie debug https://www.baeldung.com/java-application-remote-debugging oczywiście w definicji kontenera musisz wystawić na zewnątrz port debuggera, później możesz to nawet wypchnąć na środowisko docelowe, podłączyć się
kubectl
do klastra, otworzyć tunel dla debuggera sobie sprawdzać do woli pogooglaj jak używać kubectl port-forward