Konteneryzacja WEBCON BPS

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji: 2023.1.x i powyżej; autorzy: Marcin Kapusta, Krystyna Gawryał

 

Wprowadzenie

Wraz z pojawieniem się nowej wersji systemu (2023.1.x) wprowadzono możliwość konteneryzacji komponentów WEBCON BPS. Dzięki temu, poza standardową instalacją poszczególnych komponentów systemu, możliwe jest wykorzystanie obrazów Docker udostępnionych dla WEBCON BPS Portal, BPS Workflow Service oraz Search Server (Solr) i uruchomienie tych modułów w kontenerach.

Konteneryzacja stanowi alternatywę dla standardowej instalacji komponentów WEBCON BPS i znajduje szczególnie zastosowanie w przypadku korzystania z usług chmurowych, znacznie ułatwiając instalację systemu w takim środowisku.

Niniejszy artykuł zawiera instrukcję krok po kroku przygotowania instalacji systemu WEBCON BPS, którego podstawowe komponenty są uruchomione w niezależnych kontenerach.

 

Wybór platformy do konteneryzacji

Dzięki zastosowaniu obrazów Docker instalacja i uruchomienie WEBCON BPS w kontenerach są możliwe na wielu platformach (większość z platform do konteneryzacji wykorzystuje obrazy Docker).

W tym artykule kontenery będą tworzone i uruchamiane za pomocą platformy Docker Desktop. Niezbędne jest wcześniejsze zainstalowanie tego programu oraz uruchomienie wszystkich kroków instalacji na tym samym komputerze.

Postępując analogicznie jak w opisanym przykładzie, WEBCON BPS można zainstalować w kontenerach w dowolnej platformie do konteneryzacji (np. Azure Container Instances lub Azure Kubernates Service).

 

Plan instalacji

Podczas instalacji WEBCON BPS w kontenerach tylko baza danych jest tworzona z wykorzystaniem instalatora. Pozostałe składowe systemu muszą być pobrane jako obrazy Docker i uruchomione w kontenerach za pomocą odpowiednich skryptów.
Z tego względu dobrą praktyką jest wcześniejsze zaplanowanie środowiska z wyszczególnieniem komponentów systemu, ich adresów sieciowych oraz komunikacji między nimi.

Poniższy diagram pokazuje instalację opisaną w tym artykule wraz z adresami poszczególnych serwisów.

W tym artykule posługujemy się programem Docker Desktop. Wszystkie podstawowe składowe WEBCON BPS mogą być w nim zainstalowane. Jedynie bazy danych systemu muszą być utworzone na istniejącej instancji Microsoft SQL Server dostępnej z komputera, na którym uruchomiono WEBCON BPS w kontenerach.

Kroki instalacji:

  1. Utworzenie kontenera WEBCON BPS Search Server i inicjalizacja indeksów wyszukiwania Solr.
  2. Kreacja baz danych SQL z wykorzystaniem instalatora WEBCON BPS.
  3. Utworzenie kontenera WEBCON BPS Workflow Service.
  4. Utworzenie kontenera WEBCON BPS Portal.
  5. Uruchomienie Designer Studio i aktywacja licencji.

Wszystkie wymienione w artykule skrypty znajdują się w pliku bps_docker_desktop.

 

Przechowywanie danych WEBCON BPS

Pierwszym krokiem instalacji jest utworzenie baz danych dla systemu WEBCON BPS.
Platforma wykorzystuje dwa rodzaje baz danych. Wszystkie dane wprowadzone przez użytkowników oraz dane konfiguracyjne są przechowywane w relacyjnych bazach danych Microsoft SQL Server. Dodatkowo duża część tych danych zasila indeksy wyszukiwania Solr obsługiwane przez Search Server.

 

Utworzenie kontenera Search Server

1) Obraz kontenera Search Server jest zbudowany w oparciu o oficjalny obraz platformy Solr w wersji dla systemu operacyjnego Linux. W związku z tym należy przełączyć Docker Desktop w tryb obsługi kontenerów linuxowych – kliknij prawym przyciskiem myszy na ikonę programu w zasobniku systemowym i z rozwijanej listy wybierz następującą opcję:

 

2) Po chwili zobaczysz ostrzeżenie jak poniżej. Kliknij Switch, aby możliwa była obsługa kontenerów Linux.

 

3) Kontener jest co do zasady obiektem nietrwałym. W związku z tym, należy dopilnować, aby dane nie zostały utracone po wyłączeniu kontenera. W programie Docker Desktop odpowiada za to mechanizm Docker Volume, dzięki któremu możliwe jest tworzenie dedykowanych woluminów odpowiedzialnych za przechowywanie danych generowanych i wykorzystywanych przez wspomniany program.
Utwórz nowy wolumin na potrzeby Solr o nazwie solr-bps – otwórz konsolę CMD i za pomocą komendy cd przejdź do folderu bps_docker_desktop, a następnie wpisz polecenie:

docker volume create solr-bps

4) Podgląd utworzonego woluminu jest możliwy w Docker Desktop w zakładce Volumes:

 

5) Aby uruchomić kontener, wpisz w konsoli CMD polecenie:

docker run -d –env-file solr_env.dist -p 8983:8983 –mount source=solr-bps,target=/var/solr –name bps_search webconbps/search:2023.1.1.41 bash –c “/opt/bps-solr/scripts/run-precreate-cores.sh”

gdzie:

-d – uruchomienie kontenera w tle,

-p 8983:8983 – mapowanie portu hosta 8983 na port kontenera 8983 (domyślny port, na którym jest uruchomiony Solr),

–name bps_search – nazwa kontenera,

webconbps/search:2023.1.1.41 – obraz, na podstawie którego uruchamiany jest kontener; tutaj należy zadbać o wybór właściwej wersji odpowiadającej wersji WEBCON BPS,

–env-file solr_env.dist – kontener Solr zostanie uruchomiony ze zmiennymi środowiskowymi, które są zdefiniowane w tym pliku. Obecnie jest to wyłącznie ograniczenie dotyczące wykorzystywanej pamięci RAM. Istnieje możliwość konfiguracji dodatkowych zmiennych,

–mount source=solr-bps,target=/var/solr – mapowanie utworzonego woluminu do katalogu w kontenerze, gdzie będą przechowywane pliki z indeksami wyszukiwania, konfiguracja uprawnień oraz pliki logów,

bash –c “/opt/bps-solr/scripts/run-precreate-cores.sh” – ścieżka do skryptu inicjalizującego struktury indeksów Solr. Skrypt ten musi być przekazany przy pierwszym uruchomieniu kontenera, aby indeksy mogły zostać utworzone. Można go przekazywać zawsze, gdyż przy ponownym uruchomieniu kontenera skrypt wykrywa istniejące indeksy i pomija ich ponowne tworzenie.

6) Podgląd uruchomionego kontenera jest możliwy w zakładce Containers.

 

7) Serwis Solr będzie dostępny na tym komputerze pod adresem: http://nbdemo:8983/solr (gdzie nbdemo to nazwa komputera z Docker Desktop).

 

Kreacja baz danych SQL

1) Pobierz instalator WEBCON BPS w odpowiedniej wersji (w przypadku tego artykułu jest to wersja 2023.1.1.41).

2) Uruchom instalator i po zaakceptowanie licencji wybierz tryb instalacji Nowa instalacja WEBCON BPS.

3) Następnie wybierz typ środowiska Standalone. W kroku Weryfikacja systemu wybierz opcję Dalej, a w kroku Wybór komponentów opcję Pomiń.
Wszystkie komponenty będą uruchamiane z obrazów Docker, a instalator zostanie użyty wyłącznie do utworzenia i skonfigurowania bazy danych.

 

4) W kolejnych krokach instalatora: Parametry kreacji baz danych, Kreacja bazy konfiguracyjnej, Kreacja bazy procesów, Kreacja bazy załączników, postępuj analogicznie jak przy standardowej instalacji WEBCON BPS.
Zalecane jest skopiowanie nazwy bazy konfiguracyjnej, gdyż będzie ona potrzebna przy uruchamianiu kontenerów Portalu i Serwisu.

5) W kroku Konfiguracja adresu Portalu należy wprowadzić adres, pod którym zgodnie z planem infrastruktury będzie udostępniony BPS Portal. W opisywanym przykładzie WEBCON BPS Portal będzie dostępny przez reverse proxy pod zewnętrznym adresem: https://nbdemo.webcon.pl:48440.
Wpisz tutaj adres Portalu zgodnie z obowiązującym planem infrastruktury i wybierz Dalej.

6) W kroku Konto administracyjne wpisz i zapamiętaj hasło dla użytkownika administracyjnego, który po zalogowaniu do Designer Studio będzie mógł dokończyć konfigurację instalacji WEBCON BPS.

7) Ostatni krok to Adres Search Server. W tym kroku instalator musi wykonać dwie czynności: zmienić domyślne hasła użytkowników w Search Server oraz zarejestrować tę instancję Search Server w bazie konfiguracyjnej.

W tym celu w polu Podłącz wybierz opcję Domyślna instalacja Search Server w kontenerze. Następnie wpisz adres kontenera z Search Server. W omawianym przykładzie jest to adres: http://nbdemo:8983/solr/.
Dodatkowo podaj hasła, jakie mają być ustawione dla użytkowników Solr i WEBCON_BPS.

Uwaga: użytkownik Solr jest administratorem tej instancji Solr. Zadbaj o to, by nie zgubić jego hasła, ponieważ nie jest ono nigdzie dodatkowo zapisywane.

Podczas wykonywania tego kroku uruchomiony musi być kontener z Search Server, gdyż instalator połączy się z nim w celu zmiany haseł i weryfikacji poprawności zawartości kontenera.

 

Utworzenie kontenera Workflow Service

1) Obrazy kontenerów Workflow Service oraz BPS Portal są zbudowane w oparciu o obrazy Docker systemu operacyjnego Windows Server Core.
W związku z tym, analogicznie jak poprzednio, należy przełączyć Docker Desktop w tryb obsługi kontenerów typu Windows.

2) Przed uruchomieniem kontenera serwisu należy uzupełnić plik konfiguracyjny service_env.dist. Plik ten pozwala na ustawienie odpowiednich wartości dla zmiennych środowiskowych i przekazanie ich do serwisu w kontenerze.

Są to dokładnie te same wartości, które można ustawić przy pomocy pliku appsettings.json w standardowej instalacji WEBCON BPS.

Do poprawnego uruchomienia serwisu należy ustawić dwie pierwsze zmienne – connection string, w celu nawiązania połączenia z bazą konfiguracyjną, oraz nazwę hosta, na którym będzie uruchomiony serwis:

Configuration__BpsDbConfigRaw=Server=SQLDemo;Database=BPS_Config;User ID=bps;Password=p4ss;
Configuration__ExternalWebService__Host=nbdemo.webcon.pl

Pozostałe parametry można pozostawić bez zmian.

3) Uruchom kontener wprowadzając w CMD polecenie:

docker run -d -p 58002:58002 -p 58003:58003 –env-file service_env.dist –name bps_service webconbps/service:2023.1.1.41

gdzie:

-d – uruchomienie kontenera w tle,

-p 58002:58002 –p 58003:58003 – mapowanie portów hosta 58002 i 58003 na odpowiednie porty kontenera (numery portów muszą odpowiadać tym ustawionym w pliku service_env.dist),

–env-file service_env.dist – kontener zostanie uruchomiony ze zmiennymi środowiskowymi, które są zdefiniowane w tym pliku,

–name bps_service – nazwa kontenera,

webconbps/service:2023.1.1.41 – obraz, na podstawie którego uruchamiany jest kontener; tutaj należy zadbać o wybór właściwej wersji odpowiadającej wersji WEBCON BPS.

4) Podgląd uruchomionego kontenera jest możliwy w zakładce Containers.

 

Uruchomienie kontenera BPS Portal

1) Analogicznie jak dla serwisu, przed uruchomieniem kontenera należy odpowiednio skonfigurować plik ze zmiennymi środowiskowymi. W przypadku Portalu jest to plik portal_env.dist.

Do poprawnego uruchomienia portalu należy ustawić dwie pierwsze zmienne – powinny one zawierać ten sam connection string do połączenia do bazy konfiguracyjnej:

App__ConfigConnection__Value=Server=SQLDemo;Database= BPS_Config;User ID=bps;Password=p4ss;
App__LogsConnection__Value=Server=SQLDemo;Database=BPS_Config;User ID=bps;Password=p4ss;

Pozostałe parametry można pozostawić bez zmian.

Należy pamiętać, że kontener nie znajduje się w domenie, w związku z czym konieczne jest zdefiniowanie nazwy użytkownika i hasła do bazy danych jako alternatywy dla częściej stosowanego logowania domenowego.

2) Uruchom kontener z wykorzystaniem polecenia:

docker run -d -p 48441:48441 –env-file portal_env.dist –name bps_portal webconbps/portal:2023.1.1.41

gdzie:

-d – uruchomienie kontenera w tle,

-p 48441:48441 – mapowanie portu hosta 48441 na port kontenera 48441. Ten port powinien odpowiadać portowi ustawionemu w konfiguracji w pliku portal_env.dist.

–name bps_portal – nazwa kontenera,

webconbps/portal:2023.1.1.41 – obraz, na podstawie którego uruchamiany jest kontener,

–env-file portal_env.dist – kontener zostanie uruchomiony ze zmiennymi środowiskowymi, które są zdefiniowane w tym pliku.

 

Przygotowanie kontenera z reverse proxy dla Portalu

Uruchomienie Portalu w kontenerze często ma na celu łatwe skalowanie aplikacji internetowej przez uruchamianie kolejnych kontenerów. W takiej konfiguracji kontener Portalu nie jest zazwyczaj udostępniony bezpośrednio dla użytkowników, lecz wymaga wykorzystania load balancera.

W opisywanej testowej instalacji taka konfiguracja zostanie zasymulowana poprzez utworzenie kontenera z serwerem reverse proxy dla Portalu. Może to być dowolny serwer z taką funkcjonalnością. W tym artykule wykorzystywany jest serwer Caddy działający w oparciu o obraz systemu Windows.

Kontener serwera Caddy można przygotować w następujący sposób:

1) Utwórz plik konfiguracyjny serwera Caddy o nazwie Caddyfile o poniższej zwartości. Pamiętaj, aby podmienić domenę webcon.pl na własną, natomiast nazwa kontenera i port, na który wskazuje reverse proxy muszą odpowiadać utworzonemu wcześniej kontenerowi Portalu:

nbdemo.webcon.pl:48440 {

tls /etc/caddy/cert.pem /etc/caddy/key.pem

reverse_proxy bps_portal:48441

}

2) Reverse proxy wykorzystuje protokół https. Aby adres obsługiwany przez reverse proxy był zaufany, należy użyć zaufanego certyfikatu dla adresu komputera testowego. W tym celu umieść pliki cert.pem i key,pem z certyfikatem w bieżącym folderze.

Utwórz plik DockerFile z obrazem Caddy o zawartości:

FROM caddy:2.6.4-windowsservercore-1809

COPY Caddyfile /etc/caddy/Caddyfile

COPY cert.pem /etc/caddy/cert.pem

COPY key.pem /etc/caddy/key.pem

3) Następnie zbuduj kontener Caddy, wykorzystując do tego celu komendę:

docker build -t caddy/reverse.proxy .

4) Uruchom kontener z wykorzystaniem polecenia:

docker run -d -p 48440:48440 –name caddy_web caddy/reverse.proxy

 

Konfiguracja środowiska

Architektura skonfigurowanego rozwiązania opiera się na dwóch składowych:

W związku z powyższym, aby uruchomić Portal w kontenerze, należy otworzyć link: https://nbdemo.webcon.pl:48440/.

Uwaga: uruchomienie składowych WEBCON BPS w kontenerach jest możliwie wyłącznie dla użytkowników posiadających licencje subskrypcyjne. Uruchomienie następnego kontenera będzie wiązało się z wykorzystaniem kolejnej licencji. Jeśli kontener został poprawnie wyłączony, to licencja jest zwalniana. Raport dotyczący wykorzystywanych licencji jest dostępny w WEBCON BPS Designer Studio.

Ponadto wymagany będzie zewnętrzny dostawca uwierzytelnienia, np. Azure Active Directory lub OpenID Connect, gdyż uwierzytelnienie Windows nie działa poprawnie w kontenerach.

Poniżej lista kroków jakie należy wykonać w celu dokończenia konfiguracji zainstalowanej platformy WEBCON BPS. Są to kroki konfiguracyjne wymagane dla każdej instalacji, nie tylko tej wykonanej w kontenerach Docker.

  1. Zaloguj się do Portalu WEBCON BPS, wprowadzając hasło użytkownika administracyjnego, które zostało podane podczas kreacji bazy danych.
  2. Zainstaluj Designer Studio z poziomu menu użytkownika w Portalu.
  3. Zaloguj się do Designer Studio, podając hasło użytkownika administracyjnego.
  4. Aktywuj licencje (subskrypcyjne) w Designer Studio.
  5. Skonfiguruj synchronizację listy użytkowników (np. z Azure Active Directory) i wymuś jej uruchomienie.
  6. Skonfiguruj dostawcę uwierzytelniania innego niż Admin acces, np. Azure Active Directory.
  7. Po synchronizacji listy użytkowników przydziel licencje odpowiednim użytkownikom.
  8. Nadaj uprawnienia globalne użytkownikom z Twojej organizacji, którzy będą zarządzać konfiguracją instalacji.

Po wykonaniu tych kroków i sprawdzeniu poprawności ich działania, możesz wyłączyć dostawcę uwierzytelniania Admin access.