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).
Konfigurácia
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.
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
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.
d2RedundantKernels:
- imageName: ipesoft/d2/kernel_odbc
d2Name: a
d2KernelAntiAffinity: true
d2KernelPriority: 2
d2ExternalIP: 192.168.253.1
- imageName: ipesoft/d2/kernel_odbc
d2Name: b
d2KernelAntiAffinity: true
d2KernelPriority: 1
d2ExternalIP: 192.168.253.2
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.
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ť.
d2ActiveKernelProcesses: - imageName: ipesoft/d2/archiv_odbc # SELF.ARC - imageName: ipesoft/d2/edaserver_odbc # SELF.EDS
Nakoniec, premennou d2SmartWebDeployments sa definujú SmartWeb inštancie, ak majú byť použité.
d2SmartWebDeployments:
- imageName: ipesoft/d2/smartweb-demo
d2IngressHost: d2.app.k8s.ipstest.sk
d2IngressPort: 80
d2IngressTlsCertFile: certificate.crt
d2IngressTlsKeyFile: private.key
d2SmartWebConfig: |-
smartweb:
connections:
- host: "d2-dcs-a-self"
port: 3120
- host: "d2-dcs-b-self"
port: 3120
server:
port: 80
Ako atribúty D2000 servera a všetkých procesov vrátane SmartWeb-u 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 |
|---|---|---|
| argsAdd | d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeployments | 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 proces typu EDA Server meno clustra nemá význam a akceptuje sa hodnota true. Len pre procesy typu Event Handler a EDA Server. |
| d2EdaGroup | d2StaticKernelProcesses, d2ActiveKernelProcesses | Názov EDA server (pod)skupiny. Predvolene "EDA". Len pre procesy typu EDA Server. |
| d2ExternalIP | d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses | IP adresa externej (z vonku K8s dostupného) služby poskytovanej procesom. |
| d2IngressHost | d2SmartWebDeployments | Externá symbolická adresa SmartWeb servera. |
| d2IngressPort | d2SmartWebDeployments | Externý port SmartWeb servera. |
| d2IngressTlsCertFile | d2SmartWebDeployments | Názov súboru s TLS certifikátom pre SmartWeb. |
| d2IngressTlsKeyFile | d2SmartWebDeployments | Názov súboru s privátnym kľúčom TLS certifikátu pre SmartWeb. |
| d2Instance | d2StaticKernelProcesses, d2ActiveKernelProcesses | Inštancia procesu. Len pre D2000 inštančné procesy. |
| d2KernelAffinity | d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeployments | 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, d2SmartWebDeployments | 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 | d2SmartWebDeployments | 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, d2SmartWebDeployments | 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, d2SmartWebDeployments | Preťaženie globálneho imagePullPolicy. |
| imageRegistry | d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeployments | Preťaženie globálneho imageRegistry. |
| imageTag | d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeployments | Preťaženie globálneho imageTag. |
| initContainers | d2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeployments | Definícia inicializačných kontajnerov. Inicializačný kontajner D2000 s menom d2-init je generovaný automaticky. |
| replicas | d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeployments | 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, d2SmartWebDeployments | 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:
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. 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
0 komentárov