From 7c049225305208ea175c4df13f4919ba5b561359 Mon Sep 17 00:00:00 2001 From: paulfantom Date: Thu, 4 Nov 2021 12:45:11 +0100 Subject: [PATCH] jsonnet/kube-prometheus/components/specs: introduce CRD specs --- .../components/alertmanager.libsonnet | 6 +- .../components/prometheus.libsonnet | 6 +- .../specs/alertmanager-spec.libsonnet | 52 +++++++++++ .../specs/prometheus-spec.libsonnet | 88 +++++++++++++++++++ 4 files changed, 148 insertions(+), 4 deletions(-) create mode 100644 jsonnet/kube-prometheus/components/specs/alertmanager-spec.libsonnet create mode 100644 jsonnet/kube-prometheus/components/specs/prometheus-spec.libsonnet diff --git a/jsonnet/kube-prometheus/components/alertmanager.libsonnet b/jsonnet/kube-prometheus/components/alertmanager.libsonnet index bb29d26e6b..97df91bee1 100644 --- a/jsonnet/kube-prometheus/components/alertmanager.libsonnet +++ b/jsonnet/kube-prometheus/components/alertmanager.libsonnet @@ -1,4 +1,6 @@ -local defaults = { +local spec = import 'specs/alertmanager-spec.libsonnet'; + +local defaults = spec { local defaults = self, // Convention: Top-level fields related to CRDs are public, other fields are hidden // If there is no CRD for the component, everything is hidden in defaults. @@ -186,7 +188,7 @@ function(params) { alertmanager: am._config.name, }, }, - spec: { + spec: spec { replicas: am._config.replicas, version: am._config.version, image: am._config.image, diff --git a/jsonnet/kube-prometheus/components/prometheus.libsonnet b/jsonnet/kube-prometheus/components/prometheus.libsonnet index 701537d1d6..f275749f26 100644 --- a/jsonnet/kube-prometheus/components/prometheus.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus.libsonnet @@ -1,4 +1,6 @@ -local defaults = { +local spec = import 'specs/prometheus-spec.libsonnet'; + +local defaults = spec { local defaults = self, // Convention: Top-level fields related to CRDs are public, other fields are hidden // If there is no CRD for the component, everything is hidden in defaults. @@ -253,7 +255,7 @@ function(params) { name: p._config.name, labels+: { prometheus: p._config.name }, }, - spec: { + spec: spec { replicas: p._config.replicas, version: p._config.version, image: p._config.image, diff --git a/jsonnet/kube-prometheus/components/specs/alertmanager-spec.libsonnet b/jsonnet/kube-prometheus/components/specs/alertmanager-spec.libsonnet new file mode 100644 index 0000000000..d762ff9cbd --- /dev/null +++ b/jsonnet/kube-prometheus/components/specs/alertmanager-spec.libsonnet @@ -0,0 +1,52 @@ +{ + // Not required fields are hidden + // Deprecated fields are commented out as we don't want to popularize them + // Types mapping: + // Object (or pointer to Object) -> {} + // List (or pointer to List) -> [] + // String (or pointer to String) -> "" + // Everything else -> null + // + // This file can be converted to YAML with jsonnet 0.18.0 + additionalPeers:: [], + affinity:: {}, + alertmanagerConfigNamespaceSelector:: {}, + alertmanagerConfigSelector:: {}, + baseImage:: "", // Deprecated, remove + clusterAdvertiseAddress:: "", + clusterGossipInterval:: "", + clusterPeerTimeout:: "", + clusterPushpullInterval:: "", + configMaps:: [], + configSecret:: "", + containers:: [], + externalUrl:: "", + forceEnableClusterMode:: null, + image:: "", + imagePullSecrets:: [], + initContainers:: [], + listenLocal:: null, + logFormat:: "", + logLevel:: "", + minReadySeconds:: null, + nodeSelector:: {}, + paused:: null, + podMetadata:: {}, + portName:: "", + priorityClassName:: "", + replicas:: null, + resources:: {}, + retention:: "", + routePrefix:: "", + secrets:: [], + securityContext:: {}, + serviceAccountName:: "", + sha:: "", // Deprecated, remove + storage:: {}, + tag:: "", // Deprecated, remove + tolerations:: [], + topologySpreadConstraints:: [], + version:: "", + volumeMounts:: [], + volumes:: [], +} \ No newline at end of file diff --git a/jsonnet/kube-prometheus/components/specs/prometheus-spec.libsonnet b/jsonnet/kube-prometheus/components/specs/prometheus-spec.libsonnet new file mode 100644 index 0000000000..db05404b68 --- /dev/null +++ b/jsonnet/kube-prometheus/components/specs/prometheus-spec.libsonnet @@ -0,0 +1,88 @@ +{ + // Not required fields are hidden + // Deprecated fields are commented out as we don't want to popularize them + // Types mapping: + // Object (or pointer to Object) -> {} + // List (or pointer to List) -> [] + // String (or pointer to String) -> "" + // Everything else -> null + // + // This file can be converted to YAML with jsonnet 0.18.0 + additionalAlertManagerConfigs:: {}, + additionalAlertRelabelConfigs:: {}, + additionalScrapeConfigs:: {}, + affinity:: {}, + alerting:: {}, + allowOverlappingBlocks:: null, + apiserverConfig:: {}, + arbitraryFSAccessThroughSMs:: {}, + baseImage:: "", // Deprecated, remove + configMaps:: [], + containers:: [], + disableCompaction:: null, + enableAdminAPI:: null, + enableFeatures:: [], + enforcedBodySizeLimit:: "", + enforcedLabelLimit:: null, + enforcedLabelNameLengthLimit:: null, + enforcedLabelValueLengthLimit:: null, + enforcedNamespaceLabel:: "", + enforcedSampleLimit:: null, + enforcedTargetLimit:: null, + evaluationInterval:: "", + externalLabels:: {}, + externalUrl:: "", + ignoreNamespaceSelectors:: null, + image:: "", + imagePullSecrets:: [], + initContainers:: [], + listenLocal:: null, + logFormat:: "", + logLevel:: "", + minReadySeconds:: null, + nodeSelector:: {}, + overrideHonorLabels:: null, + overrideHonorTimestamps:: null, + paused:: null, + podMetadata:: {}, + podMonitorNamespaceSelector:: {}, + podMonitorSelector:: {}, + portName:: "", + priorityClassName:: "", + probeNamespaceSelector:: {}, + probeSelector:: {}, + prometheusExternalLabelName:: "", + prometheusRulesExcludedFromEnforce:: {}, + query:: {}, + queryLogFile:: "", + remoteRead:: {}, + remoteWrite:: {}, + replicaExternalLabelName:: "", + replicas:: null, + resources:: {}, + retention:: "", + retentionSize:: "", + routePrefix:: "", + ruleNamespaceSelector:: {}, + ruleSelector:: {}, + rules:: {}, + scrapeInterval:: "", + scrapeTimeout:: "", + secrets:: [], + securityContext:: {}, + serviceAccountName:: "", + serviceMonitorNamespaceSelector:: {}, + serviceMonitorSelector:: {}, + sha:: "", // Deprecated, remove + shards:: null, + storage:: {}, + tag:: "", // Deprecated, remove + thanos:: {}, + tolerations:: [], + topologySpreadConstraints:: [], + version:: "", + volumeMounts:: [], + volumes:: [], + walCompression:: null, + web:: {}, +} \ No newline at end of file