DBRepo — A Repository for Databases
tl;dr
docker compose up -d
docker compose logs -f
Build
Build DBRepo from scratch:
make build
Documentation
More documentation can be found online: https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/
Development
CI/CD
We get compute resources in-kind from dataLAB to run our pipeline:
Figure 1. Gitlab runner configuration in the cluster.
Minikube cluster with 6vCPU and 28GB RAM. The CI pipeline is configured as follows in the config.toml
:
concurrent = 10
[[runners]]
executor = "kubernetes"
environment = [
"FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY=false"
]
[runners.kubernetes]
namespace = "{{.Release.Namespace}}"
privileged = true
allowed_services = ["docker:24-dind"]
[[runners.kubernetes.services]]
name = "docker:24-dind"
command = [ "--registry-mirror=http://docker-io-mirror:80", "--insecure-registry=docker-io-mirror:80", "--registry-mirror=http://gcr-io-mirror:80", "--insecure-registry=gcr-io-mirror:80", "--registry-mirror=http://ghcr-io-mirror:80", "--insecure-registry=ghcr-io-mirror:80", "--registry-mirror=http://k8s-io-mirror:80", "--insecure-registry=k8s-io-mirror:80" ]
alias = "docker"
[[runners.kubernetes.volumes.empty_dir]]
name = "rundind"
mount_path = "/var/run/dind"
medium = "Memory"
[[runners.kubernetes.volumes.empty_dir]]
name = "tmp"
mount_path = "/tmp"
medium = "Memory"
For each job in the CI/CD pipeline, a pod with three containers is started:
-
build
the main build container, you can freely specify any image withimage: xyz
as base -
helper
the default helper container. -
svc-0
the Docker-in-Docker sidecar (rootless executed as userrootless
/1000
) exposing the Docker socket to thebuild
container under `
Note. Only Docker-in-Docker (dind) is allowed as service in the pipeline currently. For each job, a
dind-sidecar container svc-0
is started that exposes the Docker socket at /var/run/dind/docker.sock
in the build
container you can freely configure how you want. We are aware this is not optimal as it exposes root privileges in the
cluster.
The full CI/CD pipeline Helm chart is documented in
the fda-deployment
repository.
Contribute
Contributions are always welcome and encouraged, simply fork the repository and contact Andreas Rauber.
Acknowledgements
We want to thank the following organizations:
- Bundesministerium für Bildung, Wissenschaft und Forschung (BMBWF) for funding during the call "Digitale und soziale Transformation in der Hochschulbildung".
- TU.it for their continuous support in project work, funding and compute resources provided in-kind.
License
This work is licensed under a Creative Commons Attribution 4.0 International License