@leverege/build-tools 2.66.1 → 2.66.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/package.json +5 -5
  2. package/src/bash-funcs +11 -0
  3. package/src/helm-audit.mjs +116 -0
  4. package/src/helm-charts/api-server/values-local.yaml +4 -1
  5. package/src/helm-charts/authz-server/values-local.yaml +3 -0
  6. package/src/helm-charts/cnpg-db-pgbench/cluster.yaml.ovh +2 -0
  7. package/src/helm-charts/cnpg-db-tsdb-basic/cluster.yaml.ovh +3 -1
  8. package/src/helm-charts/cnpg-db-tsdb-dense/cluster.yaml.ovh +2 -0
  9. package/src/helm-charts/elasticsearch8/helmup.plugin +1 -1
  10. package/src/helm-charts/emailer/values-local.yaml +6 -3
  11. package/src/helm-charts/geotile-server/values-local.yaml +6 -3
  12. package/src/helm-charts/imagine/values-local.yaml +3 -0
  13. package/src/helm-charts/message-processor/values-local.yaml +1 -1
  14. package/src/helm-charts/messenger/values-local.yaml +4 -1
  15. package/src/helm-charts/overdose/values-local.yaml +3 -0
  16. package/src/helm-charts/prom-operator/prometheus-stack.yaml.ovh +1 -1
  17. package/src/helm-charts/prom-operator/rules/cadvisor-rules.yaml +3 -3
  18. package/src/helm-charts/prom-operator/rules/cnpg-rules.yaml +3 -2
  19. package/src/helm-charts/prom-operator/rules/elasticsearch-rules.yaml +2 -2
  20. package/src/helm-charts/prom-operator/rules/gcp-rules.yaml +2 -2
  21. package/src/helm-charts/prom-operator/rules/kubestate-rules.yaml +2 -2
  22. package/src/helm-charts/prom-operator/rules/po-k8s-selective.yaml +23 -0
  23. package/src/helm-charts/prom-operator/rules/prometheus-rules.yaml +2 -2
  24. package/src/helm-charts/prom-operator/rules/redis-rules.yaml +1 -1
  25. package/src/helm-charts/prom-operator/rules/traefik-rules.yaml +2 -2
  26. package/src/helm-charts/prom-operator/update-rules.sh +32 -0
  27. package/src/helm-charts/pubsub-pulse/values-local.yaml +4 -1
  28. package/src/helm-charts/pusher/values-local.yaml +3 -0
  29. package/src/helm-charts/reason/values-local.yaml +4 -1
  30. package/src/helm-charts/redis/.nohelm +0 -0
  31. package/src/helm-charts/redis/helmup.plugin +2 -2
  32. package/src/helm-charts/resource-server/values-local.yaml +9 -4
  33. package/src/helm-charts/rule-engine/values-local.yaml +3 -0
  34. package/src/helm-charts/traefik/.nohelm +0 -0
  35. package/src/helm-charts/traefik/helmup.plugin +1 -1
  36. package/src/helm-charts/transponder-bq/values-local.yaml +4 -1
  37. package/src/helm-charts/transponder-dh/values-local.yaml +4 -1
  38. package/src/helm-charts/transponder-rt/values-local.yaml +4 -1
  39. package/src/helm-charts/transponder-tsdb/values-local.yaml +4 -1
  40. package/src/helm-charts/velero/helmup.plugin +1 -1
  41. package/src/helm-charts/vin-decoder-server/values-local.yaml +3 -0
  42. package/src/helmup.sh +26 -4
  43. package/src/push-my-chart.mjs +17 -8
  44. package/src/awesome-fetch.mjs +0 -44
  45. package/src/helm-charts/prom-operator/apply-rules +0 -15
  46. package/src/helm-charts/prom-operator/gitignore +0 -2
  47. package/src/helm-charts/prom-operator/grafana-dashboards/cloudnative-pg.json +0 -9190
  48. package/src/helm-charts/prom-operator/grafana-dashboards/redis.json +0 -1513
  49. package/src/helm-charts/prom-operator/grafana-dashboards/stackdriver.json +0 -624
  50. package/src/helm-charts/prom-operator/grafana-dashboards/traefik-op.json +0 -1386
  51. package/src/helm-charts/prom-operator/rules/awesome-base/etcd-exporter.yaml +0 -153
  52. package/src/helm-charts/prom-operator/rules/etcd-rulte.yaml +0 -153
  53. /package/src/helm-charts/{cert-manager → deprecated/cert-manager}/.nohelm +0 -0
  54. /package/src/helm-charts/{cert-manager → deprecated/cert-manager}/cert-manager-local.yaml.ovh +0 -0
  55. /package/src/helm-charts/{cert-manager → deprecated/cert-manager}/gitignore +0 -0
  56. /package/src/helm-charts/{cert-manager → deprecated/cert-manager}/helmup.plugin +0 -0
  57. /package/src/helm-charts/{grafana → deprecated/grafana}/.nohelm +0 -0
  58. /package/src/helm-charts/{grafana → deprecated/grafana}/gitignore +0 -0
  59. /package/src/helm-charts/{grafana → deprecated/grafana}/grafana-local.yaml.ovh +0 -0
  60. /package/src/helm-charts/{grafana → deprecated/grafana}/helmup.plugin +0 -0
  61. /package/src/helm-charts/{postgres → deprecated/postgres}/.nohelm +0 -0
  62. /package/src/helm-charts/{postgres → deprecated/postgres}/helmup.plugin +0 -0
  63. /package/src/helm-charts/{postgres → deprecated/postgres}/postgres-local.yaml +0 -0
  64. /package/src/helm-charts/{prometheus → deprecated/prometheus}/helmup.plugin +0 -0
  65. /package/src/helm-charts/{prometheus → deprecated/prometheus}/values-local.yaml +0 -0
  66. /package/src/helm-charts/{stackdriver-exporter → deprecated/stackdriver-exporter}/helmup.plugin +0 -0
  67. /package/src/helm-charts/{stackdriver-exporter → deprecated/stackdriver-exporter}/values-local.yaml +0 -0
  68. /package/src/helm-charts/{timescale-db → deprecated/timescale-db}/.nohelm +0 -0
  69. /package/src/helm-charts/{timescale-db → deprecated/timescale-db}/helmup.plugin +0 -0
  70. /package/src/helm-charts/{timescale-db → deprecated/timescale-db}/timescale-db-local.yaml +0 -0
  71. /package/src/helm-charts/prom-operator/rules/{postgres-rules.yaml → postgres-rules.yaml.disabled} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leverege/build-tools",
3
- "version": "2.66.1",
3
+ "version": "2.66.3",
4
4
  "description": "A collection of build / support tools for Leverege developers",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -69,10 +69,10 @@
69
69
  "deepmerge": "^4.3.1",
70
70
  "enquirer": "^2.4.1",
71
71
  "execa": "^9.5.2",
72
- "glob": "^11.0.1",
72
+ "glob": "^11.0.2",
73
73
  "handlebars": "^4.7.8",
74
- "ignore": "^7.0.3",
75
- "inquirer": "^12.5.2",
74
+ "ignore": "^7.0.4",
75
+ "inquirer": "^12.6.0",
76
76
  "js-yaml": "^4.1.0",
77
77
  "jsdoc": "^4.0.4",
78
78
  "ms": "^2.1.3",
@@ -83,7 +83,7 @@
83
83
  "semver": "^7.7.1",
84
84
  "simple-git": "^3.27.0",
85
85
  "toml": "^3.0.0",
86
- "zx": "^8.5.2"
86
+ "zx": "^8.5.3"
87
87
  },
88
88
  "devDependencies": {
89
89
  "@leverege/eslint-config-leverege": "^5.0.1",
package/src/bash-funcs CHANGED
@@ -11,6 +11,7 @@
11
11
  DEVNULL="/dev/null"
12
12
  [ ! -z "$BUILD_TOOLS_DEBUG" ] && DEVNULL="/dev/stdout" && printf "\n***BUILD_TOOLS_DEBUG DEVNULL=>$DEVNULL\n"
13
13
 
14
+ GITTOP=`git rev-parse --show-toplevel`
14
15
  DTS="`date +\"%Y%m%d-%H%M%S\"`"
15
16
 
16
17
  # Simple ANSI color coded string generator.
@@ -214,3 +215,13 @@ PLUGIN_NOEXEC
214
215
  sendToSlack "$PLUGIN"
215
216
  return 0
216
217
  }
218
+
219
+ # simple enforcement of necessary tools that need to be installed
220
+ function commandChecker() {
221
+ for cmd in "$@"; do
222
+ command -v "$cmd" &> $DEVNULL
223
+ exitOnError $? "the `color g $cmd` command is required but not installed please install it and try again"
224
+ done
225
+ }
226
+
227
+ commandChecker git helm kubectl service-man
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env node
2
+
3
+ // helm-audit.mjs
4
+ // Node.js version of helm-audit.sh to display deployed chart/image/audit info
5
+
6
+ import { shellCmd, log, debug } from './Utils.mjs'
7
+ import ora from 'ora'
8
+ import pLimit from 'p-limit'
9
+ import chalk from 'chalk'
10
+
11
+ const spinner = ora('Gathering Helm release info...').start()
12
+ const limit = pLimit(5) // limit concurrent shellCmds to avoid API overload
13
+ const OMIT_NAMESPACES = new Set(['estafette'])
14
+
15
+ async function getHelmReleases() {
16
+ const json = await shellCmd('helm list -A -o json')
17
+ return JSON.parse(json).filter(r => !OMIT_NAMESPACES.has(r.namespace))
18
+ }
19
+
20
+ async function getDeployedImageTag(ns, release) {
21
+ try {
22
+ const image = await shellCmd(`kubectl get deployment -n ${ns} -l app.kubernetes.io/instance=${release} -o jsonpath={.items[0].spec.template.spec.containers[0].image}`)
23
+ const tag = image.trim().split(':')[1]
24
+ return tag && tag !== 'not found' ? tag : ''
25
+ } catch {
26
+ return ''
27
+ }
28
+ }
29
+
30
+ async function getChartAppVersion(ns, release) {
31
+ try {
32
+ const metadata = await shellCmd(`helm get metadata ${release} -n ${ns}`)
33
+ const match = metadata.match(/^APP_VERSION:\s*(.*?)\s*$/m)
34
+ return match ? match[1].trim() : '(unknown)'
35
+ } catch {
36
+ return '(unknown)'
37
+ }
38
+ }
39
+
40
+ async function getHelmValue(ns, release, key) {
41
+ try {
42
+ const values = await shellCmd(`helm get values ${release} -n ${ns} -o json`)
43
+ const parsed = JSON.parse(values)
44
+ return parsed.helmup?.[key] || ''
45
+ } catch {
46
+ return ''
47
+ }
48
+ }
49
+
50
+ function normalizeTag(tag) {
51
+ return tag?.replace(/^v/, '').toLowerCase() || ''
52
+ }
53
+
54
+ function formatRow(name, chartVersion, appVersion, imageTag, deployT, culprit) {
55
+ const release = chalk.green(name.slice(0, 25).padEnd(32))
56
+ const chartVer = chalk.cyan(chartVersion.padEnd(18))
57
+ const appVer = chalk.cyan(appVersion.padEnd(18))
58
+ const normApp = normalizeTag(appVersion)
59
+ const normImage = normalizeTag(imageTag)
60
+
61
+ let imageFormatted = imageTag.padEnd(20)
62
+ if (normImage && normApp && normImage === normApp) {
63
+ imageFormatted = chalk.green(imageFormatted)
64
+ } else if (imageTag) {
65
+ imageFormatted = chalk.red(imageFormatted)
66
+ }
67
+
68
+ const deployInfo = deployT ? chalk.gray(`${deployT} by ${culprit || '(unknown)'}`) : ''
69
+ return ` ${release}${chartVer}${appVer}${imageFormatted}${deployInfo}`
70
+ }
71
+
72
+ async function audit() {
73
+ spinner.text = 'Fetching release metadata...'
74
+ const releases = await getHelmReleases()
75
+
76
+ // sort by namespace, then release name
77
+ releases.sort((a, b) => {
78
+ const nsCompare = a.namespace.localeCompare(b.namespace)
79
+ return nsCompare !== 0 ? nsCompare : a.name.localeCompare(b.name)
80
+ })
81
+
82
+ spinner.text = 'Gathering chart, image, and audit metadata...'
83
+
84
+ const rows = await Promise.all(releases.map(({ name, namespace, chart }) => limit(async () => {
85
+ const chartVersion = chart?.split('-').pop() || '(unknown)'
86
+ const [appVersion, imageTag, deployT, culprit] = await Promise.all([
87
+ getChartAppVersion(namespace, name),
88
+ getDeployedImageTag(namespace, name),
89
+ getHelmValue(namespace, name, 'deployT'),
90
+ getHelmValue(namespace, name, 'culprit'),
91
+ ])
92
+ return {
93
+ row: formatRow(name, chartVersion, appVersion, imageTag, deployT, culprit),
94
+ namespace
95
+ }
96
+ })))
97
+
98
+ spinner.stop()
99
+ log(`${'RELEASE'.padEnd(34)}${'CHART VERSION'.padEnd(18)}${'APP VERSION'.padEnd(18)}${'IMAGE TAG'.padEnd(20)}DEPLOY INFO`)
100
+
101
+ let lastNamespace = ''
102
+ for (const { row, namespace } of rows) {
103
+ if (namespace !== lastNamespace) {
104
+ if (lastNamespace !== '') log('')
105
+ log(chalk.bold.green(namespace))
106
+ lastNamespace = namespace
107
+ }
108
+ log(row)
109
+ }
110
+ }
111
+
112
+ audit().catch(err => {
113
+ spinner.stop()
114
+ console.error(err)
115
+ process.exit(1)
116
+ })
@@ -28,10 +28,13 @@ psqlSecurity:
28
28
  TSDB_DENSE_SECRET_NAME: "cnpg-db-tsdb-dense-postgres-pw"
29
29
  TSDB_DENSE_SECRET_KEY: "password"
30
30
 
31
+ serviceMonitor:
32
+ enabled: true
33
+
31
34
  autoscaling:
32
35
  minReplicas: 3
33
36
  maxReplicas: 12
34
37
  maxCPU: 80
35
38
 
36
39
  ingressRoute:
37
- host: OVH:<PROJECT_ID>-imagine-api.OVH:<HOST>.com
40
+ host: ${PROJECT_ID}-imagine-api.${HOST}.com
@@ -11,3 +11,6 @@ config:
11
11
 
12
12
  # CNPG override
13
13
  SQL_HOST: "cnpg-db-psql-stack-rw.cnpg-operands" # vs postgres-postgresql
14
+
15
+ serviceMonitor:
16
+ enabled: true
@@ -14,6 +14,7 @@ spec:
14
14
  postInitTemplateSQL:
15
15
  - CREATE EXTENSION timescaledb;
16
16
  - CREATE EXTENSION jsquery;
17
+ - CREATE EXTENSION pg_stat_statements;
17
18
  database: imagine
18
19
  owner: imagine
19
20
  secret:
@@ -38,6 +39,7 @@ spec:
38
39
  shared_preload_libraries:
39
40
  - timescaledb
40
41
  - jsquery
42
+ - pg_stat_statements
41
43
  parameters:
42
44
  # max_worker_processes: "60"
43
45
  max_worker_processes: "8"
@@ -18,7 +18,8 @@ spec:
18
18
  postInitTemplateSQL:
19
19
  - CREATE EXTENSION timescaledb;
20
20
  - CREATE EXTENSION jsquery;
21
- - CREATE DATABASE imagine
21
+ - CREATE DATABASE pg_stat_statements;
22
+ - CREATE DATABASE imagine;
22
23
  # - CREATE DATABASE app; # for the operator restores
23
24
  # - CREATE ROLE app; # same
24
25
  # owner: imagine
@@ -52,6 +53,7 @@ spec:
52
53
  shared_preload_libraries:
53
54
  - timescaledb
54
55
  - jsquery
56
+ - pg_stat_statements
55
57
  parameters:
56
58
  # max_connections: "100"
57
59
  # max_worker_processes: "60"
@@ -17,6 +17,7 @@ spec:
17
17
  postInitTemplateSQL:
18
18
  - CREATE EXTENSION timescaledb;
19
19
  - CREATE EXTENSION jsquery;
20
+ - CREATE EXTENSION pg_stat_statements;
20
21
  - CREATE DATABASE imagine; # leverege tsdb db
21
22
  # secret:
22
23
  # name: cnpg-db-tsdb-dense-imagine-pw # imagine db pw
@@ -48,6 +49,7 @@ spec:
48
49
  shared_preload_libraries:
49
50
  - timescaledb
50
51
  - jsquery
52
+ - pg_stat_statements
51
53
  parameters:
52
54
  # max_worker_processes: "60"
53
55
  max_worker_processes: "8"
@@ -2,7 +2,7 @@
2
2
  #
3
3
  showInstalling "Elastic Search 8"
4
4
 
5
- [ -z "$ELASTIC_CHART_VERSION" ] && ELASTIC_CHART_VERSION="21.5.0"
5
+ [ -z "$ELASTIC_CHART_VERSION" ] && ELASTIC_CHART_VERSION="21.6.2"
6
6
 
7
7
  OCI_CHART="oci://registry-1.docker.io/bitnamicharts/elasticsearch"
8
8
 
@@ -4,6 +4,9 @@ image:
4
4
  config:
5
5
  LOG_CONFIG: '{"type":"pino","level":"warn"}'
6
6
 
7
- API_UI_URL: "OVH:<PROJECT_ID>.web.app"
8
- MAIL_GUN_DOMAIN: "OVH:<MAIL_GUN_DOMAIN>"
9
- MAIL_GUN_DEFAULT_SENDER: "no-reply@OVH:<MAIL_GUN_DOMAIN>"
7
+ API_UI_URL: "${PROJECT_ID}.web.app"
8
+ MAIL_GUN_DOMAIN: "${MAIL_GUN_DOMAIN}"
9
+ MAIL_GUN_DEFAULT_SENDER: "no-reply@${MAIL_GUN_DOMAIN}"
10
+
11
+ serviceMonitor:
12
+ enabled: true
@@ -2,6 +2,9 @@ image:
2
2
  tag: # v2.3.0
3
3
 
4
4
  config:
5
- UPLOADER_TYPE: "OVH:<BUCKET_TYPE>"
6
- UPLOADER_PROJECT_ID: "OVH:<PROJECT_ID>"
7
- UPLOADER_BUCKET: "OVH:<PROJECT_ID>-geotile-server"
5
+ UPLOADER_TYPE: "${BUCKET_TYPE}"
6
+ UPLOADER_PROJECT_ID: "${PROJECT_ID}"
7
+ UPLOADER_BUCKET: "${PROJECT_ID}-geotile-server"
8
+
9
+ serviceMonitor:
10
+ enabled: true
@@ -3,3 +3,6 @@ mage:
3
3
 
4
4
  config:
5
5
  LOG_CONFIG: '{"type":"pino","level":"warn"}'
6
+
7
+ serviceMonitor:
8
+ enabled: true
@@ -5,4 +5,4 @@ config:
5
5
  LOG_CONFIG: '{"type":"pino","level":"warn"}'
6
6
 
7
7
  serviceMonitor:
8
- enabled: false
8
+ enabled: true
@@ -3,4 +3,7 @@ image:
3
3
 
4
4
  config:
5
5
  LOG_CONFIG: '{"type":"pino","level":"warn"}'
6
- API_UI_URL: "OVH:<PROJECT_ID>.web.app"
6
+ API_UI_URL: "${PROJECT_ID}.web.app"
7
+
8
+ serviceMonitor:
9
+ enabled: true
@@ -17,3 +17,6 @@ autoscaling:
17
17
  minReplicas: 6
18
18
  maxReplicas: 16
19
19
  averageCPU: 75
20
+
21
+ serviceMonitor:
22
+ enabled: true
@@ -10,7 +10,7 @@ defaultRules:
10
10
  etcd: false
11
11
  configReloaders: false
12
12
  general: true
13
- k8s: true
13
+ k8s: false # GPT see po-k8s-selective
14
14
  kubeApiserver: true # GPT Keep an eye on API server availability
15
15
  kubeApiserverAvailability: false
16
16
  kubeApiserverSlos: false
@@ -1,8 +1,8 @@
1
- # https://samber.github.io/awesome-prometheus-alerts/rules#docker-containers
1
+ #https://samber.github.io/awesome-prometheus-alerts/rules#docker-containers
2
2
  apiVersion: monitoring.coreos.com/v1
3
3
  kind: PrometheusRule
4
4
  metadata:
5
- name: google-cadvisor
5
+ name: cadvisor-rules
6
6
  namespace: prometheus
7
7
  spec:
8
8
  groups:
@@ -10,7 +10,7 @@ spec:
10
10
  rules:
11
11
  - alert: ContainerKilled
12
12
  expr: time() - container_last_seen > 60
13
- for: 0m
13
+ for: 5m
14
14
  labels:
15
15
  severity: warning
16
16
  annotations:
@@ -1,10 +1,11 @@
1
+ # https://github.com/cloudnative-pg/cloudnative-pg/blob/main/docs/src/samples/monitoring/prometheusrule.yaml
1
2
  apiVersion: monitoring.coreos.com/v1
2
3
  kind: PrometheusRule
3
4
  metadata:
4
- name: cnpg-default-alerts
5
+ name: cnpg-rules
5
6
  spec:
6
7
  groups:
7
- - name: cnpg-default.rules
8
+ - name: CNPG
8
9
  rules:
9
10
  - alert: LongRunningTransaction
10
11
  annotations:
@@ -2,7 +2,7 @@
2
2
  apiVersion: monitoring.coreos.com/v1
3
3
  kind: PrometheusRule
4
4
  metadata:
5
- name: prometheus-community-elasticsearch-exporter
5
+ name: elasticsearch-rules
6
6
  namespace: prometheus
7
7
  spec:
8
8
  groups:
@@ -174,7 +174,7 @@ spec:
174
174
  VALUE = {{ $value }}
175
175
  LABELS = {{ $labels }}
176
176
  - alert: ElasticsearchHighIndexingLatency
177
- expr: elasticsearch_indices_indexing_index_time_seconds_total / elasticsearch_indices_indexing_index_total > 0.0005
177
+ expr: elasticsearch_indices_indexing_index_time_seconds_total / elasticsearch_indices_indexing_index_total > 0.002 # awesome was 0.0005
178
178
  for: 10m
179
179
  labels:
180
180
  severity: warning
@@ -1,12 +1,12 @@
1
1
  apiVersion: monitoring.coreos.com/v1
2
2
  kind: PrometheusRule
3
3
  metadata:
4
- name: gcp-rules
4
+ name: stackdriver-rules
5
5
  namespace: prometheus
6
6
 
7
7
  spec:
8
8
  groups:
9
- - name: GCP
9
+ - name: Stackdriver
10
10
  rules:
11
11
  - alert: StackdriverFailedScrape
12
12
  expr: absent(stackdriver_pubsub_topic_pubsub_googleapis_com_topic_message_sizes_count) == 1
@@ -2,7 +2,7 @@
2
2
  apiVersion: monitoring.coreos.com/v1
3
3
  kind: PrometheusRule
4
4
  metadata:
5
- name: kubestate-exporter
5
+ name: kubestate-rules
6
6
  namespace: prometheus
7
7
  spec:
8
8
  groups:
@@ -385,7 +385,7 @@ spec:
385
385
  LABELS = {{ $labels }}
386
386
  - alert: KubernetesApiServerLatency
387
387
  expr: histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{verb!~"(?:CONNECT|WATCHLIST|WATCH|PROXY)"} [10m])) WITHOUT (subresource)) > 1
388
- for: 2m
388
+ for: 15m
389
389
  labels:
390
390
  severity: warning
391
391
  annotations:
@@ -0,0 +1,23 @@
1
+ # selected alerts from prom-operator default k8s rules (ChatGPT recommendation)
2
+ apiVersion: monitoring.coreos.com/v1
3
+ kind: PrometheusRule
4
+ metadata:
5
+ name: po-k8s-selective-alerts
6
+ namespace: prometheus
7
+ labels:
8
+ role: alert-rules
9
+ prometheus: kube-prometheus
10
+ spec:
11
+ groups:
12
+ - name: PromOp K8s Selective
13
+ rules:
14
+ - alert: KubePodImagePullBackOff
15
+ expr: kube_pod_container_status_waiting_reason{reason="ImagePullBackOff", namespace!~"kube-system|prometheus"} > 0
16
+ for: 2m
17
+ labels:
18
+ severity: warning
19
+ annotations:
20
+ summary: Pod has image pull back-off ({{ $labels.namespace }}/{{ $labels.pod }})
21
+ description: Pod '{{ $labels.pod }}' in namespace '{{ $labels.namespace }}' has containers in ImagePullBackOff.
22
+ VALUE = {{ $value }}
23
+ LABELS = {{ $labels }}
@@ -2,7 +2,7 @@
2
2
  apiVersion: monitoring.coreos.com/v1
3
3
  kind: PrometheusRule
4
4
  metadata:
5
- name: prometheus-self-monitoring # embedded-exporter
5
+ name: prometheus-rules # embedded-exporter
6
6
  namespace: prometheus
7
7
  spec:
8
8
  groups:
@@ -21,7 +21,7 @@ spec:
21
21
  LABELS = {{ $labels }}
22
22
  - alert: PrometheusTargetMissing
23
23
  expr: up{"namespace"!~"kube-system"} == 0 # awesome was => up == 0
24
- for: 1m # awesome was => 0m
24
+ for: 3m # awesome was => 0m
25
25
  labels:
26
26
  severity: critical
27
27
  annotations:
@@ -2,7 +2,7 @@
2
2
  apiVersion: monitoring.coreos.com/v1
3
3
  kind: PrometheusRule
4
4
  metadata:
5
- name: redis
5
+ name: redis-rules
6
6
  namespace: prometheus
7
7
  spec:
8
8
  groups:
@@ -2,11 +2,11 @@
2
2
  apiVersion: monitoring.coreos.com/v1
3
3
  kind: PrometheusRule
4
4
  metadata:
5
- name: embedded-exporter-v2
5
+ name: traefik-rules
6
6
  namespace: prometheus
7
7
  spec:
8
8
  groups:
9
- - name: EmbeddedExporterV2-rules
9
+ - name: Traefik (awesome) # EmbeddedExporterV2-rules
10
10
  rules:
11
11
  - alert: TraefikServiceDown
12
12
  expr: count(traefik_service_server_up) by (service) == 0
@@ -0,0 +1,32 @@
1
+ #!/bin/bash
2
+ #
3
+ # Load the standard helper functions
4
+ . `build-tools --bashfun`
5
+
6
+ RULES_DIR="$GITTOP/prom-operator/rules"
7
+ [ ! -d "$RULES_DIR" ] && errorExit "Missing rules directory [$RULES_DIR]"
8
+
9
+ case "$1" in
10
+ "apply"|"delete")
11
+ cd $GITTOP
12
+ overwhelm
13
+ for ruleset in $RULES_DIR/*.yaml; do
14
+ shortName=`basename $ruleset`
15
+ printf "\n $1 rules => `color g $shortName`\n"
16
+ kubectl $1 -n prometheus -f $ruleset
17
+ done
18
+ echo "" && kubectl get -A prometheusrules.monitoring.coreos.com
19
+ ;;
20
+
21
+ *)
22
+ cat<<USAGE_HELP
23
+
24
+ Usage: $0 [apply|delete]
25
+
26
+ This will either apply or delete the rules defined in $RULES_DIR
27
+
28
+ USAGE_HELP
29
+
30
+ exit 1
31
+ ;;
32
+ esac
@@ -5,4 +5,7 @@ image:
5
5
  config:
6
6
  pulseDelay: "1000"
7
7
  LOG_CONFIG: '{"type":"pino","level":"warn"}'
8
- IMAGINE_API_URL: "https://OVH:<PROJECT_ID>-imagine-api.OVH:<HOST>.com"
8
+ IMAGINE_API_URL: "https://${PROJECT_ID}-imagine-api.${HOST}.com"
9
+
10
+ serviceMonitor:
11
+ enabled: true
@@ -23,3 +23,6 @@ config:
23
23
  }
24
24
  }
25
25
  }
26
+
27
+ serviceMonitor:
28
+ enabled: true
@@ -4,7 +4,7 @@ image:
4
4
  config:
5
5
  CF_TRANSPORT_CONFIG: '{
6
6
  "type": "pubsub",
7
- "projectId": "OVH:<PROJECT_NAME>" ,
7
+ "projectId": "${PROJECT_NAME}" ,
8
8
  "keyFilename": "/home/node/unused/key.json" ,
9
9
  "publisher": {
10
10
  "batching": {
@@ -12,3 +12,6 @@ config:
12
12
  }
13
13
  }
14
14
  }'
15
+
16
+ serviceMonitor:
17
+ enabled: true
File without changes
@@ -4,8 +4,8 @@ showInstalling "Redis"
4
4
 
5
5
  OCI_CHART="oci://registry-1.docker.io/bitnamicharts/redis"
6
6
 
7
- [ -z "$REDIS_CHART_VERSION" ] && REDIS_CHART_VERSION="20.11.5"
7
+ [ -z "$REDIS_CHART_VERSION" ] && REDIS_CHART_VERSION="20.13.0"
8
8
 
9
9
  helm upgrade --install redis $OCI_CHART \
10
- --values redis/values.yaml \
10
+ --values redis/values-local.yaml \
11
11
  --version $REDIS_CHART_VERSION $HELM_WHAT
@@ -4,14 +4,19 @@
4
4
  # - npm run sequelizeRunMigrations
5
5
  #
6
6
  image:
7
- tag: # v1.7.0
7
+ tag: # v1.14.0
8
8
 
9
9
  config:
10
10
  LOG_CONFIG: '{"type":"pino","level":"warn"}'
11
11
 
12
- UPLOADER_PROJECT_ID: "OVH:<PROJECT_ID>"
13
- UPLOADER_BUCKET: "OVH:<PROJECT_ID>-resource-server"
14
- UPLOADER_LOCATION: "OVH:<GCE_REGION>"
12
+ UPLOADER_PROJECT_ID: "${PROJECT_ID}"
13
+ UPLOADER_BUCKET: "${PROJECT_ID}-resource-server"
14
+ UPLOADER_LOCATION: "${GCE_REGION}"
15
15
 
16
16
  # CNPG override
17
17
  SQL_HOST: "cnpg-db-psql-stack-rw.cnpg-operands" # vs postgres-postgresql
18
+ # SQL_READ_REPLICATION_CONFIG: '[ { "host": "cnpg-db-psql-stack-r.cnpg-operands" } ]'
19
+ # TRANSACTION_MAX_RETRIES: "5"
20
+
21
+ serviceMonitor:
22
+ enabled: true
@@ -6,3 +6,6 @@ config:
6
6
 
7
7
  # CNPG override
8
8
  MODELS_SEQUELIZE_HOST: "cnpg-db-psql-stack-rw.cnpg-operands" # vs postgres-postgresql
9
+
10
+ serviceMonitor:
11
+ enabled: true
File without changes
@@ -20,7 +20,7 @@ addHelmRepo traefik https://helm.traefik.io/traefik
20
20
  [ -z "$TRAEFIK_CHART_VERSION" ] && TRAEFIK_CHART_VERSION="35"
21
21
  helm upgrade --install traefik traefik/traefik \
22
22
  --namespace $TRAEFIK_NAMESPACE --create-namespace \
23
- --values traefik/values.yaml \
23
+ --values traefik/values-local.yaml \
24
24
  --version $TRAEFIK_CHART_VERSION $HELM_WHAT
25
25
 
26
26
  removeHelmRepo traefik
@@ -9,7 +9,7 @@ config:
9
9
 
10
10
  TRANSPORT_CONFIG: '{
11
11
  "type": "pubsub",
12
- "projectId": "OVH:<PROJECT_ID>",
12
+ "projectId": "${PROJECT_ID}",
13
13
  "publisher": {
14
14
  "batching": {
15
15
  "maxMilliseconds": 0,
@@ -27,3 +27,6 @@ config:
27
27
  },
28
28
  "channel": "writer-bq"
29
29
  }'
30
+
31
+ serviceMonitor:
32
+ enabled: true
@@ -19,7 +19,7 @@ config:
19
19
 
20
20
  TRANSPORT_CONFIG: '{
21
21
  "type": "pubsub",
22
- "projectId": "OVH:<PROJECT_NAME>",
22
+ "projectId": "${PROJECT_NAME}",
23
23
  "publisher": {
24
24
  "batching": {
25
25
  "maxMilliseconds": 0,
@@ -60,3 +60,6 @@ resources:
60
60
  requests:
61
61
  cpu: 250m
62
62
  memory: 600Mi
63
+
64
+ serviceMonitor:
65
+ enabled: true
@@ -10,7 +10,7 @@ config:
10
10
  ELASTICSEARCH_DATA_METADATA_ENABLED: "false"
11
11
  TRANSPORT_CONFIG: '{
12
12
  "type": "pubsub",
13
- "projectId": "OVH:<PROJECT_ID>",
13
+ "projectId": "${PROJECT_ID}",
14
14
  "publisher": {
15
15
  "batching": {
16
16
  "maxMilliseconds": 0,
@@ -28,3 +28,6 @@ config:
28
28
  },
29
29
  "channel": "writer-rt"
30
30
  }'
31
+
32
+ serviceMonitor:
33
+ enabled: true