@@ -4,13 +4,33 @@ terraform {
44 source = " hashicorp/kubernetes"
55 version = " ~> 2.38"
66 }
7+ helm = {
8+ source = " hashicorp/helm"
9+ version = " ~> 2.10"
10+ }
11+ minikube = {
12+ source = " scott-the-programmer/minikube"
13+ version = " ~> 0.6"
14+ }
715 local = {
816 source = " hashicorp/local"
917 version = " ~> 2.1"
1018 }
1119 }
1220}
1321
22+ # Minikube cluster for local development
23+ resource "minikube_cluster" "minikube_docker" {
24+ count = var. create_k8s_resources ? 1 : 0
25+
26+ driver = " docker"
27+ cluster_name = " devops-project"
28+ addons = [
29+ " default-storageclass" ,
30+ " storage-provisioner"
31+ ]
32+ }
33+
1434# This is a sample Kubernetes configuration that can be validated in CI
1535# For local development, you can still use minikube separately
1636resource "kubernetes_namespace" "devops_app" {
@@ -25,6 +45,19 @@ resource "kubernetes_namespace" "devops_app" {
2545 }
2646}
2747
48+ # ArgoCD namespace
49+ resource "kubernetes_namespace" "argocd" {
50+ count = var. create_k8s_resources ? 1 : 0
51+
52+ metadata {
53+ name = " argocd"
54+ labels = {
55+ name = " argocd"
56+ app = " argocd"
57+ }
58+ }
59+ }
60+
2861resource "kubernetes_deployment" "flask_app" {
2962 count = var. create_k8s_resources ? 1 : 0
3063
@@ -103,3 +136,8 @@ output "deployment_name" {
103136 description = " The name of the created Kubernetes deployment"
104137 value = var. create_k8s_resources ? kubernetes_deployment. flask_app [0 ]. metadata [0 ]. name : " Not created (create_k8s_resources = false)"
105138}
139+
140+ output "argocd_namespace" {
141+ description = " The name of the ArgoCD namespace"
142+ value = var. create_k8s_resources ? kubernetes_namespace. argocd [0 ]. metadata [0 ]. name : " Not created (create_k8s_resources = false)"
143+ }
0 commit comments