[HUN] Kubernetes - Spring livereload 2. rész — Kustomize-áljunk
Az előző részben elkészítettünk egy kezdetleges deploy rendszert, mely a lokális K8s klaszterünkbe telepíti az alkalmazásunk.
Mivel egy project fejlesztése során több környezetünk is lehet, szeretnénk olyan rendszert alkotni, amely segítségével minden környezetre képesek vagyunk telepíteni csak az eltérések megadása segítségével.
Erre nyújt megoldást többek között a Helm és a Kustomize. Ebben a leírásban az utóbbit fogjuk használni, mely része a kubectl parancssori eszköznek.
A Kustomize egy template mentes konfiguráció generátor, mely segítségével környezetenként módosíthatjuk az alap Kubernetes objektumainkat.
Ehhez az alkalmazás könyvtárában létrehozunk egy új könyvtár struktúrát és benne a telepítéshez szükséges fájlokat.
Mielőtt nekilátnánk az átalakításnak, a build.gradle fájlban a függőségek közé felvesszük a spring actuator csomagot. Az Actuator automatikusan létrehozza a liveness és readiness végpontokat, melyek segítségével a K8s monitorozni tudja az alkalmazás állapotát illetve azt, mikor engedhet forgalmaz az adott pod-ra.
Ezt követően az alkalmazást felparaméterezzük, hogy a management (actuator) végpontok a 9000-es porton hallgassanak.
K8s környezetben a két végpont automatikusan engedélyezésre kerül. A fenti beállításokkal ezek lokális futtatásnál is elérhetőek lesznek.
Ezt követően elkészítjük a base mappában a közös leírókat.
A fenti fájl az előző részben tárgyalt Deployment leíró, kiegészítve a korábban előkészített liveness és readiness probe-okkal, erőforrás limitekkel, valamint egy felcsatolt kötettel, mely a spring konfigurációs fájlját tartalmazza.
Ezzel felülírhatjuk az alkalmazás resources mappájában lévő alap config fájlban megadott értékeket, illetve kiegészíthetjük azokat. A Spring keretrendszer ugyanis az alkalmazás mappájában lévő configs könyvtárból magasabb precedenciával olvas fel mint az alkalmazás resources könyvtárából.
A client-port-service.yaml fájl tartalma megegyezik az előző részben a deployment.yaml fájlban definiált client-port nevű service-vel.
A kustomization.yaml fájl fogja össze a telepítéshez használt fájlokat.
Az overlays könyvtár alatt az egyes környezetek egyedi konfigurációi találhatók.
Először elkészítjük a lokális dev környezethez tartozó konfigurációt a dev alkönyvtárba.
Itt személyre szabjuk az alkalmazás nevét. Jelen esetben hozzáillesztjük a dev előtagot, valamint felcímkézzük az összes erőforrást az environment: dev értékkel. A configs mappában lévő fileból készítünk egy ConfigMap-et. Ezen erőforrást fogja a Deployment felcsatolni az alkalmazáshoz. Egyelőre hagyjuk üresen a filet, később visszatérünk rá.
Erőforrásként megadjuk a kiindulási alapot, ezt fogja a Kustomize módosítani a dev mappában megadott értékekkel.
El is készültünk az átalakítással. A következő paranccsal kiirathatjuk a dev környezethez létrejövő, végleges leírók tartalmát:
kubectl apply -k .\deployment\overlays\˛dev\ --dry-run=client -o yaml
Szeretnénk ha a Skaffold is Kustomize segítségével telepítené az alkalmazást, így egy kis átalakítást eszközölünk a deploy szekcióban:
Futtassuk az alkalmazást újra az előző részben megismert paranccsal.
Látható hogy a pod megkapta a dev előtagot, melyet a dev környezetben definiáltunk a ConfigMap generátorral együtt.
A második rész forráskódja elérhető itt.