@leverege/build-tools 2.67.1 → 2.67.2-pedro.2
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.
- package/package.json +2 -2
- package/src/DockerPy.mjs +1 -0
- package/src/docker-to-registry-py.mjs +2 -2
- package/src/helm-charts/pgbouncer/.nohelm +0 -0
- package/src/helm-charts/pgbouncer/helmup.plugin +11 -0
- package/src/helm-charts/pgbouncer/values-local.yaml +56 -0
- package/src/helm-charts/prom-operator/helmup.plugin +1 -1
- package/src/helm-charts/prom-operator/prometheus-stack.yaml.ovh +7 -1
- package/src/helm-charts/prom-operator/rules/elasticsearch-rules.yaml +12 -12
- package/src/helm-charts/prom-operator/rules/kubestate-rules.yaml +12 -12
- package/src/helm-charts/traefik/values-local.yaml +5 -5
- package/src/helmup.sh +27 -0
- package/src/klog.sh +1 -1
- package/.vscode/settings.json +0 -5
- package/src/.swo +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leverege/build-tools",
|
|
3
|
-
"version": "2.67.
|
|
3
|
+
"version": "2.67.2-pedro.2",
|
|
4
4
|
"description": "A collection of build / support tools for Leverege developers",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -92,4 +92,4 @@
|
|
|
92
92
|
"@leverege/eslint-config-leverege": "^5.0.1",
|
|
93
93
|
"npm": "^11.4.1"
|
|
94
94
|
}
|
|
95
|
-
}
|
|
95
|
+
}
|
package/src/DockerPy.mjs
CHANGED
|
@@ -91,8 +91,8 @@ const repoDescr = {
|
|
|
91
91
|
containerName : pyproject.project.name,
|
|
92
92
|
packageVersion : `v${pyproject.project.version}`,
|
|
93
93
|
artifactRegistry : pyproject.leverege.registry || 'us-docker.pkg.dev/leverege-registry/stack',
|
|
94
|
-
registryFolder : `${pyproject.leverege
|
|
95
|
-
imageBase : pyproject.leverege
|
|
94
|
+
registryFolder : `${pyproject.leverege['registry-folder']}/images/${pyproject.project.name}`,
|
|
95
|
+
imageBase : pyproject.leverege['image-base'],
|
|
96
96
|
helmChart : await parseHelmChart(),
|
|
97
97
|
}
|
|
98
98
|
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
showInstalling "PG Bouncer"
|
|
4
|
+
|
|
5
|
+
OCI_CHART="oci://ghcr.io/icoretech/charts/pgbouncer"
|
|
6
|
+
|
|
7
|
+
[ -z "$PGBOUNCER_CHART_VERSION" ] && PGBOUNCER_CHART_VERSION="2.7.0"
|
|
8
|
+
|
|
9
|
+
helm upgrade --install pgbouncer $OCI_CHART \
|
|
10
|
+
--values pgbouncer/values-local.yaml \
|
|
11
|
+
--version $PGBOUNCER_CHART_VERSION $HELM_WHAT
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# pgbouncer.values.yaml - https://artifacthub.io/packages/helm/icoretech/pgbouncer
|
|
2
|
+
|
|
3
|
+
replicaCount: 1
|
|
4
|
+
|
|
5
|
+
config:
|
|
6
|
+
existingAdminSecret: "pgbouncer-admin"
|
|
7
|
+
existingUserlistSecret: "pgbouncer-userlist-secret"
|
|
8
|
+
pgbouncer:
|
|
9
|
+
default_pool_size: "20"
|
|
10
|
+
idle_transaction_timeout: "60"
|
|
11
|
+
ignore_startup_parameters: "extra_float_digits"
|
|
12
|
+
max_client_conn: "1000"
|
|
13
|
+
pool_mode: "transaction" # Options: session | transaction | statement
|
|
14
|
+
query_wait_timeout: "120"
|
|
15
|
+
reserve_pool_size: "5"
|
|
16
|
+
reserve_pool_timeout: "5"
|
|
17
|
+
server_connect_timeout: "15"
|
|
18
|
+
server_idle_timeout: "600"
|
|
19
|
+
server_lifetime: "3600"
|
|
20
|
+
server_login_retry: "15"
|
|
21
|
+
# https://www.pgbouncer.org/config.html#log-settings
|
|
22
|
+
log_connections: "1"
|
|
23
|
+
log_disconnections: "0"
|
|
24
|
+
verbose: "0"
|
|
25
|
+
databases:
|
|
26
|
+
scheduler:
|
|
27
|
+
host: postgres-postgresql
|
|
28
|
+
port: 5432
|
|
29
|
+
dbname: scheduler
|
|
30
|
+
user: postgres
|
|
31
|
+
models:
|
|
32
|
+
host: postgres-postgresql
|
|
33
|
+
port: 5432
|
|
34
|
+
dbname: models
|
|
35
|
+
user: postgres
|
|
36
|
+
|
|
37
|
+
service:
|
|
38
|
+
port: 8432
|
|
39
|
+
|
|
40
|
+
resources:
|
|
41
|
+
requests:
|
|
42
|
+
cpu: 100m
|
|
43
|
+
memory: 128Mi
|
|
44
|
+
limits:
|
|
45
|
+
cpu: 200m
|
|
46
|
+
memory: 256Mi
|
|
47
|
+
|
|
48
|
+
# Optional: Configure a serviceAccount if needed
|
|
49
|
+
serviceAccount:
|
|
50
|
+
create: true
|
|
51
|
+
name: ""
|
|
52
|
+
|
|
53
|
+
# Optional: Add any needed nodeSelectors or tolerations
|
|
54
|
+
nodeSelector: {}
|
|
55
|
+
tolerations: []
|
|
56
|
+
affinity: {}
|
|
@@ -6,7 +6,7 @@ addHelmRepo prometheus-community https://prometheus-community.github.io/helm-cha
|
|
|
6
6
|
NS="--namespace prometheus"
|
|
7
7
|
|
|
8
8
|
showInstalling "The Prometheus Operator (kube-prometheus-stack)"
|
|
9
|
-
[ -z "$PROMETHEUS_STACK_CHART_VERSION" ] && PROMETHEUS_STACK_CHART_VERSION="
|
|
9
|
+
[ -z "$PROMETHEUS_STACK_CHART_VERSION" ] && PROMETHEUS_STACK_CHART_VERSION="74"
|
|
10
10
|
|
|
11
11
|
# https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack
|
|
12
12
|
helm upgrade $NS --install prometheus-stack prometheus-community/kube-prometheus-stack \
|
|
@@ -109,7 +109,13 @@ alertmanager:
|
|
|
109
109
|
operator: "Equal"
|
|
110
110
|
value: "true"
|
|
111
111
|
effect: "NoSchedule"
|
|
112
|
-
|
|
112
|
+
storage:
|
|
113
|
+
volumeClaimTemplate:
|
|
114
|
+
spec:
|
|
115
|
+
accessModes: ["ReadWriteOnce"]
|
|
116
|
+
resources:
|
|
117
|
+
requests:
|
|
118
|
+
storage: 10Gi # or however much you need
|
|
113
119
|
strategy:
|
|
114
120
|
type: Recreate
|
|
115
121
|
|
|
@@ -162,19 +162,19 @@ spec:
|
|
|
162
162
|
Elasticsearch has pending tasks. Cluster works slowly.
|
|
163
163
|
VALUE = {{ $value }}
|
|
164
164
|
LABELS = {{ $labels }}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
165
|
+
# - alert: ElasticsearchNoNewDocuments
|
|
166
|
+
# expr: increase(elasticsearch_indices_indexing_index_total{es_data_node="true"}[10m]) < 1
|
|
167
|
+
# for: 0m
|
|
168
|
+
# labels:
|
|
169
|
+
# severity: warning
|
|
170
|
+
# annotations:
|
|
171
|
+
# summary: Elasticsearch no new documents (instance {{ $labels.instance }})
|
|
172
|
+
# description: |-
|
|
173
|
+
# No new documents for 10 min!
|
|
174
|
+
# VALUE = {{ $value }}
|
|
175
|
+
# LABELS = {{ $labels }}
|
|
176
176
|
- alert: ElasticsearchHighIndexingLatency
|
|
177
|
-
expr: elasticsearch_indices_indexing_index_time_seconds_total / elasticsearch_indices_indexing_index_total > 0.
|
|
177
|
+
expr: elasticsearch_indices_indexing_index_time_seconds_total / elasticsearch_indices_indexing_index_total > 0.010 # awesome was 0.0005
|
|
178
178
|
for: 10m
|
|
179
179
|
labels:
|
|
180
180
|
severity: warning
|
|
@@ -154,7 +154,7 @@ spec:
|
|
|
154
154
|
LABELS = {{ $labels }}
|
|
155
155
|
- alert: KubernetesStatefulsetDown
|
|
156
156
|
expr: kube_statefulset_replicas != kube_statefulset_status_replicas_ready > 0
|
|
157
|
-
for: 1m
|
|
157
|
+
for: 3m # awesome was 1m
|
|
158
158
|
labels:
|
|
159
159
|
severity: critical
|
|
160
160
|
annotations:
|
|
@@ -194,17 +194,17 @@ spec:
|
|
|
194
194
|
summary: Kubernetes HPA scale maximum (instance {{ $labels.instance }})
|
|
195
195
|
description: |-
|
|
196
196
|
HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler }} has hit max replica pods of {{ $value }}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
197
|
+
# - alert: KubernetesHpaUnderutilized
|
|
198
|
+
# expr: max(quantile_over_time(0.5, kube_horizontalpodautoscaler_status_desired_replicas[1d]) == kube_horizontalpodautoscaler_spec_min_replicas) by (horizontalpodautoscaler) > 3
|
|
199
|
+
# for: 0m
|
|
200
|
+
# labels:
|
|
201
|
+
# severity: info
|
|
202
|
+
# annotations:
|
|
203
|
+
# summary: Kubernetes HPA underutilized (instance {{ $labels.instance }})
|
|
204
|
+
# description: |-
|
|
205
|
+
# HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler }} is constantly at minimum replicas for 50% of the time. Potential cost saving here.
|
|
206
|
+
# VALUE = {{ $value }}
|
|
207
|
+
# LABELS = {{ $labels }}
|
|
208
208
|
- alert: KubernetesPodNotHealthy
|
|
209
209
|
expr: sum by (namespace, pod) (kube_pod_status_phase{phase=~"Pending|Unknown|Failed"}) > 0
|
|
210
210
|
for: 15m
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
# reserved static IPs and for creating a secondary LB for UDP traffic.
|
|
3
3
|
# See the *** UDP PORTS *** section below for more info.
|
|
4
4
|
#
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
service:
|
|
6
|
+
spec:
|
|
7
|
+
loadBalancerIP: ${TRAEFIK_IP} # set in overwhelm.yaml
|
|
8
|
+
single: true # true by default, set to false for UDP support
|
|
9
9
|
|
|
10
10
|
deployment:
|
|
11
11
|
replicas: 3
|
|
@@ -28,7 +28,7 @@ resources:
|
|
|
28
28
|
metrics:
|
|
29
29
|
prometheus:
|
|
30
30
|
serviceMonitor:
|
|
31
|
-
enabled:
|
|
31
|
+
enabled: true
|
|
32
32
|
interval: 30s
|
|
33
33
|
namespace: prometheus
|
|
34
34
|
|
package/src/helmup.sh
CHANGED
|
@@ -40,6 +40,7 @@ AUXILIARY=(
|
|
|
40
40
|
fota-server
|
|
41
41
|
geotile-server
|
|
42
42
|
overdose
|
|
43
|
+
pgbouncer,
|
|
43
44
|
pubsub-pulse
|
|
44
45
|
push-notifier
|
|
45
46
|
pusher
|
|
@@ -198,6 +199,27 @@ function setupStackBuckets() {
|
|
|
198
199
|
makeUniformBucketWithCors geotile-server PUBLIC
|
|
199
200
|
}
|
|
200
201
|
|
|
202
|
+
function setupPgbouncerSecret() {
|
|
203
|
+
# pgbouncer uses a k8s secret for the user access list which is in the form
|
|
204
|
+
# of => "user" "password" - this function will create the pgbouncer secret
|
|
205
|
+
# if it does not exist by pulling the password from the PG_PASSWORD secret
|
|
206
|
+
# managed by the Google Secret Manager service.
|
|
207
|
+
USERLIST_SECRET='pgbouncer-userlist-secret'
|
|
208
|
+
kubectl get secret $USERLIST_SECRET &> $DEVNULL
|
|
209
|
+
[[ $? -eq 0 ]] && return # already exists - bail
|
|
210
|
+
|
|
211
|
+
cat<<PGB_SECRET
|
|
212
|
+
|
|
213
|
+
`color y "Creatng $USERLIST_SECRET k8s secret from secret manager PG_PASSWORD secret..."`
|
|
214
|
+
|
|
215
|
+
PGB_SECRET
|
|
216
|
+
DECODED_PSQL_PASSWORD=$(gcloud secrets versions access latest --secret=PG_PASSWORD --project $GCP_PROJECT_ID)
|
|
217
|
+
exitOnError $? "Failed to fetch PG_PASSWORD from the secret manager"
|
|
218
|
+
|
|
219
|
+
kubectl create secret generic $USERLIST_SECRET --from-literal=userlist.txt="\"postgres\" \"$DECODED_PSQL_PASSWORD\""
|
|
220
|
+
exitOnError $? "Failed to create the $USERLIST_SECRET k8s secret"
|
|
221
|
+
}
|
|
222
|
+
|
|
201
223
|
function doPlatormPreInstallChecks() {
|
|
202
224
|
# This is where we handle platform specific things that need to be setup,
|
|
203
225
|
# usuall once, and then promptly forgotten about.
|
|
@@ -1126,6 +1148,11 @@ CATBACKUP
|
|
|
1126
1148
|
setupStackBuckets && exit 0
|
|
1127
1149
|
;;
|
|
1128
1150
|
|
|
1151
|
+
"pgbouncer")
|
|
1152
|
+
setupPgbouncerSecret
|
|
1153
|
+
bootstrapLocalSetup $SERVICE
|
|
1154
|
+
;;
|
|
1155
|
+
|
|
1129
1156
|
"postgres")
|
|
1130
1157
|
bootstrapLocalSetup $SERVICE
|
|
1131
1158
|
;;
|
package/src/klog.sh
CHANGED
package/.vscode/settings.json
DELETED
package/src/.swo
DELETED
|
Binary file
|