Skip to main content
Kubernetes Addons module for Terraform
  • Labs / 
  • Kubernetes Addons...
Version v0.4.0 was released on 19 September, 2023 View changelog External link icon

Kubernetes Addons module for Terraform

Common addons for Equinix Metal K8s Clusters

What is it?

The Kubernetes Addons Collection of Terraform modules provides reusable modules and examples that demonstrate how to install and configure common Kubernetes requirements for Equinix Metal Clusters using Terraform.

Why do we love it?

  • Just enough Terraform: The modules in this collection are designed to work seamlessly in a Terraform deployment. We know this because these modules have been extracted from multiple Terraform deployment integrations. These add-ons help keep Terraform configuration DRY (Don't Repeat Yourself).
  • Nothing Extra: The collection modules are minimal. Helm already does an excellent job of consuming Kubernetes manifests to install and manage software. The Addons module does not support bare kubectl apply -f or helm install scripts unless there's a compelling reason. The most common reason is that the attributes needed to configure Kubernetes manifests are known only by Terraform at deployment time.
  • Open and Centralized: If you have Terraform configurations that are always included in your Equinix Metal Kubernetes stacks, consider opening a PR to share your work with others.

How do you use it?

The Kubernetes Addon project can be used as a root module or you can directly utilize the submodules. The root module exposes variables to enable and configure each of the submodules, and the outputs of each module are also available through the root module. The following sub-modules are included:

To utilize the Addons, you need a Kubernetes Cluster deployed on Equinix Metal. You can use the Equinix Metal Cloud Provider Kubernetes controller (CPEM) within the terraform-equinix-kubernetes-cluster by following the CPEM example in that Kubernetes Cluster Terraform module.

# Sample truncated to illustrate module use. See the example link above for the full code

# Create a Kubernetes Cluster
module "tfk8s" {
  source  = "equinix-labs/kubernetes-cluster/equinix"
  # version = "0.2.1" # Use the latest version, according to https://github.com/equinix-labs/terraform-equinix-kubernetes-cluster/releases

  metal_auth_token        = var.metal_auth_token
  kube_vip_version        = var.kube_vip_version
  kubernetes_version      = var.kubernetes_version
  metal_project_id        = var.metal_project_id
  cp_ha                   = var.cp_ha
  worker_host_count       = var.worker_host_count
  metal_metro             = var.metal_metro
  cloud_provider_external = var.cloud_provider_external
}

# Install Addons within that cluster
module "kubernetes_addons" {
  source  = "equinix-labs/kubernetes-addons/equinix"
  version = "0.4.0"

  # **SNIP** (see the full example link above for working code)

  # Wait to run add-ons until the cluster is ready for them
  kubeconfig_remote_path = "/etc/kubernetes/admin.conf"

  enable_metallb                      = false
  enable_cloud_provider_equinix_metal = true
  cloud_provider_equinix_metal_config = {
    version = var.cpem_version
    secret = {
      projectID    = var.metal_project_id
      apiKey       = var.metal_auth_token
      loadbalancer = "kube-vip://"
    }
  }
}

Let us know about your experience with this project on the Equinix Community or Equinix Metal Community Slack.

Interested in other Terraform deployment helpers? Let us know.

Last updated

30 August, 2024

Category

Type

Integrations
Subscribe to our newsletter

A monthly digest of the latest news, articles, and resources.