We will create the nginx App on k8s with using Terraform.

Step1:
Create the kubernetes file like below.

vim kubernetes.tf
terraform {
  required_providers {
    kubernetes = {
      source = "hashicorp/kubernetes"
    }
  }
}

variable "host" {
  type = string
}

variable "client_certificate" {
  type = string
}

variable "client_key" {
  type = string
}

variable "cluster_ca_certificate" {
  type = string
}

provider "kubernetes" {
  host = var.host

  client_certificate     = base64decode(var.client_certificate)
  client_key             = base64decode(var.client_key)
  cluster_ca_certificate = base64decode(var.cluster_ca_certificate)
}

resource "kubernetes_deployment" "nginx" {
  metadata {
    name = "nginx-terraform-ex"
    labels = {
      App = "nginx-terraform-ex"
    }
  }

  spec {
    replicas = 2
    selector {
      match_labels = {
        App = "nginx-terraform-ex"
      }
    }
    template {
      metadata {
        labels = {
          App = "nginx-terraform-ex"
        }
      }
      spec {
        container {
          image = "nginx:1.7.8"
          name  = "example"

          port {
            container_port = 80
          }

          resources {
            limits = {
              cpu    = "0.5"
              memory = "512Mi"
            }
            requests = {
              cpu    = "250m"
              memory = "50Mi"
            }
          }
        }
      }
    }
  }
}
resource "kubernetes_service" "nginx" {
  metadata {
    name = "nginx-example-1"
  }
  spec {
    selector = {
      App = "nginx-terraform-ex"
    }
    port {
      node_port   = 30202
      port        = 80
      target_port = 80
    }

    type = "NodePort"
  }
}

Create variables file.

vim terraform.tfvars
host                   = "https://k8sapiaddress:6443"
client_certificate = "LS0tLS1..."
client_key = "LS0tLS1..."
cluster_ca_certificate = "LS0tLS1..."

Step2:

Install the applicaiton with terraform.

terraform init
terraform apply

Step3:
Check installation.

kubectl get deploy -n default

Teşekkürler.


Tags:

No responses yet

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Latest Comments