Architecture

Deployment

Learn about our deployment strategy including CD pipelines, containerization, and infrastructure.

CD Pipelines

Our Continuous Deployment (CD) pipelines are based on Azure DevOps, enabling consistent and automated deployment of applications.

The pipeline workflow typically includes:

  • Auto-incremented versioning from the main branch.
  • Building Docker images and pushing them to Azure Container Registry (ACR).
  • Helm-based deployments to Kubernetes.
  • Automated updates of deployment templates per environment.

These pipelines are triggered automatically after merging into the main branch.

Gitea

Private packages and internal libraries are stored within our Gitea-based npm registry.
The npm configuration is dynamically generated in the pipeline:

echo "@eit:registry=https://$PROJECT_NPM_STORE" > .npmrc
echo "//$PROJECT_NPM_STORE:_authToken=$PROJECT_NPM_TOKEN" >> .npmrc

This setup simplifies dependency management during deployments.

ACR

Docker images built in our CD pipeline are pushed to the Azure Container Registry (ACR). Each image is tagged with a specific version as well as a 'latest' tag for easy reference and rollback.

Example of Docker tags:

tags:
  - $(Version)
  - latest

These images are later pulled by Kubernetes clusters.

CDN

Currently, Hosel frontend applications are containerized and deployed directly to Kubernetes without the use of a CDN. This setup is optimized for controlled environments and internal access scenarios, where latency and geographic distribution are not critical.

However, our platform fully supports deployment scenarios that include a Content Delivery Network (CDN)—such as Azure Front Door or Azure CDN. This allows for global asset distribution, optimized caching, and reduced latency for end users across various regions.

If your product requires global availability and faster asset delivery, a CDN can be seamlessly integrated at the infrastructure level to improve performance, reliability, and scalability.

Docker and K8s

Applications are containerized using Docker and orchestrated in production environments via Kubernetes. Deployments are defined using Helm charts, leveraging config.yaml and values.yaml for environment-specific customization.

A custom Bash-based script handles manifest templating and validation:

  • It downloads Helm packages from an internal git-based Helm registry.
  • Validates deployment configurations before applying them.
  • Automatically generates Kubernetes manifests based on environment-specific configuration.

This structured process ensures reliable, repeatable deployments across different environments.


Copyright © 2025. All rights reserved.