forked from grafana/jsonnet-libs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
grafana.libsonnet
67 lines (57 loc) · 2.1 KB
/
grafana.libsonnet
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
// grafana.libsonnet provides the k-compat layer with grafana-opinionated defaults
(import 'k-compat.libsonnet')
+ {
core+: {
v1+: {
containerPort+:: {
// Force all ports to have names.
new(name, port)::
super.newNamed(name=name, containerPort=port),
// Shortcut constructor for UDP ports.
newUDP(name, port)::
super.newNamedUDP(name=name, containerPort=port),
},
container+:: {
new(name, image)::
super.new(name, image) +
super.withImagePullPolicy('IfNotPresent'),
},
},
},
local appsExtentions = {
daemonSet+: {
new(name, containers, podLabels={})::
super.new(name, containers, podLabels={}) +
// Can't think of a reason we wouldn't want a DaemonSet to run on
// every node.
super.mixin.spec.template.spec.withTolerations([
$.core.v1.toleration.new() +
$.core.v1.toleration.withOperator('Exists') +
$.core.v1.toleration.withEffect('NoSchedule'),
]) +
// We want to specify a minReadySeconds on every deamonset, so we get some
// very basic canarying, for instance, with bad arguments.
super.mixin.spec.withMinReadySeconds(10) +
super.mixin.spec.updateStrategy.withType('RollingUpdate'),
},
deployment+: {
new(name, replicas, containers, podLabels={})::
super.new(name, replicas, containers, podLabels) +
// We want to specify a minReadySeconds on every deployment, so we get some
// very basic canarying, for instance, with bad arguments.
super.mixin.spec.withMinReadySeconds(10) +
// We want to add a sensible default for the number of old deployments
// handing around.
super.mixin.spec.withRevisionHistoryLimit(10),
},
statefulSet+: {
new(name, replicas, containers, volumeClaims=[], podLabels={})::
super.new(name, replicas, containers, volumeClaims, podLabels) +
super.mixin.spec.updateStrategy.withType('RollingUpdate'),
},
},
apps+: {
v1beta1+: appsExtentions,
v1+: appsExtentions,
},
}