Helm Chart

Helm Chart

Helm Chart pre D2000 zjednodušuje nasadenie D2000 aplikácie do prostredia Kubernetes tak, že konfiguračné YAML súbory zabaľuje do jedného celku šablón, ktorých konfigurácia je redukovaná na súbor premenných values.yaml. K tomuto súboru sa doplnia už len súbory s heslami a licenciou D2000 (LicenceRun.code).

Získanie chartu z OCI registry

Chart d2deploy je publikovaný v OCI registry Ipesoft na adrese oci://registry.ipesoft.com/ipesoft/d2deploy a je verejne čitateľný (na stiahnutie nie je potrebné prihlásenie).

Helm 3.8+ vie pracovať s OCI registry natívne, netreba pridávať klasické helm repo.

Zobrazenie metadát chartu:

# popis chartu helm show chart oci://registry.ipesoft.com/ipesoft/d2deploy --version <verzia> # všetky obsiahnuté súbory helm show all oci://registry.ipesoft.com/ipesoft/d2deploy --version <verzia>

Vygenerovanie vzorového values.yaml - vypíše predvolené hodnoty, odporúča sa presmerovať do súboru a upraviť pre konkrétnu aplikáciu:

helm show values oci://registry.ipesoft.com/ipesoft/d2deploy --version <verzia> > values.yaml

Stiahnutie chartu lokálne (napr. pre vlastnú úpravu šablón alebo offline inštaláciu):

helm pull oci://registry.ipesoft.com/ipesoft/d2deploy --version <verzia> --untar # vytvorí adresár ./d2deploy/

Konfigurácia (values.yaml)

Konfiguračný súbor values.yaml je rozdelený do viacerých sekcií. Prvá sekcia obsahuje základné premenné ako napríklad názov a popis aplikácie, definíciu časového pásmu zo zoznamu časových pásiem, adresu repozitára pre image a ich predvolený tag. Niektoré z týchto premenných sú kontajnerov odovzdávné ako premenné prostredia. Taktiež sa tu definuje adresa databázového servera a perzistenté úložisko podľa špecifikácie PersistentVolumeClaimSpec. Taktiež je tu možné definovať ďalšie, pre všetky kontajnery spoločné, premenné prostredia. Toto je vhodné miesto pre definovanie premenných prostredia napríklad pre zber dát cez OpenTelemetry.

Základné premenné
d2App: d2000_helm # Názov D2000 aplikácie. Prenesie sa do runtime ako premenná prostredia D2APP. d2AppDesc: "K8s testovacia aplikácia" # Popis D2000 aplikácie. Prenesie sa do runtime ako premenná prostredia D2APPDESC. d2PersistentVolumeClaimSpec: # Špecifikácia PVC pre uloženie D2000 konfigurácie (PersistentVolumeClaimSpec). accessModes: [ ReadWriteMany ] resources: requests: storage: 1Gi storageClassName: rook-ceph-filesystem dbHost: 192.168.1.100 # Adresara databázového servera. imageRegistry: registry.ipesoft.com # Globálne nastavenie repozitára image-ov. imageTag: v26.00.082 # Globálne nastavenie tagu image-ov. timeZone: Europe/Bratislava # Názov časoveho pásma. Prenesie sa do runtime ako premenná prostredia TZ. # Dodatočné spoločné premenné prostredia: env: OTEL_EXPORTER_OTLP_ENDPOINT: http://otelcolt-opentelemetry-collector.monitoring.svc.cluster.local:4318/ OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf

Súčasťou konfigurácie sú aj súbory s chránenými údajmi, nachádzajúce sa v adresári pri values.yaml, ktoré sú referencované premennými v tomto súbore.

Premenná

Predvolený súbor

Obsah

Premenná

Predvolený súbor

Obsah

d2EdaPasswordFile

eda_password.txt

Heslo používateľa EDA v aplikačnej databáze. Vyžadované ak je d2EdaUser neprázdne.

d2LicenceFile

LicenceRun.code

Licenčný súbor D2000.

dbAdminPasswordFile

db_admin_password.txt

Heslo administrátora databázy (dbAdmin).

V ďalšej časti súboru values.yaml sa definuje typ aplikácie z hľadiska využitia alebo nevyužitia redundancie D2000 serverov a to definovaním premennej d2Kernel, ak nebude využitá redundancia, alebo premennej d2RedundantKernels, ak bude využitá redundancia.

Definícia redundantných D2000 serverov
d2RedundantKernels: - imageName: ipesoft/d2/kernel_odbc d2Name: a d2KernelAntiAffinity: true d2KernelPriority: 2 - imageName: ipesoft/d2/kernel_odbc d2Name: b d2KernelAntiAffinity: true d2KernelPriority: 1

Pri pripájaní ďalšieho procesu D2000 Server do redundancie je automaticky spúšťaná utilita D2000 CfgSynchroAuto na synchronizáciu konfiguračných databáz.

Následne sa definujú procesy staticky pripojené ku D2000 serveru (v premennej d2StaticKernelProcesses). Ide o pripojenie procesu ku kernelu pomocou štartovacieho parametra /S. Pre tieto procesy je v prípade redundancie D2000 serverov automaticky vytvorená inštancia pre každý z redundantných kernelov a ich Pod-y predvolene bežia na rovnakom Node ako kernel, ku ktorému sú pripájené. Tieto Pod-y zároveň zdieľajú rovnakú cestu perzistentného úložiska so svojim D2000 serverom.

Definícia staticky ku D2000 serveru pripojených procesov
d2StaticKernelProcesses: - imageName: ipesoft/d2/alarm # SELF.ALA - imageName: ipesoft/d2/calc # SELF.CLC - imageName: ipesoft/d2/dbmanager_odbc # SELF.DBM argsAdd: [ "/DBSH" ]  - imageName: ipesoft/d2/event_java_edathin # SELF.EVH - imageName: ipesoft/d2/kom                 # SELF.KOM securityContext: capabilities: add: [ "NET_RAW", "NET_BIND_SERVICE", "DAC_OVERRIDE", "SYS_RAWIO" ] argsAdd: [ "/DBSH" ]

Premennou d2ActiveKernelProcesses sa definujú procesy, ktoré sú pripojené vždy len k aktívnemu D2000 serveru v redundancii. Tu ide o pripojenie procesu do redundantnej skupiny pomocou štartovacieho parametra /RF. V prípade, že je aj pre Pod-y týchto procesov žiadané, aby sa držali na rovnakom Node ako niektorý z redundantných kernelov a zdieľali s nimi aj cestu perzistentného úložiska, je možné takéto správanie vynútiť atribútom d2KernelAffinity, v ktorom sa definuje meno redundantného kernela, ktorého sa majú držať.

Definícia procesov pripojených vždy k aktívnemu D2000 serveru v redundancii
d2ActiveKernelProcesses: - imageName: ipesoft/d2/archiv_odbc # SELF.ARC - imageName: ipesoft/d2/edaserver_odbc # SELF.EDS

Ako atribúty D2000 servera a všetkých procesov je možné použiť atribúty Kubernetes objektu Container. Okrem týchto je možné použiť nasledovné atribúty:

Atribút

Použiteľnosť v definícii

Popis

Atribút

Použiteľnosť v definícii

Popis

argsAdd

d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses

V prípade, že na procese nie je definovaný štandardný atribút kontajnera args, bude tento automaticky vytvorený.

Medzi automaticky dopĺňané parametre procesu patria: /C, /EDADSN, /EDAFPWD, /EDAG, /EDAP, /EDAUSR, /F, /N, /RF, /S, /W, --CLUSTER-JOIN, --CONNECTOR_LISTEN_PORT. Ručné preťažovanie týchto parametrov v atribúte argsAdd sa neodporúča a výsledné správanie nie je definované.

Atribútom argsAdd sa definujú štartovacie parametre, ktoré budú doplnené za automaticky generované parametre.

d2Cluster

d2StaticKernelProcesses, d2ActiveKernelProcesses

Ak je definované, tak za d2Name pridá index Pod-u $(POD_INDEX) a pre Event Handler pridá parameter --CLUSTER-JOIN=<d2Cluster>, kde d2Cluster špecifikuje meno clustra Event Handlerov. Pre ostatné typy procesov (EDA Server, SmartWeb) meno clustra nemá význam a akceptuje sa hodnota true.

Len pre procesy typu Event Handler, EDA Server a SmartWeb.

d2EdaGroup

d2StaticKernelProcesses, d2ActiveKernelProcesses

Názov EDA server (pod)skupiny. Predvolene "EDA".

Len pre procesy typu EDA Server.

d2Instance

d2StaticKernelProcesses, d2ActiveKernelProcesses

Inštancia procesu. Len pre D2000 inštančné procesy.

d2KernelAffinity

d2StaticKernelProcesses, d2ActiveKernelProcesses

Pri procesoch pripojených ku neredundantnému kernelu umožňuje (nastavením na false) vypnúť držanie sa na Node svojho kernela.

Pri procesoch pripojených ku aktívnemu kernelu v redundancii umožňuje (nastavením na meno kernela) vynútiť držanie sa pri niektorom z redundantných kernelov.

d2KernelAntiAffinity

d2RedundantKernels

Vynúti beh na inom node ako ostatné kernely. Len pre D2000 server v redundancii.

d2KernelPriority

d2RedundantKernels

Priorita kernela v redundancii. Len pre D2000 server v redundancii.

d2ListeningPort

d2StaticKernelProcesses, d2ActiveKernelProcesses

Nastavenie portu pre klientske procesy D2000, ktoré otvárajú port: D2Connector (predvolene 3120) alebo EDA Server (predvolene 3121).

d2Name

d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses

Meno (bez prípony) D2000 objektu. Ak nie je zadané, použije sa SELF. Pre meno K8s objektu bude upravené na K8s konvenciu mien.

Výsledné meno K8s objektu bude zložené nasledovne: d2-<d2Type>[-<d2KernelAffinity>]-<d2Name>[-<d2Instance>].

d2SmartWebConfig

d2StaticKernelProcesses, d2ActiveKernelProcesses

Obsah konfiguračného súboru application.yaml pre SmartWeb.

d2Type

d2StaticKernelProcesses, d2ActiveKernelProcesses

Typ (prípona) D2000 procesu. Ak nie je zadané, tak sa odvodí z názvu image.

imageName

d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses

Názov image bez adresy repozitára a špecifikácie tag-u.

Ak nie zadaný štandardný atribút image, tak je tento vyskladaný nasledovne: imageRegistry/imageName:imageTag

Prioritu majú atribúty definované na procese, inak sú použité preddefinované globálne hodnoty z values.yaml.

imagePullPolicy

d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses

Preťaženie globálneho imagePullPolicy.

imageRegistry

d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses

Preťaženie globálneho imageRegistry.

imageTag

d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses

Preťaženie globálneho imageTag.

initContainers

d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses

Definícia inicializačných kontajnerov. Inicializačný kontajner D2000 s menom d2-init je generovaný automaticky.

replicas

d2StaticKernelProcesses, d2ActiveKernelProcesses

Pocet replík. Viac ako 1 je možné použiť pre SmartWeb a procesy s definovaným atribútom d2Cluster.

volumeMountsAdd

d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses

Ak nie je definovaný štandardný atribút kontajnera volumeMounts, tak bude automaticky vygenerovaný. Medzi automaticky dopĺňané mount-y patria cesty: /config, /opt/d2000/app a /opt/d2000/log.

Atribútom volumeMountsAdd sa definujú mount-y, ktoré budú doplnené za automaticky generované.

Inštalácia, upgrade a rollback

Po konfigurácii súboru values.yaml a doplnení súborov s heslami a licenciou je nasadenie D2000 aplikácie do K8s realizované príkazom:

Inštalácia / upgrade priamo z OCI registry (odporúčané):

helm upgrade -i -f values.yaml my-d2deploy oci://registry.ipesoft.com/ipesoft/d2deploy --version <verzia>

Inštalácia z lokálne stiahnutého chartu (po helm pull --untar):

helm upgrade -i -f values.yaml my-d2deploy ./d2deploy

, kde my-d2deploy je názov nasadeného Helm Chartu (release). Ako názov release sa odporúča použiť názov aplikácie s prípadne zakomponovaným názvom prostredia (test / prod). Rovnakým príkazom sa aplikujú aj zmeny a vytvára sa nová revízia Helm Chartu.

Rollback na predchádzajúcu revíziu:

V prípade, že nasadenie zmien neprebehlo úspešne, je možné vykonať rollback na predchádzajúcu (alebo inú špecifikovanú) revíziu príkazom:

helm rollback my-d2deploy

Odinštalovanie

helm uninstall my-d2deploy

Pozor: helm uninstall odstráni Kubernetes objekty patriace do release-u. Odstránenie alebo ponechanie dát na perzistentnom úložisku závisí od nastavenia PersistentVolume, ktoré nie je súčasťou release-u ale používa sa ním.