Skip to content

DevOps Tools – High-Level Overview

Deployment

To deliver and operate the S2GOS service efficiently, we apply modern DevOps practices. These ensure that software is built, tested, and deployed in a reliable, repeatable, and secure way. The main tools can be grouped as follows:

  1. Infrastructure & Deployment

  2. Kubernetes – the platform on which all services run. It allows applications to scale automatically, restart when needed, and be isolated for reliability.

  3. Helm – a package manager for Kubernetes. It makes deploying complex applications much simpler and ensures they can be installed the same way across different environments.

  4. Terraform – used to set up the underlying cloud resources (servers, storage, networks). It guarantees that infrastructure is defined in code, so it can be reproduced, audited, and updated consistently.

  5. Continuous Integration & Delivery (CI/CD)

  6. GitHub Actions – automates testing and building of the software whenever code changes are made. This reduces errors and speeds up development.

  7. ArgoCD – ensures that what is defined in the project repositories is always reflected in the running system. It continuously monitors and synchronizes deployments, reducing manual intervention.

  8. Monitoring and Observability

  9. Prometheus and Grafana – provide live insights into the system’s health and performance (e.g., resource usage, response times). This allows early detection of issues and helps optimize resources.

  10. Jaeger – used for tracing requests across services, which helps diagnose problems and improve efficiency of workflows.

  11. Security and Access

  12. Keycloak – a central system for user authentication and authorisation. It enables single sign-on and ensures that only authorised users can access services.

  13. Sealed Secrets - allows us to store passwords and keys safely in Kubernetes without exposing them in plain text.

Building the server image

The s2gos-server container image is built with the build-image.sh script, which wraps docker build and pins the eozilla packages (gavicore, procodile, wraptile) to a given version.

# Build, tagging the image from the s2gos-server version:
./s2gos-server/build-image.sh

# Build with an explicit tag:
./s2gos-server/build-image.sh -t dev

# Build and push to the registry:
./s2gos-server/build-image.sh -t 0.2.0 --push

# Build against a specific eozilla version:
./s2gos-server/build-image.sh --eozilla-version 0.3.0

The image repository defaults to quay.io/s2gos/s2gos-server; override it with -r/--repo or the IMAGE_REPO environment variable. Run ./s2gos-server/build-image.sh --help for the full list of options.