terraform-provider-stackitp.../docs/guides/kubernetes_provider_ske.md
Ruben Hönle 4d93772fd2
chore(docs): use new 'default_region' provider attribute (#793)
instead of deprecated 'region' attribute
2025-04-30 09:51:59 +00:00

2.7 KiB

page_title
Using Kubernetes Provider with STACKIT SKE

Using Kubernetes Provider with STACKIT SKE

Overview

This guide outlines the process of utilizing the HashiCorp Kubernetes provider alongside the STACKIT provider to create and manage resources in a STACKIT SKE Cluster.

Steps

  1. Configure STACKIT Provider

    First, configure the STACKIT provider to connect to the STACKIT services.

    provider "stackit" {
      default_region = "eu01"
    }
    
  2. Create STACKIT SKE Cluster

    Define and create the STACKIT SKE cluster resource with the necessary specifications.

    resource "stackit_ske_cluster" "ske_cluster_01" {
      project_id             = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      name                   = "example-cluster"
      kubernetes_version_min = "1.31"
    
      node_pools = [
        {
          name               = "example-node-pool"
          machine_type       = "g1.3"
          minimum            = 1
          maximum            = 2
          availability_zones = ["eu01-1"]
          os_version_min     = "3815.2.5"
          os_name            = "flatcar"
          volume_size        = 32
          volume_type        = "storage_premium_perf6"
        }
      ]
    }
    
  3. Define STACKIT SKE Kubeconfig

    Create a resource to obtain the kubeconfig for the newly created STACKIT SKE cluster.

    resource "stackit_ske_kubeconfig" "ske_kubeconfig_01" {
      project_id   = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      cluster_name = stackit_ske_cluster.ske_cluster_01.name
      refresh      = true
    }
    
  4. Configure Kubernetes Provider

    Use the kubeconfig from the STACKIT SKE cluster to configure the Kubernetes provider.

    provider "kubernetes" {
      host                   = yamldecode(stackit_ske_kubeconfig.ske_kubeconfig_01.kube_config).clusters[0].cluster.server
      client_certificate     = base64decode(yamldecode(stackit_ske_kubeconfig.ske_kubeconfig_01.kube_config).users[0].user["client-certificate-data"])
      client_key             = base64decode(yamldecode(stackit_ske_kubeconfig.ske_kubeconfig_01.kube_config).users[0].user["client-key-data"])
      cluster_ca_certificate = base64decode(yamldecode(stackit_ske_kubeconfig.ske_kubeconfig_01.kube_config).clusters[0].cluster["certificate-authority-data"])
    }
    
  5. Define Kubernetes Resources

    Now you can start defining Kubernetes resources that you want to manage. Here is an example of creating a Kubernetes Namespace.

    resource "kubernetes_namespace" "dev" {
      metadata {
        name = "dev"
      }
    }