Od verzie 26 systém D2000 podporuje kontajnerizáciu na platforme Kubernetes (K8s).

Tento dokument obsahuje základný prehľad vlastností a funkcionality.

Prehľad

Kontajnerizovaná D2000 má nasledovné vlastnosti:

Image repozitár

Image jednotlivých D2000 procesov sú dostupné v internom repozitári Harbor. Image sú určené pre platformu x86_64-linux. 

Názvoslovie používaných tag-ov je nasledovné: v<major>.<minor>.<release>[-<patch>]

Napr. v26.00.082-123 alebo v26.00.082.

Tag bez čísla patchu je vždy aplikovaný na posledný vygenerovaný patch, čo umožňuje automatický rolling update na najnovší patch danej verzie a releasu. Tag latest je používaný len na interné image vývojovej vetvy.

Zoznam image

Na minimalizáciu použitého diskového priestoru pri nasadení sú pre vybrané procesy k dispozícii viaceré varianty: podľa databázového rozhrania ODBC a OCI (DBManager, EDA Server, Archív) a podľa podpory Javy (Kernel, Event Handler).

Názov imageD2000 komponent/proces
ipesoft/d2/alarmD2000 ALARM
ipesoft/d2/archiv_ociD2000 ARCHIV. Prístup k dátam cez Oracle Call Interface (OCI).
ipesoft/d2/archiv_odbcD2000 ARCHIV. Prístup k dátam cez ODBC.
ipesoft/d2/arcsynchro_ociArcSynchro. Prístup k dátam cez OCI.
ipesoft/d2/arcsynchro_odbcArcSynchro. Prístup k dátam cez ODBC.
ipesoft/d2/calcD2000 CALC
ipesoft/d2/d2connectorD2Connector
ipesoft/d2/d2pingD2000 Ping
ipesoft/d2/dbmanager_ociD2000 DBManager. Prístup k dátam cez OCI.
ipesoft/d2/dbmanager_odbcD2000 DBManager. Prístup k dátam cez ODBC.
ipesoft/d2/edaserver_ociEDA Server. Prístup k dátam cez OCI.
ipesoft/d2/edaserver_odbcEDA Server. Prístup k dátam cez ODBC.
ipesoft/d2/eventD2000 Event Handler alebo D2000 Script Execution Server
ipesoft/d2/event_edathinD2000 Event Handler alebo D2000 Script Execution Server so vstavaným EDA Client
ipesoft/d2/event_edathin_odD2000 Event Handler alebo D2000 Script Execution Server so vstavaným EDA Client a OD knižnicou
ipesoft/d2/event_javaD2000 Event Handler alebo D2000 Script Execution Server s Java Runtime Environment (JRE)
ipesoft/d2/event_java_edathinD2000 Event Handler alebo D2000 Script Execution Server s JRE a vstavaným EDA Client
ipesoft/d2/event_java_edathin_odD2000 Event Handler alebo D2000 Script Execution Server s JRE, vstavaným EDA Client a OD knižnicou
ipesoft/d2/gtwcliD2000 GateWay Client
ipesoft/d2/gtwsrvD2000 GateWay Server
ipesoft/d2/init_odbcInicializačný kontajner
ipesoft/d2/kernel_odbcD2000 Server. Prístup k dátam cez ODBC.
ipesoft/d2/kernel_odbc_javaD2000 Server s JRE. Prístup k dátam cez ODBC.
ipesoft/d2/komD2000 KOM
ipesoft/d2/opcuaserverD2000 OPC UA Server
ipesoft/d2/sasD2000 SAS
ipesoft/d2/smartwebSmartWeb
ipesoft/d2/smartweb-demoSmartWeb s demo aplikáciou
ipesoft/d2/switchD2000 Switch
ipesoft/d2/tcldeployerD2000 Thin Client Deployer
ipesoft/d2/tctsD2000 Thin Client Terminal Server
ipesoft/d2/tellD2000 TELL
ipesoft/d2/topologyD2000 Topology

Použitie

Kontajnery očakávajú mapovanie nasledovných ciest na perzistenté úložisko. Najbežnejší je tzv. "bind mount", kedy je adresár v kontajneri mapovaný do adresára v hostiteľskom stroji. Takto je možný jednoduchý prístup k dátam aj mimo kontajnera.

CestaPopis
/configAdresár konfiguračných súborov pre D2000, ODBC DSN a Oracle TNS
/opt/d2000/appAplikačný adresár. Narozdiel od štandardného nekontajnerizovaného nasadenia neobsahuje dáta konfiguračnej, monitorovacej ani archívnej databázy.
/opt/d2000/logLogovací adresár

Referenčná implementácia

Referenčná implementácia zahŕňa redundantnú (2-nodovú) aplikáciu D2000.

V prostredí K8s sú spustené 2 procesy D2000 Server (A, B), pričom pomocou konfigurácie anti-afinity je dosiahnuté, že nebežia v rámci jedného nodu. V rámci aplikácie sú spustené všetky potrebné procesy ako samostatné pody, pričom pomocou konfigurácie afinity je dosiahnuté, že bežia na tom istom node ako príslušný D2000 Server. Všetky procesy bežia v režime vzdialených procesov a majú teda v konfigurácii D2000 vypnutý autoštart. O životný cyklus pod-ov sa starajú StatefulSet controllery.

Redundantná aplikácia má dva procesy D2000 Archív, fungujúce ako inštancie (aktívna a pasívne) a pripájajúce sa k aktívnemu (HOT) procesu D2000 Server. Pomocou konfigurácie afinity je dosiahnuté, že inštancia 1 bežia node s D2000 Serverom A, inštancia 2 s D2000 Serverom B.

Utilita D2000 CfgSynchroAuto je spúšťaná automaticky procesom D2000 Server pri pripájaní druhého procesu D2000 Server do redundancie, na synchronizáciu konfiguračných databáz.

Utilita D2000 Arcsynchro je spúšťaná automaticky príslušnou inštanciou procesu D2000 Archív pri štarte na zaplátanie diery v jeho archívnej databáze.

Vytvorenie aplikácie prebieha ručným vytvorením konfiguračnej, monitorovacej, archívnej a aplikačnej databázy pomocou template SQL skriptov alebo exportom existujúcich databáz a ich importom v cieľovom databázovom systéme. Následne je potrebné vytvoriť K8s objekty. Pre procesy D2000 je pripravený pomocný Helm Chart súbor, ktorého výstupom sú konfiguračné YAML súbory pre jednotlivé procesy. Pre ostatné konfiguračné objekty ako perzistentné úložisko, D2000 a ODBC/OCI konfiguračné súbory a pod. sú poskytnuté priamo YAML súbory.

Nasledovné schémy znázorňujú porovnanie nasadenia referenčnej aplikácie v prostredí virtuálnych mašín (VM) a v prostredí Kubernetes.

                                       

Sieťové prestupy

Do prostredia Kubernetes clustra sú povolené štandardne porty:

Do vonkajšieho prostredia sú povolené štandardne porty:

Správa aplikácie

Správa aplikácie bežiacej v prostredí Kubernetes je možná z management konzoly príkazmi nástroja kubectl alebo cez webovú management platformu, napr. Rancher.

Vypnutie/zapnutie procesu

Pretože D2000 proces je v K8s reprezentovaný objektom typu StatefulSet, vypnutie a zapnutie procesu znamená nastavenie počtu replík StatefukSet-u na 0 (vypnutie) resp. na 1 (zapnutie). Pri vyššom počte replík by vznikol D2000 proces s rovnakým menom ako už beží a preto by ho D2000 server odmietol pripojiť. Podpora viacerých replík D2000 procesov prostriedkami K8s momentálne nie je podporená, je však plánovaná pre vybrané typy procesov.

# syntax:
kubectl scale statefulset <name> [-n <namespace>] --replicas=<count>

# príklad:
kubectl scale statefulset d2-ala-a-self --replicas=0

Výpis štandardného výstupu

# syntax:
kubectl logs <pod-name> [-n <namespace>]

# príklad:
kubectl logs d2-clc-a-self-0

(Re)deploy procesu

Deploy StatefulSet-u v sebe zahŕňa ukončenie bežiacich replík pod-ov, stiahnutie najnovších použitých image s daným tag-om, a pre každú repliku pod-u spustenie init kontajnerov a následné spustenie kontajnerov. V prípade, že kontajner používa image bez čísla patchu, bude stiahnutý najnovší patch daného D2000 procesu.

# syntax:
kubectl rollout restart statefulset <name> [-n <namespace>]

# príklad:
kubectl rollout restart statefulset d2-evh-a-self

Nasadenie patchu

Nasadenie patchu je realizované modifikáciou image v príslušnom StatefulSet-e. Po modifikácii image K8s automaticky vykoná redeploy StatefulSet-u.

# syntax:
kubectl set image statefulset/<name> [-n <namespace>] <container-name>=<image-name>

# príklad:
kubectl set image statefulset/d2-clc-a-self -n k8s-dev d2container=harbor.k8s.ipstest.sk/ipesoft/d2/calc:v25.00.080