Skip to content

Commit a9025e3

Browse files
committed
initial commit
0 parents  commit a9025e3

File tree

6 files changed

+247
-0
lines changed

6 files changed

+247
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.terraform/*
2+
/terraform.tfstate
3+
terraform.tfstate.backup

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# terraform-helm-release-prometheus-operator

inputs.tf

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Helm Chart
2+
variable "helm_chart_version" {
3+
description = "Helm chart version"
4+
default = "8.15.6"
5+
}
6+
variable "helm_chart_name" {
7+
description = "Helm chart name"
8+
default = "prometheus-operator"
9+
}
10+
variable "helm_chart_namespace" {
11+
description = "Kubernetes namespace to deploy"
12+
default = "monitoring"
13+
}
14+
variable "skip_crds" {
15+
default = false
16+
}
17+
variable "create_namespace" {
18+
default = true
19+
}
20+
# General values
21+
variable "defaultRules_general" {
22+
default = true
23+
}
24+
variable "defaultRules_PrometheusOperator" {
25+
default = true
26+
}
27+
variable "defaultRules_alertmanager" {
28+
default = true
29+
}
30+
variable "defaultRules_etcd" {
31+
default = false
32+
}
33+
variable "defaultRules_k8s" {
34+
default = true
35+
}
36+
variable "defaultRules_kubeApiserver" {
37+
default = true
38+
}
39+
variable "defaultRules_kubeApiserverError" {
40+
default = true
41+
}
42+
variable "defaultRules_kubeApiserverSlos" {
43+
default = true
44+
}
45+
variable "defaultRules_kubePrometheusNodeAlerting" {
46+
default = true
47+
}
48+
variable "defaultRules_kubePrometheusNodeRecording" {
49+
default = true
50+
}
51+
variable "defaultRules_kubeScheduler" {
52+
default = true
53+
}
54+
variable "defaultRules_kubernetesAbsent" {
55+
default = true
56+
}
57+
variable "defaultRules_kubernetesApps" {
58+
default = true
59+
}
60+
variable "defaultRules_kubernetesResources" {
61+
default = true
62+
}
63+
variable "defaultRules_kubernetesStorage" {
64+
default = true
65+
}
66+
variable "defaultRules_kubernetesSystem" {
67+
default = true
68+
}
69+
variable "defaultRules_network" {
70+
default = true
71+
}
72+
variable "defaultRules_node" {
73+
default = true
74+
}
75+
variable "defaultRules_prometheus" {
76+
default = true
77+
}
78+
variable "defaultRules_time" {
79+
default = true
80+
}
81+
82+
# Prometheus-Operator - Values
83+
variable "prometheusOperator_manageCrds" {
84+
default = true
85+
}
86+
variable "prometheusOperator_image_tag" {
87+
default = "v0.38.1"
88+
}
89+
90+
# Prometheus - Values
91+
variable "prometheus_prometheusSpec_image_tag" {
92+
description = "Tag of Prometheus container image to be deployed."
93+
default = "v2.18.1"
94+
}
95+
variable "prometheus_prometheusSpec_replicas" {
96+
description = "Number of instances to deploy for a Prometheus deployment."
97+
default = "1"
98+
}
99+
variable "prometheus_prometheusSpec_ruleNamespaceSelector" {
100+
description = "Namespaces to be selected for PrometheusRules discovery."
101+
default = true
102+
}
103+
variable "prometheus_service_type" {
104+
description = "Prometheus Service type"
105+
default = "ClusterIP"
106+
}
107+
variable "alertmanagerSpec_image_tag" {
108+
description = "Tag of Alertmanager container image to be deployed."
109+
default = "v0.20.0"
110+
}
111+
variable "alertmanager_service_type" {
112+
description = "Alertmanager Service type"
113+
default = "ClusterIP"
114+
}
115+
variable "grafana_adminPassword" {
116+
description = "Admin password to log into the grafana UI "
117+
default = "pa$$w0rd"
118+
}
119+
variable "grafana_image_tag" {
120+
description = "Image tag. (Must be >= 5.0.0)"
121+
default = "7.0.3"
122+
}
123+
variable "grafana_service_type" {
124+
description = "Kubernetes service type"
125+
default = "ClusterIP"
126+
}
127+
variable "grafana_service_port" {
128+
description = "Kubernetes port where service is exposed"
129+
default = "3000"
130+
}
131+
132+

main.tf

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
terraform {
2+
required_version = ">= 0.12.0"
3+
}
4+
5+
resource "helm_release" "prometheus-operator" {
6+
name = var.helm_chart_name
7+
chart = "stable/prometheus-operator"
8+
version = var.helm_chart_version
9+
namespace = var.helm_chart_namespace
10+
skip_crds = var.skip_crds
11+
create_namespace = var.create_namespace
12+
13+
values = [
14+
templatefile("${path.module}/template/operator_values.tpl", {
15+
helm_chart_version = var.helm_chart_version
16+
helm_chart_name = var.helm_chart_name
17+
helm_chart_namespace = var.helm_chart_namespace
18+
defaultRules_general = var.defaultRules_general
19+
defaultRules_PrometheusOperator = var.defaultRules_PrometheusOperator
20+
defaultRules_alertmanager = var.defaultRules_alertmanager
21+
defaultRules_etcd = var.defaultRules_etcd
22+
defaultRules_k8s = var.defaultRules_k8s
23+
defaultRules_kubeApiserver = var.defaultRules_kubeApiserver
24+
defaultRules_kubeApiserverError = var.defaultRules_kubeApiserverError
25+
defaultRules_kubeApiserverSlos = var.defaultRules_kubeApiserverSlos
26+
defaultRules_kubePrometheusNodeAlerting = var.defaultRules_kubePrometheusNodeAlerting
27+
defaultRules_kubePrometheusNodeRecording = var.defaultRules_kubePrometheusNodeRecording
28+
defaultRules_kubeScheduler = var.defaultRules_kubeScheduler
29+
defaultRules_kubernetesAbsent = var.defaultRules_kubernetesAbsent
30+
defaultRules_kubernetesApps = var.defaultRules_kubernetesApps
31+
defaultRules_kubernetesResources = var.defaultRules_kubernetesResources
32+
defaultRules_kubernetesStorage = var.defaultRules_kubernetesStorage
33+
defaultRules_kubernetesSystem = var.defaultRules_kubernetesSystem
34+
defaultRules_network = var.defaultRules_network
35+
defaultRules_node = var.defaultRules_node
36+
defaultRules_prometheus = var.defaultRules_prometheus
37+
defaultRules_time = var.defaultRules_time
38+
prometheusOperator_manageCrds = var.prometheusOperator_manageCrds
39+
prometheusOperator_image_tag = var.prometheusOperator_image_tag
40+
prometheus_prometheusSpec_image_tag = var.prometheus_prometheusSpec_image_tag
41+
prometheus_prometheusSpec_replicas = var.prometheus_prometheusSpec_replicas
42+
prometheus_prometheusSpec_ruleNamespaceSelector = var.prometheus_prometheusSpec_ruleNamespaceSelector
43+
prometheus_service_type = var.prometheus_service_type
44+
alertmanagerSpec_image_tag = var.alertmanagerSpec_image_tag
45+
alertmanager_service_type = var.alertmanager_service_type
46+
grafana_adminPassword = var.grafana_adminPassword
47+
grafana_image_tag = var.grafana_image_tag
48+
grafana_service_type = var.grafana_service_type
49+
grafana_service_port = var.grafana_service_port
50+
51+
})
52+
]
53+
}

outputs.tf

Whitespace-only changes.

template/operator_values.tpl

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# General rules
2+
defaultRules:
3+
rules:
4+
general: ${defaultRules_general}
5+
PrometheusOperator: ${defaultRules_PrometheusOperator}
6+
alertmanager: ${defaultRules_alertmanager}
7+
etcd: ${defaultRules_etcd}
8+
k8s: ${defaultRules_k8s}
9+
kubeApiserver: ${defaultRules_kubeApiserver}
10+
kubeApiserverError: ${defaultRules_kubeApiserverError}
11+
kubeApiserverSlos: ${defaultRules_kubeApiserverSlos}
12+
kubePrometheusNodeAlerting: ${defaultRules_kubePrometheusNodeAlerting}
13+
kubePrometheusNodeRecording: ${defaultRules_kubePrometheusNodeRecording}
14+
kubeScheduler: ${defaultRules_kubeScheduler}
15+
kubernetesAbsent: ${defaultRules_kubernetesAbsent}
16+
kubernetesApps: ${defaultRules_kubernetesApps}
17+
kubernetesResources: ${defaultRules_kubernetesResources}
18+
kubernetesStorage: ${defaultRules_kubernetesStorage}
19+
kubernetesSystem: ${defaultRules_kubernetesSystem}
20+
network: ${defaultRules_network}
21+
node: ${defaultRules_node}
22+
prometheus: ${defaultRules_prometheus}
23+
time: ${defaultRules_time}
24+
25+
# Prometheus-Operator
26+
prometheusOperator:
27+
manageCrds: ${prometheusOperator_manageCrds}
28+
image:
29+
tag: ${prometheusOperator_image_tag}
30+
31+
# Prometheus
32+
prometheus:
33+
prometheusSpec:
34+
image:
35+
tag: ${prometheus_prometheusSpec_image_tag}
36+
replicas: ${prometheus_prometheusSpec_replicas}
37+
rule:
38+
NamespaceSelector:
39+
any: ${prometheus_prometheusSpec_ruleNamespaceSelector}
40+
service:
41+
type: ${prometheus_service_type}
42+
43+
# Alertmanager
44+
alertmanager:
45+
alertmanagerSpec:
46+
image:
47+
tag: ${alertmanagerSpec_image_tag}
48+
service:
49+
type: ${alertmanager_service_type}
50+
51+
# Grafana
52+
grafana:
53+
service:
54+
port: ${grafana_service_port}
55+
type: ${grafana_service_type}
56+
adminPassword: ${grafana_adminPassword}
57+
image:
58+
tag: ${grafana_image_tag}

0 commit comments

Comments
 (0)