Podpora kontajnerizácie

Podpora kontajnerizácie

Od verzie 26 sú komponenty systému D2000 dostupné v Docker image-och a aplikáciu je teda možné prevádzkovať v kontajneroch.

K dispozícii je pripravený príklad nasadenia pomocou Docker compose pre lokálne nasadenia a na platforme Kubernetes (K8s) pomocou Helm Chart pre cloudové nasadenia. Tento dokument obsahuje základný prehľad vlastností a funkcionality kontajnerizovaného systému D2000.

Prehľad

Kontajnerizovaná D2000 má nasledovné vlastnosti:

  • Každý D2000 proces má samostatný image a je spustený ako samostatný kontajner.

  • Procesy bežia ako vzdialené, t.z. o ich štart sa nestará D2000 server.

  • Inštalácia D2000 je v kontajneri umiestnená v adresári /opt/d2000.

  • Proces D2000 Server a k nemu prislúchajúce procesy (ARC, CLC, EVH, EDS, ...) majú štandardne namapovaný spoločný diskový priestor:

    • Konfiguračné súbory inštalácie D2000 sú v kontajneroch umiestnené v adresári /config/d2000 (súbory instance.properties, ConsolesInfo.txt, LicenceRun.code). Tento adresár je zverejnený v environment premennej D2000_HOME.

    • Konfiguračné súbory aplikácie D2000 sú v kontajneroch umiestnené v aplikačnom adresári /opt/d2000/app/<appname> (súbory application.properties, client.properties).

    • Adresár s logmi je v kontajneroch umiestnený v adresári inštalácie (/opt/d2000/log).

  • Konfiguračná, monitorovacia, archívne aj aplikačné databázy sú na dedikovaných PostgreSQL databázových serveroch. Ich presné umiestnenie je nezávislé od umiestnenia inštancie D2000, predpokladá sa len ich sieťová dostupnosť. Prístupy k nim (ODBC DSN) sú definované v konfiguračnom súbore /config/odbc/odbc.ini, ktorého cesta je zverejnená aj v premennej prostredia ODBCINI.
    Poznámka: Aby sa nerozpadávali TCP spojenia medzi D2000 procesmi a PostgreSQL databázovými servermi, je potrebné v konfiguráciach ODBC spojení v konfiguračnom súbore /config/odbc/odbc.ini nastaviť nenulové parametre KeepaliveTimeKeepaliveInterval. Odporúčaná hodnota je 60 sekúnd:
    KeepaliveTime       = 60
    KeepaliveInterval   = 60

  • Procesy v kontajneroch bežia pod neprivilegovaným užívateľom a skupinou d2000 s UID 900 a GID 900.

  • Procesy D2000 Server, D2000 Kom a D2000 Web server vyžadujú nastavenie príslušných capabilities (prístup na privilegované sieťové porty, raw sockety, prípadne špeciálne súbory [sériové porty]) pomocou nastavenia capabilities (v konfiguračných YAML súboroch).

  • Licencovanie:

    • Je možné použiť licenčný súbor (LicenceRun.code) a/alebo

    • Licenčný server - môže ísť o verejný Ipesoft licenčný server alebo licenčný server v infraštruktúre zákazníka, ktorý používa Nitrokey USB kľúč.
      Možnosť behu licenčnéhe servera v kontajneri zatiaľ nebola podporená.

Image repozitár

Image jednotlivých komponentov D2000 sú dostupné v Ipesoft repozitári. Image sú určené pre platformu x86_64-linux a vychádzajú z oficiálneho image pre Ubuntu.

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ý build alebo 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, ktoré nie sú verejne dostupné.

Číslo patchu (123) je v zhode so záznamom v Patch_Info.txt:

Patch_Info.txt
2026-05-26 07:22:58 [0123] - bconto - docker - calc - Testovaci build

Zoznam image

Kvôli minimalizácii 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).

Špeciálne prístupové práva (capabilities) ako napr. prístup na privilegované sieťové porty, raw sockety či sériové porty v súčasnosti nie je možné zahrnúť do image a je potrebné ich zadať v runtime konfigurácii. V dodávanom Docker Compose súbore a Helm Charte sú automaticky nastavené.

Tabuľka zobrazuje image jednotlivých komponentov D2000 s potrebnými capabilities pre ich plnú funkčnosť.

Názov image

D2000 komponent/proces

Potrebné capabilities

ipesoft/d2/alarm

D2000 ALARM

 

ipesoft/d2/archiv_oci

D2000 ARCHIV. Prístup k dátam cez Oracle Call Interface (OCI). Súčasťou je aj utilita ArcSynchro.

 

ipesoft/d2/archiv_odbc

D2000 ARCHIV. Prístup k dátam cez ODBC. Súčasťou je aj utilita ArcSynchro.

 

ipesoft/d2/arcsynchro_oci

ArcSynchro. Prístup k dátam cez OCI.

 

ipesoft/d2/arcsynchro_odbc

ArcSynchro. Prístup k dátam cez ODBC.

 

ipesoft/d2/calc

D2000 CALC

 

ipesoft/d2/d2connector

D2Connector

 

ipesoft/d2/d2ping

D2000 Ping

 

ipesoft/d2/dbmanager_oci

D2000 DBManager. Prístup k dátam cez OCI.

 

ipesoft/d2/dbmanager_odbc

D2000 DBManager. Prístup k dátam cez ODBC.

 

ipesoft/d2/edaserver_oci

EDA Server. Prístup k dátam cez OCI.

 

ipesoft/d2/edaserver_odbc

EDA Server. Prístup k dátam cez ODBC.

 

ipesoft/d2/event

D2000 Event Handler alebo D2000 Script Execution Server

 

ipesoft/d2/event_edathin

D2000 Event Handler alebo D2000 Script Execution Server so vstavaným EDA Client

 

ipesoft/d2/event_edathin_od

D2000 Event Handler alebo D2000 Script Execution Server so vstavaným EDA Client a OD knižnicou

 

ipesoft/d2/event_java

D2000 Event Handler alebo D2000 Script Execution Server s Java Runtime Environment (JRE)

 

ipesoft/d2/event_java_edathin

D2000 Event Handler alebo D2000 Script Execution Server s JRE a vstavaným EDA Client

 

ipesoft/d2/event_java_edathin_od

D2000 Event Handler alebo D2000 Script Execution Server s JRE, vstavaným EDA Client a OD knižnicou

 

ipesoft/d2/gtwcli

D2000 GateWay Client

 

ipesoft/d2/gtwsrv

D2000 GateWay Server

 

ipesoft/d2/init_odbc

Inicializačný kontajner

 

ipesoft/d2/kernel_odbc

D2000 Server. Prístup k dátam cez ODBC. Súčasťou je aj utilita CfgSynchroAuto.

NET_RAW

ipesoft/d2/kernel_odbc_java

D2000 Server s JRE. Prístup k dátam cez ODBC. Súčasťou je aj utilita CfgSynchroAuto.

NET_RAW

ipesoft/d2/kom

D2000 KOM

DAC_OVERRIDE, NET_BIND_SERVICE, NET_RAW, SYS_RAWIO

ipesoft/d2/opcuaserver

D2000 OPC UA Server

 

ipesoft/d2/sas

D2000 SAS

 

ipesoft/d2/smartweb

SmartWeb

 

ipesoft/d2/smartweb-demo

SmartWeb s demo aplikáciou

 

ipesoft/d2/switch

D2000 Switch

 

ipesoft/d2/tcldeployer

D2000 Thin Client Deployer

 

ipesoft/d2/tcts

D2000 Thin Client Terminal Server

 

ipesoft/d2/tell

D2000 TELL

 

ipesoft/d2/topology

D2000 Topology

 

Použitie

Kontajnery majú predvolene nastavený entry point na príslušný proces. Pretože kontajnery d2/kernel a d2/event*, môžu za určitých okolností spúšťať ďalšie procesy, majú ako entry point použitý ľahký inicializačný systém tini, ktorý následne spúšťa príslušný proces. Preťažovať entry point kontajnerov teda nie je potrebné a zvyčajne ani nie je ani žiadané. Parametre pre procesy prednastavené nie sú a tak ich treba podľa potreby nastaviť. Ide najmä o parameter /S resp. /RF na pripojenie ku D2000 serveru, /W definujúci meno procesu, /C definujúci meno aplikácie a pre D2000 server je podstatný parameter /N, ktorým sa vypne autoštart procesov.

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 na hostiteľskom stroji. Takto je možný jednoduchý prístup k dátam aj mimo kontajnera.

Cesta

Popis

Cesta

Popis

/config

Adresár konfiguračných súborov pre D2000, ODBC DSN a Oracle TNS.

  • /config/d2000 - Napĺňa sa súbormi instance.properties, ConsolesInfo.txt, LicenceRun.code. Cesta k adresáru je v premennej prostredia D2000_HOME.

  • /config/odbc - Napĺňa sa súborom odbc.ini s konfiguráciou ODBC DSN. Cesta k súboru je v premennej prostredia ODBCINI.

  • /config/oci - Napĺňa sa súborom tnsnames.ora s konfiguráciou Oracle TNS. Cesta k adresáru je v premennej prostredia TNS_ADMIN.

/opt/d2000/app

Aplikačný adresár. Pod aplikačným adresárom je vytvorený podadresár samotnej aplikácie minimálne so súbormi application.propertiesclient.properties.

Narozdiel od štandardného nekontajnerizovaného nasadenia neobsahuje dáta konfiguračnej, monitorovacej ani archívnej databázy.

/opt/d2000/log

Logovací adresár

Inicializáciu konfiguračného a aplikačného adresára vykonáva inicializačný kontajner D2000. V prípade, že všetky kontajnery majú tieto adresáre mapované do spoločných perzistentných adresárov, stačí inicializačný kontajner spustiť raz, pred štartom D2000 servera. Ak niektoré procesy používajú samostatné perzistentné úložisko pre tieto adresáre, tak ich treba taktiež inicializovať inicializačným kontajnerom pred štartom kontajnera príslušného D2000 procesu.

Proces v kontajneri beží pod neprivilegovaným používateľom a skupinou d2000 s UID 900 a GID 900. Inicializačný kontajner automaticky nastavuje vlastníka 900:900 pre vymenované cesty.

Modifikácia image

Niekedy môže byť potrebné modifikovať inštaláciu D2000, resp. image niektorého z jej komponentov. Typickým príkladom je doplnenie OEM protokolov pre KOM proces. Možnosti sú v zásade dve:

  • Vytvorenie vlastného image pre KOM proces, ktorý vychádza z oficiálneho image a rozširuje ho o potrebné súbory.
    Pri použití docker compose je takýto image možné vytvoriť aj na požiadanie pri štarte pomocou príkazu: docker compose up --build (Vytváranie image pomocou Docker Compose). Takýto image potom existuje len lokálne, pokiaľ nie je uložený do repozitára.
    V prostredí Kubernetes image musí byť umiestnený v repozitári, čo znamená, že ho autor po vytvorení musí aj v nejakom repozitári zverejniť. Potom sa ale treba starať aj o pregenerovanie image pri vygenerovaní nového zdrojového image, typicky pri vydaní patchu.

  • Namapovanie cesty /opt/d2000/protdll na perzistentné úložisko, kde budú potrebné súbory nakopírované samostatným inicializačným kontajnerom alebo iným spôsobom.
    Týmto spôsobom sa nezasahuje do oficiálneho image a nie je teda potrebné ho mať uložený v repozitári pre nasadenie v prostredí Kubernetes.
    Na druhú stranu je možné a zároveň aj vhodné vytvoriť image s OEM protokolmi, ktorý sa stará o ich nasadenie do D2000 aplikácie. Ako repozitár je možné použiť niektorý z verejne dostupných repozitárov, napríklad Docker Hub.