-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathheartbeat.tf
112 lines (108 loc) · 3.37 KB
/
heartbeat.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
resource "kubernetes_role" "linkerd_heartbeat" {
metadata {
name = local.linkerd_heartbeat_name
namespace = local.linkerd_namespace
labels = local.linkerd_label_control_plane_ns
}
rule {
verbs = ["get"]
api_groups = [""]
resources = ["configmaps"]
resource_names = ["linkerd-config"]
}
}
resource "kubernetes_role_binding" "linkerd_heartbeat" {
metadata {
name = local.linkerd_heartbeat_name
namespace = local.linkerd_namespace
labels = local.linkerd_label_control_plane_ns
}
subject {
kind = "ServiceAccount"
name = local.linkerd_heartbeat_name
namespace = local.linkerd_namespace
}
role_ref {
api_group = "rbac.authorization.k8s.io"
kind = "Role"
name = local.linkerd_heartbeat_name
}
}
resource "kubernetes_service_account" "linkerd_heartbeat" {
metadata {
name = local.linkerd_heartbeat_name
namespace = local.linkerd_namespace
labels = merge(local.linkerd_label_control_plane_ns, {
"linkerd.io/control-plane-component" = local.linkerd_component_heartbeat_name
})
}
}
resource "kubernetes_cron_job" "linkerd_heartbeat" {
depends_on = [
kubernetes_role.linkerd_heartbeat,
kubernetes_role_binding.linkerd_heartbeat,
kubernetes_service_account.linkerd_heartbeat
]
metadata {
name = local.linkerd_heartbeat_name
namespace = local.linkerd_namespace
labels = merge(
local.linkerd_label_control_plane_ns,
local.linkerd_label_partof_version,
{
"app.kubernetes.io/name" = local.linkerd_component_heartbeat_name,
"linkerd.io/control-plane-component" = local.linkerd_component_heartbeat_name,
}
)
annotations = local.linkerd_annotation_created_by
}
spec {
schedule = "16 8 * * * "
job_template {
metadata {
}
spec {
template {
metadata {
labels = merge(local.linkerd_label_workload_ns, {
"linkerd.io/control-plane-component" = local.linkerd_component_heartbeat_name
})
annotations = local.linkerd_annotation_created_by
}
spec {
automount_service_account_token = var.automount_service_account_token
container {
name = local.linkerd_component_heartbeat_name
image = local.linkerd_deployment_controller_image
args = [
local.linkerd_component_heartbeat_name,
"-prometheus-url=http://linkerd-prometheus.linkerd.svc.cluster.local:9090",
"-controller-namespace=${local.linkerd_namespace}",
"-log-level=${local.linkerd_container_log_level}"
]
resources {
limits {
memory = "250Mi"
cpu = "1"
}
requests {
cpu = "100m"
memory = "50Mi"
}
}
image_pull_policy = "IfNotPresent"
security_context {
run_as_user = local.linkerd_deployment_security_context_user
}
}
restart_policy = "Never"
node_selector = {
"beta.kubernetes.io/os" = "linux"
}
service_account_name = local.linkerd_heartbeat_name
}
}
}
}
}
}