← azuredeploy

terra grunt restructure

d2638ea0aac6ce658977e3ce6be71ee21c8c799d · ovidiucs · Jul 23, 2024 18:39

+85 · 8 files changed

  • terraform/deployment/aks/kubectl/terragrunt.hcl +29 −0
  • terraform/deployment/aks/main.tf +7 −0
  • terraform/deployment/{ => aks/modules/kubectl}/harness-delegate.yml +0 −0
  • terraform/deployment/{kubectl-cfg/clusterrolebining.yaml => aks/modules/kubectl/kubectl-cfg/clusterrolebinding.yaml} +0 −0
  • terraform/deployment/{ => aks/modules/kubectl}/kubectl-cfg/secret.yaml +0 −0
  • terraform/deployment/{ => aks/modules/kubectl}/kubectl-cfg/serviceaccount.yaml +0 −0
  • terraform/deployment/aks/modules/kubectl/main.tf +40 −0
  • terraform/deployment/aks/modules/kubectl/variables.tf +9 −0
diff --git a/terraform/deployment/aks/kubectl/terragrunt.hcl b/terraform/deployment/aks/kubectl/terragrunt.hcl
new file mode 100644
index 0000000..8705b61
--- /dev/null
+++ b/terraform/deployment/aks/kubectl/terragrunt.hcl
@@ -0,0 +1,29 @@
+include "root" {
+  path = find_in_parent_folders("terragrunt.hcl")
+}
+
+terraform {
+  source = "../modules//kubectl/"
+}
+
+# Kubernetes provider configuration
+provider "kubernetes" {
+  host                   = dependency.aksclauster.outputs.host
+  username               = dependency.akscluster.outputs.username
+  password               = dependency.akscluster.outputs.password
+  client_certificate     = base64decode(dependency.aks-cluster.outputs.client_certificate)
+  client_key             = base64decode(dependency.aks-cluster.outputs.client_key)
+  cluster_ca_certificate = base64decode(dependency.aks-cluster.outputs.cluster_ca_certificate)
+}
+
+inputs = {
+      cluster_config = {
+        host                   = local.aks_host
+        client_key             = local.aks_client_key
+        cluster_ca_certificate = local.aks_cluster_ca_certificate
+      }
+}
+
+dependency "akscluster" {
+  config_path = "../"
+}
diff --git a/terraform/deployment/aks/main.tf b/terraform/deployment/aks/main.tf
index 0b04778..463dd2d 100644
--- a/terraform/deployment/aks/main.tf
+++ b/terraform/deployment/aks/main.tf
@@ -58,6 +58,13 @@ module "aks" {
   attached_acr_id_map = var.attached_acr_id_map
 }
 
+/*
+# Output to see what the aks module is providing
+output "aks_module_outputs" {
+  value     = module.aks
+  sensitive = true
+}
+*/
 /*
 module "vm" {
   source = "./modules/vm"
diff --git a/terraform/deployment/harness-delegate.yml b/terraform/deployment/aks/modules/kubectl/harness-delegate.yml
similarity index 100%
rename from terraform/deployment/harness-delegate.yml
rename to terraform/deployment/aks/modules/kubectl/harness-delegate.yml
diff --git a/terraform/deployment/kubectl-cfg/clusterrolebining.yaml b/terraform/deployment/aks/modules/kubectl/kubectl-cfg/clusterrolebinding.yaml
similarity index 100%
rename from terraform/deployment/kubectl-cfg/clusterrolebining.yaml
rename to terraform/deployment/aks/modules/kubectl/kubectl-cfg/clusterrolebinding.yaml
diff --git a/terraform/deployment/kubectl-cfg/secret.yaml b/terraform/deployment/aks/modules/kubectl/kubectl-cfg/secret.yaml
similarity index 100%
rename from terraform/deployment/kubectl-cfg/secret.yaml
rename to terraform/deployment/aks/modules/kubectl/kubectl-cfg/secret.yaml
diff --git a/terraform/deployment/kubectl-cfg/serviceaccount.yaml b/terraform/deployment/aks/modules/kubectl/kubectl-cfg/serviceaccount.yaml
similarity index 100%
rename from terraform/deployment/kubectl-cfg/serviceaccount.yaml
rename to terraform/deployment/aks/modules/kubectl/kubectl-cfg/serviceaccount.yaml
diff --git a/terraform/deployment/aks/modules/kubectl/main.tf b/terraform/deployment/aks/modules/kubectl/main.tf
new file mode 100644
index 0000000..cae1cdf
--- /dev/null
+++ b/terraform/deployment/aks/modules/kubectl/main.tf
@@ -0,0 +1,40 @@
+terraform {
+  required_providers {
+    kubernetes = {
+      source = "hashicorp/kubernetes"
+      # Setting the provider version is a strongly recommended practice
+        version = "~> 2.23.0"
+    }
+  }
+  # Provider functions require Terraform 1.8 and later.
+  required_version = ">= 1.8.0"
+}
+/*
+provider "kubernetes" {
+        #host                   = azurerm_kubernetes_cluster.cluster.kube_config.0.host
+        host                    = var.cluster_config.host
+        #client_certificate     = base64decode(azurerm_kubernetes_cluster.cluster.kube_config.0.client_certificate)
+        #client_key             = base64decode(azurerm_kubernetes_cluster.cluster.kube_config.0.client_key)
+        client_key              = base64decode(var.cluster_config.client_key)
+        #cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.cluster.kube_config.0.cluster_ca_certificate)
+        cluster_ca_certificate  = base64decode(var.cluster_config.cluster_ca_certificate)
+}
+# Multi decode YAML, iterate over the object
+
+resource "kubernetes_manifest" "harness_delegate" {
+  value = provider::kubernetes::manifest_decode_multi(file("manifest.yaml"))
+  manifest = yamldecode(file("harness-delegate.yml"))
+}
+
+*/
+resource "kubernetes_manifest" "clusterrolebinding" {
+  manifest = yamldecode(file("${path.module}/kubectl-cfg/clusterrolebinding.yaml"))
+}
+
+resource "kubernetes_manifest" "secret" {
+  manifest = yamldecode(file("${path.module}/kubectl-cfg/secret.yaml"))
+}
+
+resource "kubernetes_manifest" "serviceaccount" {
+  manifest = yamldecode(file("${path.module}/kubectl-cfg/serviceaccount.yaml"))
+}
diff --git a/terraform/deployment/aks/modules/kubectl/variables.tf b/terraform/deployment/aks/modules/kubectl/variables.tf
new file mode 100644
index 0000000..ce9b6c3
--- /dev/null
+++ b/terraform/deployment/aks/modules/kubectl/variables.tf
@@ -0,0 +1,9 @@
+variable "cluster_config" {
+  description = "AKS Cluster Config"
+  type        = object({
+    host      = string
+    client_key = string
+    cluster_ca_certificate = string
+  })
+}
+