Java, Azure a Kubernetes: Výborná kombinace - vyzkoušejte si sami

Ve spolupráci s Gopasem proběhlo 31.1.2019 školení na nasazování Java aplikací v Azure Kubernetes Service. Zúčastnilo se 48 posluchačů se svými notebooky, na nichž byl většinou Linux nebo MacOS,  cloud jsme poskytli formou Azure kreditů zdarma pro každého účastníka. (Zájem byl asi dvojnásobný, jen jsem již neměl větší místnost ani více Azure kreditů.) Naši Microsoft TSPs Tomáš Kubica, Valda Zavadsky a Tomáš Slavík , připravili pro tento workshop podklady, které najdete na GitHubu  https://github.com/azurecz/java-k8s-workshop  . Níže je stručný obsah.

Modul první - zabalení Java aplikace do kontejneru a nahrání do Azure Container Registry

V prvním modulu se seznámíte s tím, jak jsme Java aplikaci zabalili do kontejneru. Kolegové připravilli jednoduchou aplikaci postavenou na frontend single-page-app a backend API pro todo využívající PostgreSQL v Azure jako službu pro datovou perzistenci. Můžete se mrknout jak používají Maven pro kompilaci a kompletaci kódu todo. Také jsme následovali best practice a oba kontejnery neběží pod rootem, ale neprivilegovaným účtem. K dispozici máte také Docker Compose file, abyste mohli kód snadno spustit i lokálně na notebooku. Vzykoušíte si i cvičně pustit kontejner bez orchestrátoru v Azure Container Instances s využitím Azure Container Registry.

Modul druhý - úvod do Azure Kubernetes Service (AKS)

Druhý modul je základním úvodem do AKS. Vyzkoušíte si nasazení do clusteru, práci s labely, Deployment a Service, rolling upgrade a nainstalujete si Helm a Ingress pro pozdější využití v labu.

Modul třetí - nasazení Java aplikace do AKS

Ve třetím modulu si vytvoříte Azure PostgreSQL instanci, zadáte přístupové údaje do Secret a nasadíte aplikaci přes Deployment, Service a Ingress.

Modul čtvrtý - detailnější pohled na AKS pro naší Java aplikaci

Ve čtvrtém modulu si vyzkoušíte další vlastnosti AKS, které se vám můžou hodit. Namapujete si sdílený Volume pro statický obsah implementovaný přes Azure Files, použijete ConfigMap pro custom nastavení NGINX ve kterém servírujeme frontend, init kontejner, downwards API a sdílený kontejner pro inicializaci a předání některých provozních údajů. Dále si pustíte CronJob pro pravidelné exporty dat z PostgreSQL a na závěr si ukážeme použití anotací pro pokročilejší nastavení NGINX Ingress.

Modul pátý - CI/CD s Java aplikací a AKS

Pátý modul obsahuje zajímavé přístupy k CI/CD s využitím Helm. První varianta jede ve stylu GitOps, takže není postavena na žádném tradičním orchestračním nástroji, ale s využitím projektu Flux, který elegantně propojuje Git s nasazením do Kubernetes. Ve druhé variantě uvidíte tradičnější pohled s CI/CD nástrojem Jenkins a také s využitím cloudové CI/CD služby Azure DevOps.

 

Pokud si chcete s Dockerem v Azure "jen tak trochu začátečnicky pohrát bez nutnosti zakládat jakoukoli vlastní Azure Subskripci", pak si vyzkoušejte na Microsoft Learn některé krátké kurzy např.  https://docs.microsoft.com/en-us/learn/modules/run-docker-with-azure-container-instances/ (... A nemáte-li v oblibě příkazovou řádku stejně jako já, tak se v průběhu kurzu koukněte na https://portal.azure.com/  ono to tam pěkně graficky ukazuje ty zdroje tvořené pomocí CLI :)

 

// Zpracováno z podkladů Tomášova blogu//