Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

CTAO Workload Management System

This project provides Helm chart to deploy WMS with all necessary dependencies and services.

Chart

The WMS Helm chart aims to provide a complete deployment of DIRAC with all necessary dependencies. It contains:

  • DIRAC Master CS
  • DIRAC services and agents
  • DIRAC Web App
  • DIRAC Databases
  • Authentication services
  • Bootstrap jobs
  • External dependencies

The WMS chart is integrated in the global DPPS deployment.

Chart Dependencies

The chart includes the following external dependencies:

  • diracx: complete DiracX deployment
  • mariadb: databases for DIRAC and DiracX data storage

For testing, several components are also included as subcharts, but are not needed are expected to be provided as external components integrated production:

  • gcert-issuer: a CTAO grid certificate issuer for testing deployments
  • cvmfs: CVMFS stratum-0 deployment for testing
  • indigo-iam: IAM deployment provided by CTAO for testing

Components description

DIRAC Master CS

The DIRAC Master Configuration Server deployment consists of:

  • statefulset (master-cs/statefulset.yaml): to ensure the uniqueness of the deployment
  • secret (master-cs/secret.yaml): contains specific DIRAC configuration which shouldn't be exposed in the remote configuration

DIRAC components

All DIRAC components (services, agents and executors) deployment:

  • deployments (deployment.yaml): iteratively generated deployment and service for each enabled DIRAC component
  • configuration files (dirac-configuration-configmap.yaml): a configmap containing DIRAC configuration files, separate into DIRAC sections (Operations, Resources, Registry, ...). Each installed component as its own specific Systems section configuration
  • environment configuration (dirac-env-configmap.yaml): environment specific configuration

DIRAC Web App

A deployment of the DIRAC Web App:

  • deployment (web-app/deployment.yaml)
  • configuration (web-app/configmap.yaml): web app specific configuration

Computing Element

A simple SSH computing element:

  • deployment (computing-element/deployment.yaml): a ssh server acting as a CE

Ingress

TODO.

Bootstrap sequence diagram

The bootstrap sequence is composed of several Jobs to make sure DIRAC is correctly configured and running.

  1. DIRAC configuration initialization (bootstraps/configure-dirac-job.yaml)

Apply the DIRAC configuration contained in the configmap to the Master CS. This job runs once MariaDB and MasteCS statefulsets are running.

  1. DIRAC DB initialization (bootstraps/init-dirac-db-job.yaml)

Install the DIRAC DB and the DiracX AuthDB. The Job runs once the ComponentMonitoring service is running.

  1. Synchronize DIRAC configuration (bootstraps/sync-dirac-job.yaml)

Synchronize RSS configuration, then synchronize DIRAC and DiracX configuration and finally initialize/synchronize IAM users. This job runs after Databases initialization and when DiracX is running.

  1. First Proxy initialization (bootstraps/first-proxy-job.yaml)

Initialize DIRAC proxies, at installation is necessary to initialize a first time the pilot proxy. This job runs once the ProxyManager, BundleDelivery and SystemAdministrato services are running.

---
title: WMS Bootstrap sequence
---
flowchart TB
    subgraph mariadb ["MariaDB Statefulset"]
        direction LR
        mdb["dirac-db"]
    end
    subgraph mastercs ["Master CS statefulset"]
        direction LR
        mcs["dirac-master-cs"]
    end
    subgraph bootdiracconf ["Bootstrap DIRAC Conf Job"]
        direction LR
        confdirac("bootstrap-dirac-configure")
    end
    subgraph compmon ["Component Monitoring deployment"]
        direction LR
        bootcomp["bootstrap-component-monitoring"]-->compmondep["component-monitoring"]
    end
    subgraph bootdb ["Bootstrap DIRAC DB Job"]
        direction LR
        authdb("install-diracx-auth-db")-->compdb("install-dirac-db")
    end
    subgraph bootcnf ["Sync DIRAC Conf Job"]
        direction LR
        syncrss("bootstrap-dirac-sync-rss")-->syncdiracxcs("sync-diracx-cs")
        syncdiracxcs-->synciamusers("sync-iam-users")
    end
    subgraph diracx ["DiracX deployment"]
        direction LR
        dx("DiracX")
    end
    subgraph dcomp ["DIRAC Components deployment"]
        direction TB
        proxyman["dirac-proxy-manager"]
        bundledeliv["dirac-bundle-delivery"]
        systemadmin["dirac-system-admin"]
        rest["..."]
    end
    subgraph fproxy ["First proxy init Job"]
        direction LR
        initproxy("first-proxy")
    end
    mariadb --wait for--> mastercs
    mastercs --wait for--> bootdiracconf
    bootdiracconf --wait for--> compmon
    compmon --wait for--> bootdb
    bootdb --wait for--> bootcnf
    bootcnf --wait for--> dcomp
    syncdiracxcs --needs--> diracx
    diracx --wait for--> fproxy
    proxyman --wait for--> fproxy
    bundledeliv --wait for--> fproxy
    systemadmin --wait for--> fproxy

Storage Volumes

  • CS backup (master-cs/statefulset.yaml): persistent volume to keep CS backup while restarting the Master CS statefulset
  • Storage Element Data (pvc.yaml): persistent storage for data stored in the test SE

Configuration Structure

DIRAC server configuration

All the configuration related to DIRAC server is contained in the values.yaml under diracServer section. This section will allow you to configure master-cs, web-app, components and configurations.

  • Master CS .diracServer.masterCS
  • WebApp .diracServer.webApp
  • DIRAC components .diracServer.diracComponents: in this section each components can be enabled or disabled, configured (port, specific configuration), specify the replica counts. For each componennt a default configuration is provided but can be overwritten.

Example:

diracServer:
    diracComponents:
        componentMonitoring:
            port: 9190 # the port on which contact the service
            cmd: Framework/ComponentMonitoring # the command run by `dirac-service`
            replicaCount: 1
            config: | # to overwrite the default configuration
                Systems
                {
                    Framework
                    {
                        Services
                        {
                            ComponentMonitoring
                            {
                                ...
                            }
                        }
                    }
                }

Note: the name of the subsection (e.g. componentMonitoring) is used to generate deployment, service and associated configmap names.

  • bootstrap: bootstrap jobs can be individually disabled or enabled, and configured under diracServer.bootstrap

  • DIRAC databases: the list of the DIRAC databases to be installed must be provided under diracServer.diracDatabases

  • DIRAC configuration: To set specific DIRAC configuration there is diracServer.diracConfig. Since the full DIRAC configuration is very long, the configurability of it is separated into sections: Systems, Registry, Resources, Operations, DiracX. For each a file in a configmap is generated which is then apply at bootstrap.

One can write a section using the yaml format, which will be automatically translated, or using a string template. One can decide to provide its own full DIRAC configuration by overwriting the configmap itself using diracServer.diracConfig.configmap.create: false and diracServer.diracConfig.configmap.name: config-map-name

Test Report

The WMS test report can be retrieve from the CI pipeline artifact.

Deploy WMS locally

The first time you want to run the local cluster:

pixi run install-tools

To start a Kind local cluster, deploy the chart in it, and run the test, do:

pixi run make -e dev

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ctao_wms_clients-0.9.0rc8.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ctao_wms_clients-0.9.0rc8-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

Details for the file ctao_wms_clients-0.9.0rc8.tar.gz.

File metadata

  • Download URL: ctao_wms_clients-0.9.0rc8.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.12.11

File hashes

Hashes for ctao_wms_clients-0.9.0rc8.tar.gz
Algorithm Hash digest
SHA256 587fb709fec60caec4ae99b78b6a971ccae15e48b070b1578aa271ac704e1140
MD5 f04c70647daecf8a7080b97c6addc660
BLAKE2b-256 73c5fbf17432f96495fadb08be93a5f3ab3a394c525278de06d93878fc9561b0

See more details on using hashes here.

File details

Details for the file ctao_wms_clients-0.9.0rc8-py3-none-any.whl.

File metadata

File hashes

Hashes for ctao_wms_clients-0.9.0rc8-py3-none-any.whl
Algorithm Hash digest
SHA256 283a36297d04823bcc59b9134fc4bda499fb3b8a6b2365f59234acc94220aca9
MD5 96319aa0600079238f193b40283529ce
BLAKE2b-256 095d29bd9a024522e7adcaf078849ede8da45d9b45b9e79be1a232bf755fd65b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.9.0

2 files

This release

0.9.0rc8 This release

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page