Skip to content

Operations

Tools

A list of tools we use:

Kubernetes Cluster

To deploy Quick, you need access to a Kubernetes cluster. Each Quick deployment should have its namespace. However, the infrastructure deployments (Kafka, Schema Registry and Traefik) can be shared between instances.

Container Registry

All our images are located in our Docker Hub Registry:

To configure docker inside the CI, use the secrets DOCKERHUB_USERNAME and DOCKERHUB_TOKEN in a workflow to login:

- name: Login to Docker Hub
  uses: docker/login-action@v1
  with: 
    username: ${{ inputs.username }}
    password: ${{ inputs.token }}  

Once you have a docker configured, you can tag and push images using jib:

./gradlew -Pversion=<image-tag> jib

CI

Our CI runs on top of GitHub Actions. You can find the workflows in ./.github/workflows.

The main workflow ci.yaml has the following tasks:

  • build & test project
  • push image to registry
  • update Helm chart
  • update documentation

For a PR branch, the image tag is the branch name. For the master branch, the image tag is the latest release version incremented by one patch version and a -dev suffix. For example, if the current version is 0.5.3, pushes an image with the tag 0.6.0-dev.

The CI also provides a release workflow. See release process for more information.

Helm chart

The deployment of Quick in Kubernetes is done with Helm. The chart is part of the main repository and is hosted on our GitHub pages (https://bakdata.github.io/quick).