1. Kubernetes Cluster

1.1. ./setupkindcluster132.sh

1.2. kubectl get nodes -o wide

NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME 132-control-plane Ready control-plane 7m42s v1.32.2 172.18.0.3 <none> Debian GNU/Linux 12 (bookworm) 5.15.0-133-generic containerd://2.0.2 132-worker Ready <none> 7m33s v1.32.2 172.18.0.2 <none> Debian GNU/Linux 12 (bookworm) 5.15.0-133-generic containerd://2.0.2 132-worker2 Ready <none> 7m33s v1.32.2 172.18.0.5 <none> Debian GNU/Linux 12 (bookworm) 5.15.0-133-generic containerd://2.0.2 132-worker3 Ready <none> 7m33s v1.32.2 172.18.0.4 <none> Debian GNU/Linux 12 (bookworm) 5.15.0-133-generic containerd://2.0.2

1.3. kubectl config get-contexts

CURRENT NAME CLUSTER AUTHINFO NAMESPACE

1.4 kubectl get namespace

NAME STATUS AGE default Active 9m13s kube-node-lease Active 9m13s kube-public Active 9m13s kube-system Active 9m13s local-path-storage Active 9m10s metallb-system Active 9m1s

Screenshot 2025-04-29 at 11.43.43 PM.png

  1. Kubernetes create namespace with Terraform

2.1. version.tf and main.tf

#version.tf
terraform {
  required_providers {
    kubernetes = {
      source  = "hashicorp/kubernetes"
      version = "2.36.0"
    }
  }
}
provider "kubernetes" {
  config_path    = "~/.kube/config"
  config_context = "132"
}

#main.tf
resource "kubernetes_namespace" "example" {
  metadata {
    name = "my-first-namespace"
  }
}

2.2. Run terraform

terraform init terraform fmt terraform validate terraform apply -auto-approve

Screenshot 2025-04-30 at 12.06.14 PM.png