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 KeepaliveTime a KeepaliveInterval. 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 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). | |
| ipesoft/d2/archiv_odbc | D2000 ARCHIV. Prístup k dátam cez ODBC. | |
| 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. | NET_RAW |
| ipesoft/d2/kernel_odbc_java | D2000 Server s JRE. Prístup k dátam cez ODBC. | 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 |
|---|---|
| /config | Adresár konfiguračných súborov pre D2000, ODBC DSN a Oracle TNS.
|
| /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.properties a client.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.
Súvisiace stránky
Pridať komentár