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.

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

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
    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.

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

Nakoniec, premennou d2SmartWebDeployments sa definujú SmartWeb inštancie, ak majú byť použité.

Definícia SmartWeb inštancií
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útPoužiteľnosť v definíciiPopis
argsAddd2Kernel, 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.

d2Clusterd2StaticKernelProcesses, 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.

d2EdaGroupd2StaticKernelProcesses, d2ActiveKernelProcesses

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

Len pre procesy typu EDA Server.

d2ExternalIPd2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcessesIP adresa externej (z vonku K8s dostupného) služby poskytovanej procesom.
d2IngressHostd2SmartWebDeploymentsExterná symbolická adresa SmartWeb servera.
d2IngressPortd2SmartWebDeploymentsExterný port SmartWeb servera.
d2IngressTlsCertFiled2SmartWebDeploymentsNázov súboru s TLS certifikátom pre SmartWeb.
d2IngressTlsKeyFiled2SmartWebDeploymentsNázov súboru s privátnym kľúčom TLS certifikátu pre SmartWeb.
d2Instanced2StaticKernelProcesses, d2ActiveKernelProcessesInštancia procesu. Len pre D2000 inštančné procesy.
d2KernelAffinityd2StaticKernelProcesses, 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.

d2KernelAntiAffinityd2RedundantKernelsVynúti beh na inom node ako ostatné kernely. Len pre D2000 server v redundancii.
d2KernelPriorityd2RedundantKernelsPriorita kernela v redundancii. Len pre D2000 server v redundancii.
d2ListeningPortd2StaticKernelProcesses, d2ActiveKernelProcessesNastavenie portu pre klientske procesy D2000, ktoré otvárajú port: D2Connector (predvolene 3120) alebo EDA Server (predvolene 3121).
d2Named2Kernel, 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>].

d2SmartWebConfigd2SmartWebDeploymentsObsah konfiguračného súboru application.yaml pre SmartWeb.
d2Typed2StaticKernelProcesses, d2ActiveKernelProcessesTyp (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.

imagePullPolicyd2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeploymentsPreťaženie globálneho imagePullPolicy.
imageRegistryd2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeploymentsPreťaženie globálneho imageRegistry.
imageTagd2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeploymentsPreťaženie globálneho imageTag.
initContainersd2Kernel, d2RedundantKernels, d2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeploymentsDefinícia inicializačných kontajnerov. Inicializačný kontajner D2000 s menom d2-init je generovaný automaticky.
replicasd2StaticKernelProcesses, d2ActiveKernelProcesses, d2SmartWebDeploymentsPocet 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

Nie ste prihlásený. Akékoľvek zmeny, ktoré vykonáte, sa označia ako anonymné. Ak už máte svoj účet, pravdepodobne sa budete chcieť prihlásiť .