Delivery Pipeline Description

Automated pipeline was created in GitHub, GitLab or Bitbucket to automate all installation steps to have KKP up and running and ready to operate with GitOps (using Flux tool).

Pipeline Schema

Pipeline Schema

Jobs are being triggered on 2 specific events - either on your Pull (Merge) Requests or after push to main branch.

On pull requests, only the jobs for terraform validate and plan are executed (so that you have visibility what is going to change).

All other jobs are being executed on the main branch after push (in case that any files in directories kubeone, kubermatic, terraform or .github (.gitlab-ci.yml / bitbucket-pipelines.yml) have changed).


terraform-kkp-validate, terraform-kkp-dns-validate

Runs validation of Terraform module(s).


Prepares Terraform backend for storing Terraform state.

This is performed only with [ GitHub / Bitbucket ] and [ AWS / GCP ]. If you are using GitLab, terraform state is stored in GitLab directly.


Prepares Terraform plan based on the stored Terraform state.


Applies the Terraform changes based on a Terraform state.

==> VM instances, LB for Kubernetes and other resources are prepared at this stage.

Runs only after the push in main branch.


Performs the cluster provisioning using the kubeone tool.

==> Kubernetes cluster is ready to use at this stage.

Runs only after the push in main branch.


Performs the Kubermatic Kubernetes Platform installation with installer.

==> KKP platform with core components is prepared at this stage.

Runs only after the push in main branch.


Updates DNS records for KKP services using Terraform module.

Optional step for AWS only.

==> Services from Kubernetes for KKP are retrieved and external IPs are registered in Route53 using hosted zone.

Runs only after the push in main branch.


Initiates Flux v2 using flux bootstrap github (or flux bootstrap gitlab / flux bootstrap git) command.

==> KKP resources (Seed, Preset, Project) and optionally components of Monitoring/Logging/Alerting stack are delivered after Flux is initiated on the cluster, Flux itself is also managed by the same repository.

Runs only after the push in main branch.