Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

...

  • Každý D2000 proces má samostatný image a je spustený ako samostatný pod. Každý je riadený samostatným workload objektom typu StatefulSet s počtom inštancí 1. Prostriedkami K8s je možné ho samostatne štartovať, vypínať, reštartovať, aktualizovať.
  • Inštalácia D2000 je umiestnená v adresári /opt/d2000.
  • Proces D2000 Server a k nemu prislúchajúce procesy (CLC, EVH, EDS, ARC, ...) majú namapované spoločný diskový priestor:
    • Konfiguračné súbory inštalácie D2000 sú 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ú umiestnené v aplikačnom adresári /opt/d2000/app/<appname> (súbory application.properties, client.properties).
    • Adresár s logmi je umiestnený v adresári inštalácie (/opt/d2000/log).
  • Konfiguračná, monitorovacia a archívna databáza sú na dedikovaných PostgreSQL databázových serveroch, ktoré môžu byť umiestnené v ale aj mimo prostredia Kubernetes. Pody s procesmi D2000 Server a D2000 Archív majú nakonfigurované ODBC spojenia na príslušné databázy (konfiguračný súbor /config/odbc/odbc.ini zverejnený v environment premennej 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 D2000 Server, D2000 Kom a D2000 Web server majú nastavené príslušné 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 aj v dodávaných kontajnerových images).
  • Procesy v kontajneroch bežia pod neprivilegovaným užívateľom a skupinou d2000 s UID 900 a GID 900.
  • Licencovanie: V prostredí K8s je použitý externý 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ľúč).
    Poznámka: Teoreticky je možné použiť aj kontajnerizovaný Licenčný server, ktorý by bol spustený ako pod na dedikovanom node a mal prístup k Nitrokey USB kľúču pripojenému k tomuto nodu; táto funkcionalita zatiaľ nebola podporená.

Image repozitár

Image jednotlivých D2000 procesov sú dostupné v internom repozitári Harbor. Image sú určené pre platformu x86_64-linux. Pre minimalizáciu veľkosti sú pre vybrané procesy k dispozícii viaceré varianty: podľa databázového rozhrania ODBC a OCI (DBManager, EDA Server) a podľa podpory Javy (Kernel, Event Handler).

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

Napr. v25.00.080-123 alebo v25.00.080.

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.

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 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.Konfiguračné YAML súbory sú vygenerované pomocou Helm Chart súborov.

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.

Image Added                                        Image Added

Sieťové prestupy

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

...

Blok kódu
languagebash
# syntax: 
kubectl scale statefulset <name> [-n <namespace>] --replicas=<count>

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

Image Added

Výpis štandardného výstupu

Blok kódu
languagebash
# syntax: 
kubectl logs <pod-name> [-n <namespace>]

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

...

Blok kódu
languagebash
# syntax: 
kubectl rollout restart statefulset <name> [-n <namespace>]

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

Image Added

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.

Blok kódu
languagebash
# 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