Skip to content

Commit a889b1e

Browse files
committed
Added Terraform script for mw kube agent
1 parent d81fa2c commit a889b1e

8 files changed

+453
-0
lines changed

.terraform.lock.hcl

+42
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Readme..md

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# This Doc is about installing middleware Agent using terraform for K8s platform
2+
3+
# Initialize Terraform
4+
terraform init
5+
6+
# Validate the configuration
7+
terraform validate
8+
9+
# Plan the changes
10+
terraform plan
11+
12+
# Apply the changes
13+
terraform apply
14+
15+
# Destroy the changes
16+
terraform delete
17+
18+
# Extra Cautious while destroying
19+
terraform plan -destroy
20+
21+
middleware-terraform/
22+
├── main.tf # Main configuration file
23+
├── variables.tf # Variable declarations
24+
├── terraform.tfvars # Actual variable values
25+
└── providers.tf # Provider configuration

main.tf

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
resource "kubernetes_namespace" "middleware_agent" {
2+
metadata {
3+
name = "mw-agent-ns"
4+
labels = {
5+
environment = var.environment
6+
"app.kubernetes.io/managed-by" = "Helm"
7+
}
8+
annotations = {
9+
"meta.helm.sh/release-name" = "mw-agent"
10+
"meta.helm.sh/release-namespace" = "mw-agent-ns"
11+
}
12+
}
13+
}
14+
15+
# Install cert-manager if enabled (required for middleware auto-instrumentation)
16+
resource "helm_release" "cert_manager" {
17+
name = "cert-manager"
18+
repository = "https://charts.jetstack.io"
19+
chart = "cert-manager"
20+
namespace = "cert-manager"
21+
version = "v1.14.5"
22+
timeout = 600
23+
24+
atomic = true
25+
wait = true
26+
cleanup_on_fail = true
27+
28+
set {
29+
name = "installCRDs"
30+
value = "true"
31+
}
32+
33+
create_namespace = true
34+
}
35+
36+
# Install middleware agent with auto-instrumentation using local chart
37+
resource "helm_release" "middleware_agent" {
38+
name = "mw-agent"
39+
chart = "/home/naman/helm-charts/charts/mw-kube-agent-v3" # Path to your local chart
40+
namespace = kubernetes_namespace.middleware_agent.metadata[0].name
41+
create_namespace = false
42+
43+
timeout = 600
44+
45+
atomic = true
46+
wait = true
47+
cleanup_on_fail = true
48+
49+
set {
50+
name = "global.mw.apiKey"
51+
value = var.middleware_api_key
52+
}
53+
54+
set {
55+
name = "global.mw.target"
56+
value = "https://sliay.middleware.io:443"
57+
}
58+
59+
set {
60+
name = "global.clusterMetadata.name"
61+
value = var.cluster_name
62+
}
63+
64+
set {
65+
name = "mw-autoinstrumentation.enabled"
66+
value = "true"
67+
}
68+
69+
# Optional namespace exclusions
70+
dynamic "set" {
71+
for_each = length(var.excluded_namespaces) > 0 ? [1] : []
72+
content {
73+
name = "mw-autoinstrumentation.webhook.userExcludedNamespaces"
74+
value = "{${join(",", var.excluded_namespaces)}}"
75+
}
76+
}
77+
78+
depends_on = [helm_release.cert_manager, kubernetes_namespace.middleware_agent]
79+
}

providers.tf

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
terraform {
2+
required_providers {
3+
kubernetes = {
4+
source = "hashicorp/kubernetes"
5+
version = "~> 2.20"
6+
}
7+
helm = {
8+
source = "hashicorp/helm"
9+
version = "~> 2.9"
10+
}
11+
}
12+
}
13+
14+
# Configure the Kubernetes provider
15+
provider "kubernetes" {
16+
config_path = "~/.kube/config" # Path to your kubeconfig file
17+
config_context = "kind-kind" # Change this to your local context
18+
}
19+
20+
# Configure the Helm provider
21+
provider "helm" {
22+
kubernetes {
23+
config_path = "~/.kube/config"
24+
config_context = "kind-kind" # Change this to your local context
25+
}
26+
}

terraform.tfstate

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"version": 4,
3+
"terraform_version": "1.11.1",
4+
"serial": 8,
5+
"lineage": "3f820859-9370-b120-e343-935b2a545555",
6+
"outputs": {},
7+
"resources": [],
8+
"check_results": null
9+
}

0 commit comments

Comments
 (0)