Skip to main content
Version: 1.0.0

Cluster Customization and Component Ejection

Zeet supports three different type of clusters.

  1. Managed Clusters: These are clusters created from within Zeet, and managed entirely by Zeet. Managed clusters abstract away the technical intricacies of Kubernetes and allow users to focus on building and deploying their projects.

  2. Self-Managed Clusters: Self-managed clusters are those you operate and maintain independently. You can use these clusters in Zeet by uploading the Kubeconfig for your cluster.

  3. Ejected Clusters: While Zeet-managed clusters excel at simplifying the complexities of Kubernetes, Zeet also offers users the option of unmanaged, highly configurable clusters through Cluster Ejection, providing greater customization flexibility for those who wish to customize their Zeet-managed clusters.

Cluster Component Ejection

When you initiate the creation of a new cluster through Zeet, it is configured using a pre-defined template. This template is used by Zeet to set up essential infrastructure and services for your projects, such as Prometheus, Traefik, and the cluster infrastructure itself. By default, we manage these infrastructure components behind the scenes. Nevertheless, if you wish to tailor your cluster configuration for more advanced scenarios, we offer the option to expose these modules to you as projects in your Zeet Dashboard, through a procedure we refer to as Cluster Ejection.

Once completed, you will be provided with the Terraform modules for your cluster in a GitHub repo. You are free to modify this template to fit your needs.

info

Please note that the Cluster Ejection process results in the addition of one active project per component to your Zeet account. These projects are billable and will incur normal project rates if they exceed the 3 free project limit.

How to Initiate Cluster Ejection

Cluster Terraform

A Zeet-managed cluster is created using a Terraform module. This module contains the configuration for the cluster and the infrastructure components that are deployed within the cluster. If you wish to customize the cluster's configuration or change the node pool settings, you can eject the cluster and modify the Terraform module. The Terraform module also manages the IAM roles and policies required for the cluster.

You can eject the Terraform component by navigating to the cluster's settings page and clicking the "Create Zeet Project" button under the cluster-terraform section. Once the ejection is initiated, it will take a few minutes to complete. After the ejection is complete, you will see a Zeet Terraform Project in your dashboard.

After Ejection

After Cluster Ejection, you'll receive a Zeet project with the cluster configuration template used to initialize your cluster. This template, implemented as a Terraform module, is deployed within your cluster as a Zeet Project. You can access it through the Zeet dashboard, and it will typically be categorized under the group zeet-infrastructure.

Customizing Cluster Configurations

You have the flexibility to adjust your cluster configuration by utilizing all the features that come with standard Zeet projects. For instance, if you want to activate static egress IP using NAT gateways for your cluster, simply update the enable_nat Terraform variable from its default value of false to true.

Modifying Cluster Template

To understand the functionality of these Terraform variables and to customize the template itself, you can fork the official cluster template referenced in the source section.

After making changes to the Terraform module on GitHub, you can modify the source of your Zeet Project to point to your forked repository. It's important to note that you'll need to manually trigger a new workflow for your Terraform project in Zeet for the modifications to take effect.

See the node group customization guide for more information on how to customize the node groups in your cluster.

Helm Components

A Zeet-managed cluster also has a few Helm components deployed within the cluster. These components power the Zeet platform and are required for the cluster to function properly. If you wish to customize these components, you can eject the Helm components and modify the Helm release configuration. A detailed description of the Helm components can be found in the Platform Guide.

You can eject the Helm components by navigating to the cluster's settings page and clicking the "Create Zeet Project" button for each Helm component.

Upgrading Helm Versions

A very common use case for ejecting Helm components is to upgrade the Helm version used in the cluster. You can eject the Helm components and modify the Helm release configuration to use a different Helm version.

Removing the Ejected Project

If you no longer need the ejected project, you can remove it from your Zeet dashboard. There are a few different options when removing a project:

  • Unlink Project: This option will remove the project from your Zeet dashboard, but it will not delete any resources in your cloud provider. The component will become un-ejected and can be re-ejected at a later time.
  • Destroy Cloud Resources: This option will retain the project in your Zeet dashboard and delete all resources in your cloud provider. You can redeploy the project at a later time.
  • Destroy Project: This option will remove the project from your Zeet dashboard and delete all resources in your cloud provider. This action is irreversible and cannot be undone.
danger

When you destroy projects associated with a cluster component, it's possible that the cluster will become unhealthy or unusable. Please make sure to backup any important data before destroying the project.