infra/terraform: add k8s module file for my portfolio
- added k8s module file for my portfolio manifest
This commit is contained in:
		
							
								
								
									
										50
									
								
								infra/terraform/kubernetes/portfolio.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								infra/terraform/kubernetes/portfolio.tf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | ||||
| resource "kubernetes_namespace" "portfolio" { | ||||
|   metadata { | ||||
|     name = "my-portfolio" | ||||
|   } | ||||
| } | ||||
|  | ||||
| resource "kubernetes_secret" "docker_secret" { | ||||
|   metadata { | ||||
|     name      = "docker-registry-credentials" | ||||
|     namespace = "my-portfolio" | ||||
|   } | ||||
|  | ||||
|   type = "kubernetes.io/dockerconfigjson" | ||||
|  | ||||
|   data = { | ||||
|     ".dockerconfigjson" = jsonencode({ | ||||
|       auths = { | ||||
|         "${var.docker_registry_host}" = { | ||||
|           username = var.docker_username | ||||
|           password = var.docker_password | ||||
|           auth     = base64encode("${var.docker_username}:${var.docker_password}") | ||||
|         } | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   depends_on = [kubernetes_namespace.portfolio] | ||||
| } | ||||
|  | ||||
| locals { | ||||
|   # Read and process the YAML file with placeholders | ||||
|   manifest_content = templatefile("../../../kubernetes/my-portfolio/portfolioManifest.yaml", { | ||||
|     PORTFOLIO_HOST  = var.portfolio_host | ||||
|     DOCKER_REGISTRY_HOST = var.docker_registry_host | ||||
|   }) | ||||
|   # Split into individual documents | ||||
|   manifest_documents = split("---", replace(local.manifest_content, "/\\n\\s*\\n/", "---")) | ||||
| } | ||||
|  | ||||
| resource "kubernetes_manifest" "portfolio_manifest" { | ||||
|   for_each = { for i, doc in local.manifest_documents : i => doc if trimspace(doc) != "" } | ||||
|  | ||||
|   manifest = yamldecode(each.value) | ||||
|  | ||||
|   field_manager { | ||||
|     force_conflicts = true | ||||
|   } | ||||
|  | ||||
|   depends_on = [kubernetes_namespace.portfolio] | ||||
| } | ||||
		Reference in New Issue
	
	Block a user