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

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 imageD2000 komponent/procesPotrebné capabilities
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.NET_RAW
ipesoft/d2/kernel_odbc_javaD2000 Server s JRE. Prístup k dátam cez ODBC.NET_RAW
ipesoft/d2/komD2000 KOMDAC_OVERRIDE, NET_BIND_SERVICE, NET_RAW, SYS_RAWIO
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 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.

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



Write a comment...