Wdrożenie i utrzymanie środowiska CI/CD

Dla naszego klienta, firmy z branży energetycznej, świadczymy kompleksową obsługę środowiska CI/CD stworzonego pierwotnie na przestrzeni wielu lat przez kilkadziesiąt (!) zespołów wewnętrznych i zewnętrznych (dostawcy).

W ramach wdrożenia wykonano analizę potrzeb oraz zrealizowano środowisko rozwojowo/testowo/wdrożeniowe wspierające zaprojektowane procesy CI/CD aplikacji w sposób zunifikowany, na ustandaryzowanych środowiskach. Ze względu na bardzo restrykcyjne wymagania bezpieczeństwa, środowisko musiało być zestawione on-premise , a używanie chmurowych „kombajnów” DevOps było niemożliwe. Ze względu na zróżnicowany poziom kompetencji technicznych zespołów (nie tylko programiści, ale również analitycy i przedstawiciele biznesu) obsługa procesów CI/CD musiała być maksymalnie zautomatyzowana. Od strony konstrukcji architektonicznej środowisko zbudowano jako skonteneryzowane, prekonfigurowane obrazy dockerowe:

  • runtime – obrazy uruchomieniowe (do testowania i wdrożeń produkcyjnych)
  • build – obrazy runtime uzupełnione o narzędzia do budowania wdrażalnych paczek
  • devel – obrazy build uzupełnione o narzędzia do rozwoju

Dostęp do platformy dla użytkowników możliwy jest, zgodnie z wymaganiami klienta, wyłącznie poprzez www. Automatyczny routing uruchamianych kontenerów odbywa się z wykorzystaniem Fabio.

Przepływy budowania/testowania/wdrażania oparto o GitLab Pipelines predefiniowane lub customowe z definicjami w postaci kodów yaml. Repozytorium obiektów (artefakty oraz repozytoria bibliotek/pakietów) zrealizowane zostały za pomocą MinIO (również zintegrowane z KeyCloak). Środowisko zestawiono zgodnie z wymogami redundancji kluczowych komponentów: 3 serwery nomad, 3 serwery consul, 3 serwery vault, redundantne serwery KeyCloak i MinIO. GitLab był częścią istniejącej infrastruktury korporacyjnej. Monitorowanie platformy oparto o stack ELK.

Wykorzystane technologie

Backend developement
C++
IT Architecture
Java
Python
Spring Boot

Implementation and maintenance of the CI / CD environment

For our client, a company from the energy industry, we provide comprehensive environmental services CI / CD created originally over many years by several dozen (!) Internal and external teams (suppliers).

As part of the implementation, an analysis of needs was performed and a development / test / implementation environment was carried out to support the designed application CI / CD processes in a unified manner, on standardized environments. Due to very strict security requirements, the environment had to be compiled on-premise, and using cloud DevOps "harvesters" was impossible. Due to the diverse level of technical competences of teams (not only programmers, but also analysts and business representatives), the handling of CI / CD processes had to be as automated as possible. From the architectural design point of view, the environment was built as containerized, preconfigured docker images:

  • runtime - runtime images (for testing and production implementations)
  • build - runtime images supplemented with tools for building implementable packages
  • devel - build images supplemented with development tools

Access to the platform for users is possible, according to the customer's requirements, only via www. Automatic routing of launched containers is done using Fabio.

Build / test / deployment flows are based on predefined or custom GitLab Pipelines with yaml code definitions. Object repository (artifacts and library / package repositories) were implemented using MinIO (also integrated with KeyCloak). The environment was compiled in accordance with the redundancy requirements of key components: 3 nomad servers, 3 consul servers, 3 vault servers, KeyCloak and MinIO redundant servers. GitLab was part of the existing corporate infrastructure. Platform monitoring is based on the ELK stack.

Used technologies

Backend developement
C++
IT Architecture
Java
Python
Spring Boot