Subsystem for deploying and configuring the Platform and registries

🌐 This document is available in both English and Ukrainian. Use the language toggle in the top right corner to switch between versions.

1. Overview

The Subsystem for deploying and configuring the Platform and registries is a collection of tools and processes that enable the Platform and Registries to function smoothly and continuously, tailored to the needs of its users.

The subsystem manages crucial functions for the Platform and its registries, including deployment, configuration, updates, component storage, and version control.

The subsystem uses GitOps practices, storing the Platform and registry states in the Git repository (Gerrit). Other components like operators and CI/CD tools (Jenkins) monitor and align the Platform’s state with the repository’s version.

2. Subsystem functions

  • Deployment, configuring and updating of the Platform components and registries.

  • Storage of the Platform and registries components.

  • Versioning of the Platform and registries configuration.

3. Technical design

config mgmt
Figure 1. Diagram of subsystem components and their interactions

4. Registry configuration structure

registry configuration structure
Figure 2. Registry configuration components

5. Subsystem components

Component name Namespace Deployment Origin Repository Function

Configuration changes control and storage service

control-plane

gerrit

3rd-party

github:/epam/edp-ddm-control-plane-gerrit

Software tool allowing version management for components and configurations. It is closely integrated with the Git distributed version control system. Using this tool, Platform administrators are abile to view all code and configuration modifications using a web browser, and approve or reject those changes.

Configuration deployment service

control-plane

jenkins

3rd-party

github:/epam/edp-ddm-control-plane-jenkins

Software system that provides automation throughout the life cycle of the Platform and Registries. It performs the actual deployment of the Registry, configuring, updating and many other automated tasks in the Platform.

Storage of the Platform artefacts

control-plane-nexus

nexus

3rd-party

github:/epam/edp-ddm-control-plane-nexus

Central repository of artifacts, components and their dependencies that make up every individual subsystem and the Platform as a whole. Storage of platform artifacts.

Jenkins operator

control-plane

jenkins-operator

epam-origin

github:/epam/edp-jenkins-operator

Auxiliary software with the functions of deployment, configuring and recovery of Jenkins as a subsystem component.

Gerrit operator

control-plane

gerrit-operator

epam-origin

github:/epam/edp-gerrit-operator

Auxiliary software with the functions of deployment, configuring and recovery of Gerrit as a subsystem component.

Codebase operator

control-plane

codebase-operator

epam-origin

github:/epam/edp-codebase-operator

Codebase operator is an auxiliary software with the function of registering a new registry as a platform component, and performing initial configuration.

Nexus operator

control-plane-nexus

nexus-operator

epam-origin

github:/epam/edp-nexus-operator

Auxiliary software with the functions of deployment, configuring and recovery of Nexus Repository Manager as a subsystem component.

6. The process stack

In the course of the subsystem designing and development, the following technologies were used:

7. Subsystem quality attributes

7.1. Portability

Containers with subsystem components can be deployed or transferred to different cloud environments, to an own local infrastructure, or between other instances of the Platform for state registries.

7.2. Observability

The management subsystem of the Platform for state registries supports logging of incoming requests, event logging and collection of performance metrics for further analysis through the web interfaces of the corresponding Platform subsystems.

You can find out more about the design of the subsystems in the relevant sections:

7.3. Maintainability

The subsystem is developed using the Gitops approach, which provides a description as a code of the Platform and registries configuration, that simplifies maintenance and deployment. It also allows you to automate the deployment process, minimizing the risk of human error. It also allows tracking of changes and ensures stability during deployment, and makes it easy for technical administrators to update the Platform and registries, roll back changes as required, and maintain a history of all changes made.