Separate variables into new file. Add persistence options

This commit is contained in:
CarlosEDP 2019-04-08 16:41:23 -03:00
parent d4114769e2
commit 3487ade880
3 changed files with 47 additions and 34 deletions

View File

@ -1,13 +1,15 @@
local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet'; local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
local vars = import 'vars.jsonnet';
{ {
_config+:: { _config+:: {
namespace: 'monitoring', namespace: 'monitoring',
urls+:: { urls+:: {
prom_ingress: 'prometheus.internal.carlosedp.com', prom_ingress: 'prometheus.' + vars.suffixDomain,
alert_ingress: 'alertmanager.internal.carlosedp.com', alert_ingress: 'alertmanager.' + vars.suffixDomain,
grafana_ingress: 'grafana.internal.carlosedp.com', grafana_ingress: 'grafana.' + vars.suffixDomain,
grafana_ingress_external: 'grafana.cloud.carlosedp.com', grafana_ingress_external: 'grafana.' + vars.suffixDomain,
}, },
prometheus+:: { prometheus+:: {
@ -41,13 +43,6 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
grafana+:: { grafana+:: {
config: { config: {
sections: { sections: {
// database: { path: '/data/grafana.db' },
// paths: {
// data: '/var/lib/grafana',
// logs: '/var/lib/grafana/log',
// plugins: '/var/lib/grafana/plugins',
// provisioning: '/etc/grafana/provisioning',
// },
session: { provider: 'memory' }, session: { provider: 'memory' },
'auth.basic': { enabled: false }, 'auth.basic': { enabled: false },
'auth.anonymous': { enabled: false }, 'auth.anonymous': { enabled: false },
@ -56,7 +51,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
host: 'smtp-server.monitoring.svc:25', host: 'smtp-server.monitoring.svc:25',
user: '', user: '',
password: '', password: '',
from_address: 'carlosedp@gmail.com', from_address: vars.grafana.from_address,
from_name: 'Grafana Alert', from_name: 'Grafana Alert',
skip_verify: true, skip_verify: true,
}, },
@ -74,6 +69,8 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
spec+: { spec+: {
retention: '15d', retention: '15d',
externalUrl: 'http://' + $._config.urls.prom_ingress, externalUrl: 'http://' + $._config.urls.prom_ingress,
}
+ ( if vars.enablePersistence['prometheus'] then {
storage: { storage: {
volumeClaimTemplate: volumeClaimTemplate:
pvc.new() + pvc.new() +
@ -82,12 +79,12 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
// Uncomment below to define a StorageClass name // Uncomment below to define a StorageClass name
//+ pvc.mixin.spec.withStorageClassName('nfs-master-ssd'), //+ pvc.mixin.spec.withStorageClassName('nfs-master-ssd'),
}, },
}, } else {}),
}, },
}, },
// Override deployment for Grafana data persistence // Override deployment for Grafana data persistence
grafana+:: { grafana+:: if vars.enablePersistence['grafana'] then {
deployment+: { deployment+: {
spec+: { spec+: {
template+: { template+: {
@ -116,7 +113,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
pvc.mixin.metadata.withName('grafana-storage') + pvc.mixin.metadata.withName('grafana-storage') +
pvc.mixin.spec.withAccessModes('ReadWriteMany') + pvc.mixin.spec.withAccessModes('ReadWriteMany') +
pvc.mixin.spec.resources.withRequests({ storage: '2Gi' }), pvc.mixin.spec.resources.withRequests({ storage: '2Gi' }),
}, } else {},
grafanaDashboards+:: $._config.grafanaDashboards, grafanaDashboards+:: $._config.grafanaDashboards,

View File

@ -1,13 +1,5 @@
local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet'; local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
local vars = import 'vars.jsonnet';
// Enable or disable additional modules
local installModules = {
'arm-exporter': true,
metallb: true,
traefik: true,
'ups-exporter': true,
'elastic-exporter': true,
};
local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') local kp = (import 'kube-prometheus/kube-prometheus.libsonnet')
+ (import 'kube-prometheus/kube-prometheus-anti-affinity.libsonnet') + (import 'kube-prometheus/kube-prometheus-anti-affinity.libsonnet')
@ -16,11 +8,11 @@ local kp = (import 'kube-prometheus/kube-prometheus.libsonnet')
+ (import 'base_operator_stack.jsonnet') + (import 'base_operator_stack.jsonnet')
+ (import 'smtp_server.jsonnet') + (import 'smtp_server.jsonnet')
// Additional Modules // Additional Modules
+ (if installModules['arm-exporter'] then (import 'arm_exporter.jsonnet') else {}) + (if vars.installModules['arm-exporter'] then (import 'arm_exporter.jsonnet') else {})
+ (if installModules.metallb then (import 'metallb.jsonnet') else {}) + (if vars.installModules.metallb then (import 'metallb.jsonnet') else {})
+ (if installModules.traefik then (import 'traefik.jsonnet') else {}) + (if vars.installModules.traefik then (import 'traefik.jsonnet') else {})
+ (if installModules['ups-exporter'] then (import 'ups_exporter.jsonnet') else {}) + (if vars.installModules['ups-exporter'] then (import 'ups_exporter.jsonnet') else {})
+ (if installModules['elastic-exporter'] then (import 'elasticsearch_exporter.jsonnet') else {}) + (if vars.installModules['elastic-exporter'] then (import 'elasticsearch_exporter.jsonnet') else {})
// Load image versions last to override default from modules // Load image versions last to override default from modules
+ (import 'image_sources_versions.jsonnet'); + (import 'image_sources_versions.jsonnet');
@ -35,13 +27,13 @@ local kp = (import 'kube-prometheus/kube-prometheus.libsonnet')
{ ['ingress-' + name]: kp.ingress[name] for name in std.objectFields(kp.ingress) } + { ['ingress-' + name]: kp.ingress[name] for name in std.objectFields(kp.ingress) } +
{ ['smtp-server-' + name]: kp.smtpServer[name] for name in std.objectFields(kp.smtpServer) } + { ['smtp-server-' + name]: kp.smtpServer[name] for name in std.objectFields(kp.smtpServer) } +
// Additional Modules // Additional Modules
(if installModules['arm-exporter'] then (if vars.installModules['arm-exporter'] then
{ ['arm-exporter-' + name]: kp.armExporter[name] for name in std.objectFields(kp.armExporter) } else {}) + { ['arm-exporter-' + name]: kp.armExporter[name] for name in std.objectFields(kp.armExporter) } else {}) +
(if installModules.metallb then (if vars.installModules.metallb then
{ ['metallb-' + name]: kp.metallb[name] for name in std.objectFields(kp.metallb) } else {}) + { ['metallb-' + name]: kp.metallb[name] for name in std.objectFields(kp.metallb) } else {}) +
(if installModules.traefik then (if vars.installModules.traefik then
{ ['traefik-' + name]: kp.traefik[name] for name in std.objectFields(kp.traefik) } else {}) + { ['traefik-' + name]: kp.traefik[name] for name in std.objectFields(kp.traefik) } else {}) +
(if installModules['ups-exporter'] then (if vars.installModules['ups-exporter'] then
{ ['ups-exporter-' + name]: kp.upsExporter[name] for name in std.objectFields(kp.upsExporter) } else {}) + { ['ups-exporter-' + name]: kp.upsExporter[name] for name in std.objectFields(kp.upsExporter) } else {}) +
(if installModules['elastic-exporter'] then (if vars.installModules['elastic-exporter'] then
{ ['elasticexporter-' + name]: kp.elasticExporter[name] for name in std.objectFields(kp.elasticExporter) } else {}) { ['elasticexporter-' + name]: kp.elasticExporter[name] for name in std.objectFields(kp.elasticExporter) } else {})

24
vars.jsonnet Normal file
View File

@ -0,0 +1,24 @@
{
// Enable or disable additional modules
installModules: {
'arm-exporter': false,
metallb: false,
traefik: false,
'ups-exporter': false,
'elastic-exporter': false,
},
// Setting these to false, defaults to emptyDirs
enablePersistence: {
prometheus: false,
grafana: false,
},
// Domain suffix for the ingresses
suffixDomain: "internal.carlosedp.com",
// Grafana from email
grafana: {
from_address: 'carlosedp@gmail.com',
},
}