@vaharoni/devops 1.2.13 → 1.2.14

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 (323) hide show
  1. package/dist/chunk-N7EX3HJH.js +139 -0
  2. package/dist/chunk-RZ46YYZZ.js +420 -0
  3. package/dist/chunk-WKP7EQNU.js +421 -0
  4. package/dist/devops.d.ts +0 -2
  5. package/dist/devops.js +3235 -91
  6. package/dist/index.d.ts +972 -4
  7. package/dist/index.js +67 -3
  8. package/dist/plugins.d.ts +95 -4
  9. package/dist/plugins.js +20 -6
  10. package/dist/src/target-templates/README.md +1 -0
  11. package/dist/src/target-templates/cluster-resource-options/README.md +2 -0
  12. package/dist/src/target-templates/cluster-resource-options/dns-test/dns-test.yaml +60 -0
  13. package/dist/src/target-templates/cluster-resource-options/milvus/production/milvus-values.yaml +2 -0
  14. package/dist/src/target-templates/cluster-resource-options/milvus/staging/milvus-values.yaml +2 -0
  15. package/dist/src/target-templates/cluster-resource-options/monitoring-ingress/monitoring-ingress.yaml +62 -0
  16. package/dist/src/target-templates/cluster-resource-options/postgres/daily-operator-restart.yaml +54 -0
  17. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/PodDisruptionBudget.yaml +27 -0
  18. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/SGCluster.yaml +47 -0
  19. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/StackGres-alerts.yaml +191 -0
  20. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/06-SGDistributedLogs.yaml +11 -0
  21. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/07-SGObjectStorage.yaml +18 -0
  22. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/08-SGScript.yaml +12 -0
  23. package/dist/src/target-templates/cluster-resource-options/postgres/stackgres-ui-ingress.yaml +35 -0
  24. package/dist/src/target-templates/cluster-resource-options/postgres/staging/cluster/SGCluster.yaml +42 -0
  25. package/dist/src/target-templates/cluster-resource-options/postgres/staging/configurations/07-SGObjectStorage.yaml +18 -0
  26. package/dist/src/target-templates/cluster-resource-options/postgres/staging/configurations/08-SGScript.yaml +12 -0
  27. package/dist/src/target-templates/cluster-resource-options/prefect/production/prefect-values.yaml +14 -0
  28. package/dist/src/target-templates/cluster-resource-options/prefect/staging/prefect-values.yaml +14 -0
  29. package/dist/src/target-templates/cluster-resource-options/redis/production/redis-values.yaml +20 -0
  30. package/dist/src/target-templates/cluster-resource-options/redis/staging/redis-values.yaml +8 -0
  31. package/dist/src/target-templates/infra-variants/README.md +2 -0
  32. package/dist/src/target-templates/infra-variants/digitalocean/.devops/config/constants.yaml +18 -0
  33. package/dist/src/target-templates/infra-variants/digitalocean/.github/workflows/k8s-build.yaml +91 -0
  34. package/dist/src/target-templates/infra-variants/gcloud/.devops/config/constants.yaml +15 -0
  35. package/dist/src/target-templates/infra-variants/gcloud/.devops/manifests/ingress.yaml.hb +22 -0
  36. package/dist/src/target-templates/infra-variants/gcloud/.github/workflows/k8s-build.yaml +95 -0
  37. package/dist/src/target-templates/infra-variants/hetzner/.devops/config/constants.yaml +18 -0
  38. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/abandoned/harbor-values.yaml +30 -0
  39. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/abandoned/hcloud-config.yaml +134 -0
  40. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/cert-manager.yaml +25 -0
  41. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/harbor-cert.yaml +13 -0
  42. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/harbor-values.yaml +76 -0
  43. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/hcloud-config.yaml +113 -0
  44. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/ingress-nginx-annotations.yaml +49 -0
  45. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/ingress-nginx-configmap.yaml +8 -0
  46. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/retain-storage-class.yaml +8 -0
  47. package/dist/src/target-templates/infra-variants/hetzner/.github/workflows/k8s-build.yaml +93 -0
  48. package/dist/src/target-templates/lang-variants-common/README.md +4 -0
  49. package/dist/src/target-templates/lang-variants-common/python/.cursor/rules/monorepo-python.mdc +56 -0
  50. package/dist/src/target-templates/lang-variants-common/python/.devops/config/images.yaml +89 -0
  51. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services/python-exec.sh +8 -0
  52. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services/python-run.sh +8 -0
  53. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services.Dockerfile +29 -0
  54. package/dist/src/target-templates/lang-variants-common/python/.devops/manifests/_index.yaml +21 -0
  55. package/dist/src/target-templates/lang-variants-common/python/.devops/manifests/prefect.yaml.hb +63 -0
  56. package/dist/src/target-templates/lang-variants-common/python/applications/example-data-pipeline/pyproject.toml +14 -0
  57. package/dist/src/target-templates/lang-variants-common/python/applications/example-data-pipeline/src/example_data_pipeline/main.py +38 -0
  58. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/pyproject.toml +20 -0
  59. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/__init__.py +0 -0
  60. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/main.py +13 -0
  61. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/scripts.py +17 -0
  62. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/tests/__init__.py +0 -0
  63. package/dist/src/target-templates/lang-variants-common/python/devopspy +3 -0
  64. package/dist/src/target-templates/lang-variants-common/python/libs/example-python-lib/pyproject.toml +11 -0
  65. package/dist/src/target-templates/lang-variants-common/python/libs/example-python-lib/src/example_python_lib/__init__.py +2 -0
  66. package/dist/src/target-templates/lang-variants-common/python/pyproject.toml +16 -0
  67. package/dist/src/target-templates/lang-variants-common/typescript/.cursor/rules/monorepo-typescript.mdc +51 -0
  68. package/dist/src/target-templates/lang-variants-common/typescript/.devops/config/images.yaml +69 -0
  69. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/cloudrun.Dockerfile +31 -0
  70. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/common/docker-common.sh +23 -0
  71. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services/node-exec.sh +8 -0
  72. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services/node-run.sh +8 -0
  73. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services.Dockerfile +31 -0
  74. package/dist/src/target-templates/lang-variants-common/typescript/.devops/env.example.yaml +23 -0
  75. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/_index.yaml +19 -0
  76. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/cron-jobs.yaml.hb +56 -0
  77. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/db-migrate-job.yaml.hb +43 -0
  78. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-debug.yaml.hb +42 -0
  79. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-process.yaml.hb +48 -0
  80. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-web.yaml.hb +54 -0
  81. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/ingress.yaml.hb +21 -0
  82. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/service.yaml.hb +15 -0
  83. package/dist/src/target-templates/lang-variants-common/typescript/.envrc +5 -0
  84. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/build-image@v1/action.yaml +81 -0
  85. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-digital-ocean@v1/action.yaml +29 -0
  86. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-gke@v1/action.yaml +43 -0
  87. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-hetzner@v1/action.yaml +31 -0
  88. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/db-migrate@v1/action.yaml +23 -0
  89. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/deploy-image-cloudrun@v1/action.yaml +71 -0
  90. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/deploy-image-k8s@v1/action.yaml +37 -0
  91. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/setup-prereq@v1/action.yaml +24 -0
  92. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/index.ts +30 -0
  93. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/package.json +26 -0
  94. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/tsconfig.json +3 -0
  95. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/README.md +68 -0
  96. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/index.ts +1 -0
  97. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/package.json +30 -0
  98. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/tsconfig.json +3 -0
  99. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.development +1 -0
  100. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.global +4 -0
  101. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.test +1 -0
  102. package/dist/src/target-templates/lang-variants-common/typescript/devops +3 -0
  103. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/index.ts +3 -0
  104. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/package.json +12 -0
  105. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/tsconfig.json +3 -0
  106. package/dist/src/target-templates/lang-variants-common/typescript/tmp/.gitkeep +0 -0
  107. package/dist/src/target-templates/lang-variants-common/typescript/tsconfig.json +27 -0
  108. package/dist/src/target-templates/lang-variants-prisma/README.md +3 -0
  109. package/dist/src/target-templates/lang-variants-prisma/python/.cursor/rules/prisma-python.mdc +55 -0
  110. package/dist/src/target-templates/lang-variants-prisma/python/.cursor/rules/testing-python.mdc +89 -0
  111. package/dist/src/target-templates/lang-variants-prisma/python/db/db/__init__.py +0 -0
  112. package/dist/src/target-templates/lang-variants-prisma/python/db/db/db_client_test.py +46 -0
  113. package/dist/src/target-templates/lang-variants-prisma/python/db/pyproject.toml +14 -0
  114. package/dist/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/prisma-typescript.mdc +54 -0
  115. package/dist/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/testing-typescript.mdc +103 -0
  116. package/dist/src/target-templates/lang-variants-prisma/typescript/db/db-client-test.ts +142 -0
  117. package/dist/src/target-templates/lang-variants-prisma/typescript/db/db-client.ts +19 -0
  118. package/dist/src/target-templates/lang-variants-prisma/typescript/db/env.yaml +4 -0
  119. package/dist/src/target-templates/lang-variants-prisma/typescript/db/package.json +17 -0
  120. package/dist/src/target-templates/lang-variants-prisma/typescript/db/prisma/schema.prisma +24 -0
  121. package/dist/src/target-templates/lang-variants-prisma/typescript/db/prisma-setup-vitest.ts +27 -0
  122. package/dist/src/target-templates/lang-variants-prisma/typescript/db/tsconfig.json +3 -0
  123. package/dist/src/target-templates/lang-variants-prisma/typescript/dml/package.json +7 -0
  124. package/dist/src/target-templates/lang-variants-prisma/typescript/dml/tsconfig.json +3 -0
  125. package/package.json +3 -2
  126. package/src/cli/core/exec.ts +2 -4
  127. package/src/cli/core/run.ts +2 -4
  128. package/src/cli/extensions/prisma.ts +2 -4
  129. package/src/libs/init-generator.ts +2 -4
  130. package/src/pkg-root.ts +14 -0
  131. package/src/plugins.ts +2 -4
  132. package/dist/app-support/crypto/aes.d.ts +0 -15
  133. package/dist/app-support/crypto/aes.d.ts.map +0 -1
  134. package/dist/app-support/crypto/aes.js +0 -56
  135. package/dist/app-support/crypto/aes.spec.d.ts +0 -2
  136. package/dist/app-support/crypto/aes.spec.d.ts.map +0 -1
  137. package/dist/app-support/crypto/aes.spec.js +0 -58
  138. package/dist/app-support/crypto/index.d.ts +0 -16
  139. package/dist/app-support/crypto/index.d.ts.map +0 -1
  140. package/dist/app-support/crypto/index.js +0 -31
  141. package/dist/app-support/crypto/internal-token.d.ts +0 -20
  142. package/dist/app-support/crypto/internal-token.d.ts.map +0 -1
  143. package/dist/app-support/crypto/internal-token.js +0 -42
  144. package/dist/app-support/crypto/internal-token.spec.d.ts +0 -2
  145. package/dist/app-support/crypto/internal-token.spec.d.ts.map +0 -1
  146. package/dist/app-support/crypto/internal-token.spec.js +0 -45
  147. package/dist/app-support/crypto/secret.d.ts +0 -3
  148. package/dist/app-support/crypto/secret.d.ts.map +0 -1
  149. package/dist/app-support/crypto/secret.js +0 -12
  150. package/dist/app-support/crypto/secret.spec.d.ts +0 -2
  151. package/dist/app-support/crypto/secret.spec.d.ts.map +0 -1
  152. package/dist/app-support/crypto/secret.spec.js +0 -15
  153. package/dist/app-support/discovery/dev-discovery-loader.d.ts +0 -2
  154. package/dist/app-support/discovery/dev-discovery-loader.d.ts.map +0 -1
  155. package/dist/app-support/discovery/dev-discovery-loader.js +0 -30
  156. package/dist/app-support/discovery/service-endpoint.d.ts +0 -2
  157. package/dist/app-support/discovery/service-endpoint.d.ts.map +0 -1
  158. package/dist/app-support/discovery/service-endpoint.js +0 -10
  159. package/dist/cli/common.d.ts +0 -89
  160. package/dist/cli/common.d.ts.map +0 -1
  161. package/dist/cli/common.js +0 -246
  162. package/dist/cli/common.spec.d.ts +0 -2
  163. package/dist/cli/common.spec.d.ts.map +0 -1
  164. package/dist/cli/common.spec.js +0 -64
  165. package/dist/cli/core/affected.d.ts +0 -9
  166. package/dist/cli/core/affected.d.ts.map +0 -1
  167. package/dist/cli/core/affected.js +0 -101
  168. package/dist/cli/core/cloudrun.d.ts +0 -9
  169. package/dist/cli/core/cloudrun.d.ts.map +0 -1
  170. package/dist/cli/core/cloudrun.js +0 -119
  171. package/dist/cli/core/console.d.ts +0 -10
  172. package/dist/cli/core/console.d.ts.map +0 -1
  173. package/dist/cli/core/console.js +0 -50
  174. package/dist/cli/core/constant.d.ts +0 -9
  175. package/dist/cli/core/constant.d.ts.map +0 -1
  176. package/dist/cli/core/constant.js +0 -20
  177. package/dist/cli/core/env.d.ts +0 -9
  178. package/dist/cli/core/env.d.ts.map +0 -1
  179. package/dist/cli/core/env.js +0 -65
  180. package/dist/cli/core/exec.d.ts +0 -9
  181. package/dist/cli/core/exec.d.ts.map +0 -1
  182. package/dist/cli/core/exec.js +0 -48
  183. package/dist/cli/core/image.d.ts +0 -9
  184. package/dist/cli/core/image.d.ts.map +0 -1
  185. package/dist/cli/core/image.js +0 -153
  186. package/dist/cli/core/index.d.ts +0 -16
  187. package/dist/cli/core/index.d.ts.map +0 -1
  188. package/dist/cli/core/index.js +0 -15
  189. package/dist/cli/core/init.d.ts +0 -9
  190. package/dist/cli/core/init.d.ts.map +0 -1
  191. package/dist/cli/core/init.js +0 -219
  192. package/dist/cli/core/job.d.ts +0 -9
  193. package/dist/cli/core/job.d.ts.map +0 -1
  194. package/dist/cli/core/job.js +0 -65
  195. package/dist/cli/core/namespace.d.ts +0 -9
  196. package/dist/cli/core/namespace.d.ts.map +0 -1
  197. package/dist/cli/core/namespace.js +0 -67
  198. package/dist/cli/core/prep-build.d.ts +0 -10
  199. package/dist/cli/core/prep-build.d.ts.map +0 -1
  200. package/dist/cli/core/prep-build.js +0 -109
  201. package/dist/cli/core/registry.d.ts +0 -9
  202. package/dist/cli/core/registry.d.ts.map +0 -1
  203. package/dist/cli/core/registry.js +0 -66
  204. package/dist/cli/core/run-many.d.ts +0 -10
  205. package/dist/cli/core/run-many.d.ts.map +0 -1
  206. package/dist/cli/core/run-many.js +0 -48
  207. package/dist/cli/core/run.d.ts +0 -9
  208. package/dist/cli/core/run.d.ts.map +0 -1
  209. package/dist/cli/core/run.js +0 -35
  210. package/dist/cli/core/test.d.ts +0 -9
  211. package/dist/cli/core/test.d.ts.map +0 -1
  212. package/dist/cli/core/test.js +0 -26
  213. package/dist/cli/extensions/dml.d.ts +0 -9
  214. package/dist/cli/extensions/dml.d.ts.map +0 -1
  215. package/dist/cli/extensions/dml.js +0 -114
  216. package/dist/cli/extensions/index.d.ts +0 -9
  217. package/dist/cli/extensions/index.d.ts.map +0 -1
  218. package/dist/cli/extensions/index.js +0 -8
  219. package/dist/cli/extensions/internal-curl.d.ts +0 -10
  220. package/dist/cli/extensions/internal-curl.d.ts.map +0 -1
  221. package/dist/cli/extensions/internal-curl.js +0 -41
  222. package/dist/cli/extensions/jwt.d.ts +0 -9
  223. package/dist/cli/extensions/jwt.d.ts.map +0 -1
  224. package/dist/cli/extensions/jwt.js +0 -25
  225. package/dist/cli/extensions/prisma.d.ts +0 -9
  226. package/dist/cli/extensions/prisma.d.ts.map +0 -1
  227. package/dist/cli/extensions/prisma.js +0 -23
  228. package/dist/cli/extensions/redis-bitnami.d.ts +0 -11
  229. package/dist/cli/extensions/redis-bitnami.d.ts.map +0 -1
  230. package/dist/cli/extensions/redis-bitnami.js +0 -74
  231. package/dist/cli/extensions/redis-ha.d.ts +0 -11
  232. package/dist/cli/extensions/redis-ha.d.ts.map +0 -1
  233. package/dist/cli/extensions/redis-ha.js +0 -51
  234. package/dist/cli/extensions/stackgres.d.ts +0 -10
  235. package/dist/cli/extensions/stackgres.d.ts.map +0 -1
  236. package/dist/cli/extensions/stackgres.js +0 -117
  237. package/dist/cli/extensions/template.d.ts +0 -9
  238. package/dist/cli/extensions/template.d.ts.map +0 -1
  239. package/dist/cli/extensions/template.js +0 -121
  240. package/dist/devops.d.ts.map +0 -1
  241. package/dist/index.d.ts.map +0 -1
  242. package/dist/libs/affected-entities.d.ts +0 -15
  243. package/dist/libs/affected-entities.d.ts.map +0 -1
  244. package/dist/libs/affected-entities.js +0 -52
  245. package/dist/libs/cloudrun-helpers.d.ts +0 -16
  246. package/dist/libs/cloudrun-helpers.d.ts.map +0 -1
  247. package/dist/libs/cloudrun-helpers.js +0 -81
  248. package/dist/libs/config.d.ts +0 -7
  249. package/dist/libs/config.d.ts.map +0 -1
  250. package/dist/libs/config.js +0 -102
  251. package/dist/libs/digital-ocean/container-reg.d.ts +0 -6
  252. package/dist/libs/digital-ocean/container-reg.d.ts.map +0 -1
  253. package/dist/libs/digital-ocean/container-reg.js +0 -74
  254. package/dist/libs/discovery/dependencies.d.ts +0 -19
  255. package/dist/libs/discovery/dependencies.d.ts.map +0 -1
  256. package/dist/libs/discovery/dependencies.js +0 -62
  257. package/dist/libs/discovery/dependencies.spec.d.ts +0 -2
  258. package/dist/libs/discovery/dependencies.spec.d.ts.map +0 -1
  259. package/dist/libs/discovery/dependencies.spec.js +0 -21
  260. package/dist/libs/discovery/images.d.ts +0 -5
  261. package/dist/libs/discovery/images.d.ts.map +0 -1
  262. package/dist/libs/discovery/images.js +0 -45
  263. package/dist/libs/discovery/index.d.ts +0 -6
  264. package/dist/libs/discovery/index.d.ts.map +0 -1
  265. package/dist/libs/discovery/index.js +0 -67
  266. package/dist/libs/discovery/process-common.d.ts +0 -25
  267. package/dist/libs/discovery/process-common.d.ts.map +0 -1
  268. package/dist/libs/discovery/process-common.js +0 -40
  269. package/dist/libs/discovery/process-package-json.d.ts +0 -3
  270. package/dist/libs/discovery/process-package-json.d.ts.map +0 -1
  271. package/dist/libs/discovery/process-package-json.js +0 -40
  272. package/dist/libs/discovery/process-pyproject-toml.d.ts +0 -3
  273. package/dist/libs/discovery/process-pyproject-toml.d.ts.map +0 -1
  274. package/dist/libs/discovery/process-pyproject-toml.js +0 -49
  275. package/dist/libs/git-helpers.d.ts +0 -8
  276. package/dist/libs/git-helpers.d.ts.map +0 -1
  277. package/dist/libs/git-helpers.js +0 -20
  278. package/dist/libs/hetzner/reg-secret.d.ts +0 -3
  279. package/dist/libs/hetzner/reg-secret.d.ts.map +0 -1
  280. package/dist/libs/hetzner/reg-secret.js +0 -39
  281. package/dist/libs/init-generator.d.ts +0 -41
  282. package/dist/libs/init-generator.d.ts.map +0 -1
  283. package/dist/libs/init-generator.js +0 -123
  284. package/dist/libs/k8s-constants.d.ts +0 -13
  285. package/dist/libs/k8s-constants.d.ts.map +0 -1
  286. package/dist/libs/k8s-constants.js +0 -91
  287. package/dist/libs/k8s-db.d.ts +0 -18
  288. package/dist/libs/k8s-db.d.ts.map +0 -1
  289. package/dist/libs/k8s-db.js +0 -73
  290. package/dist/libs/k8s-generate.d.ts +0 -17
  291. package/dist/libs/k8s-generate.d.ts.map +0 -1
  292. package/dist/libs/k8s-generate.js +0 -193
  293. package/dist/libs/k8s-helpers.d.ts +0 -11
  294. package/dist/libs/k8s-helpers.d.ts.map +0 -1
  295. package/dist/libs/k8s-helpers.js +0 -42
  296. package/dist/libs/k8s-image-config.d.ts +0 -8
  297. package/dist/libs/k8s-image-config.d.ts.map +0 -1
  298. package/dist/libs/k8s-image-config.js +0 -113
  299. package/dist/libs/k8s-job-waiter.d.ts +0 -8
  300. package/dist/libs/k8s-job-waiter.d.ts.map +0 -1
  301. package/dist/libs/k8s-job-waiter.js +0 -84
  302. package/dist/libs/k8s-namespace.d.ts +0 -7
  303. package/dist/libs/k8s-namespace.d.ts.map +0 -1
  304. package/dist/libs/k8s-namespace.js +0 -27
  305. package/dist/libs/k8s-redis-bitnami.d.ts +0 -6
  306. package/dist/libs/k8s-redis-bitnami.d.ts.map +0 -1
  307. package/dist/libs/k8s-redis-bitnami.js +0 -31
  308. package/dist/libs/k8s-redis-ha.d.ts +0 -3
  309. package/dist/libs/k8s-redis-ha.d.ts.map +0 -1
  310. package/dist/libs/k8s-redis-ha.js +0 -15
  311. package/dist/libs/k8s-secrets-manager.d.ts +0 -6
  312. package/dist/libs/k8s-secrets-manager.d.ts.map +0 -1
  313. package/dist/libs/k8s-secrets-manager.js +0 -64
  314. package/dist/libs/validate-env.d.ts +0 -56
  315. package/dist/libs/validate-env.d.ts.map +0 -1
  316. package/dist/libs/validate-env.js +0 -214
  317. package/dist/libs/validate-env.spec.d.ts +0 -2
  318. package/dist/libs/validate-env.spec.d.ts.map +0 -1
  319. package/dist/libs/validate-env.spec.js +0 -168
  320. package/dist/plugins.d.ts.map +0 -1
  321. package/dist/types/index.d.ts +0 -939
  322. package/dist/types/index.d.ts.map +0 -1
  323. package/dist/types/index.js +0 -82
package/dist/index.js CHANGED
@@ -1,3 +1,67 @@
1
- export * from "./types/index";
2
- export * from "./app-support/discovery/service-endpoint";
3
- export * from "./app-support/crypto";
1
+ import {
2
+ InternalToken,
3
+ decryptAes256Gcm,
4
+ encryptAes256Gcm
5
+ } from "./chunk-N7EX3HJH.js";
6
+ import {
7
+ SUPPORTED_LANGUAGES,
8
+ constFileSchema,
9
+ imageFileSchema,
10
+ packageFileNodeSchema,
11
+ packageFilePythonSchema,
12
+ workspaces
13
+ } from "./chunk-RZ46YYZZ.js";
14
+
15
+ // src/app-support/discovery/dev-discovery-loader.ts
16
+ var _portLookupByServiceName = null;
17
+ function getPortLookup() {
18
+ if (_portLookupByServiceName) return _portLookupByServiceName;
19
+ if (process.env["IS_KUBERNETES"] === "true") {
20
+ throw new Error(
21
+ "getPortLookup() should only be used in local development. In production, the service name is sufficient."
22
+ );
23
+ }
24
+ _portLookupByServiceName = {};
25
+ Object.values(workspaces()).forEach((workspace) => {
26
+ workspace.packageDataEntries.forEach((pkg) => {
27
+ const serviceName = pkg.deployment?.service_name;
28
+ const port = pkg.deployment?.port;
29
+ if (!serviceName || !port) return;
30
+ const existing = _portLookupByServiceName[serviceName];
31
+ if (!existing) {
32
+ _portLookupByServiceName[serviceName] = port;
33
+ } else if (existing !== port) {
34
+ console.error(
35
+ `Service name ${serviceName} has conflicting ports: ${existing} and ${port}`
36
+ );
37
+ process.exit(1);
38
+ }
39
+ });
40
+ });
41
+ return _portLookupByServiceName;
42
+ }
43
+ function getPortForServiceName(serviceName) {
44
+ return getPortLookup()[serviceName];
45
+ }
46
+
47
+ // src/app-support/discovery/service-endpoint.ts
48
+ function getServiceEndpoint(serviceName) {
49
+ if (process.env["IS_KUBERNETES"] === "true") {
50
+ return `http://${serviceName}`;
51
+ }
52
+ const servicePort = getPortForServiceName(serviceName);
53
+ if (!servicePort)
54
+ throw new Error(`Port not found for service ${serviceName}`);
55
+ return `http://127.0.0.1:${servicePort}`;
56
+ }
57
+ export {
58
+ InternalToken,
59
+ SUPPORTED_LANGUAGES,
60
+ constFileSchema,
61
+ decryptAes256Gcm,
62
+ encryptAes256Gcm,
63
+ getServiceEndpoint,
64
+ imageFileSchema,
65
+ packageFileNodeSchema,
66
+ packageFilePythonSchema
67
+ };
package/dist/plugins.d.ts CHANGED
@@ -1,4 +1,95 @@
1
- export { CommandExecutor, CLICommandParser, printUsageAndExit, StrongParams } from "./cli/common";
2
- export { kubectlCommand } from "./libs/k8s-helpers";
3
- export declare const execShPath: string;
4
- //# sourceMappingURL=plugins.d.ts.map
1
+ type ParsedArgs<TBoolKeys extends readonly string[], TParamKeys extends readonly string[]> = {
2
+ args: string[];
3
+ argsStr: string;
4
+ options: Partial<Record<TBoolKeys[number], true>> & Partial<Record<TParamKeys[number], string>>;
5
+ passthrough?: string[];
6
+ };
7
+ declare class CLICommandParser {
8
+ command: string;
9
+ args: string[];
10
+ env: string;
11
+ envForced: boolean;
12
+ help: boolean;
13
+ skipEnvCheck: boolean;
14
+ constructor(cmdArray: string[]);
15
+ executorFromEnv(commandStr: string, options?: Omit<CommandExecutorOptions, "env">): CommandExecutor;
16
+ parseOptions<const TBoolKeys extends readonly string[], const TParamKeys extends readonly string[]>({ params, booleans, passthroughArgs, }?: {
17
+ /** Param is used like so: --param value */
18
+ params?: TParamKeys;
19
+ /** Boolean flag is used like so: --flag */
20
+ booleans?: TBoolKeys;
21
+ /** Pass through args are used like so: -- arg1 arg2 */
22
+ passthroughArgs?: boolean;
23
+ }): ParsedArgs<TBoolKeys, TParamKeys>;
24
+ _validateEnv(env: string): boolean;
25
+ _separateOptions<const TBoolKeys extends readonly string[], const TParamKeys extends readonly string[]>(args: string[], { params, booleans, passthroughArgs, }?: {
26
+ params?: TParamKeys;
27
+ booleans?: TBoolKeys;
28
+ passthroughArgs?: boolean;
29
+ }): ParsedArgs<TBoolKeys, TParamKeys>;
30
+ }
31
+ type CommandExecutorOptions = {
32
+ env?: string;
33
+ quiet?: boolean;
34
+ checkEnvYaml?: boolean;
35
+ redactedCommand?: string;
36
+ };
37
+ declare class CommandExecutor {
38
+ commandStr: string;
39
+ env?: string;
40
+ quiet: boolean;
41
+ redactedCommand?: string;
42
+ checkEnvYaml: boolean;
43
+ constructor(commandStr: string, { env, quiet, redactedCommand, checkEnvYaml, }?: CommandExecutorOptions);
44
+ /** Non-interactive use only. stdout is returned. */
45
+ exec(options?: {
46
+ onlyStatusCode?: false;
47
+ asObject?: false;
48
+ env?: object;
49
+ }): string;
50
+ exec(options: {
51
+ onlyStatusCode?: false;
52
+ asObject: true;
53
+ env?: object;
54
+ }): {
55
+ statusCode: number;
56
+ stdout: string;
57
+ stderr: string;
58
+ };
59
+ exec(options: {
60
+ onlyStatusCode: true;
61
+ asObject?: boolean;
62
+ env?: object;
63
+ }): number;
64
+ /** Should be used for CLI commands intended to be used locally. Provides interactivity. Unlike exec(), stdout is not returned. */
65
+ spawn({ env, pipeStdoutTo }?: {
66
+ env?: object;
67
+ pipeStdoutTo?: "stderr";
68
+ }): Promise<unknown>;
69
+ _prepareFullCommand(): string;
70
+ _getProcessEnv(envOverride?: {}): {
71
+ MONOREPO_ENV: string | undefined;
72
+ MONOREPO_ROOT: string;
73
+ TZ?: string;
74
+ NODE_ENV?: string;
75
+ };
76
+ _envInjectorPrefix(): string;
77
+ _checkEnvYamlFiles(): void;
78
+ }
79
+ declare function printUsageAndExit(text: string): never;
80
+ declare class StrongParams {
81
+ private usage;
82
+ private args;
83
+ constructor(usage: string, args: Record<string, string | undefined>);
84
+ required(key: string): string;
85
+ optional(key: string): string | undefined;
86
+ }
87
+
88
+ declare function kubectlCommand(cmd: string, opts?: {
89
+ monorepoEnv?: string;
90
+ namespace?: string;
91
+ }): string;
92
+
93
+ declare const execShPath: string;
94
+
95
+ export { CLICommandParser, CommandExecutor, StrongParams, execShPath, kubectlCommand, printUsageAndExit };
package/dist/plugins.js CHANGED
@@ -1,7 +1,21 @@
1
- export { CommandExecutor, CLICommandParser, printUsageAndExit, StrongParams } from "./cli/common";
2
- export { kubectlCommand } from "./libs/k8s-helpers";
3
- import url from "url";
1
+ import {
2
+ CLICommandParser,
3
+ CommandExecutor,
4
+ StrongParams,
5
+ kubectlCommand,
6
+ pkgRoot,
7
+ printUsageAndExit
8
+ } from "./chunk-WKP7EQNU.js";
9
+ import "./chunk-RZ46YYZZ.js";
10
+
11
+ // src/plugins.ts
4
12
  import path from "path";
5
- const __file__ = url.fileURLToPath(import.meta.url);
6
- const __cli__ = path.join(path.dirname(__file__), "cli");
7
- export const execShPath = path.join(__cli__, "exec.sh");
13
+ var execShPath = path.join(pkgRoot, "cli/exec.sh");
14
+ export {
15
+ CLICommandParser,
16
+ CommandExecutor,
17
+ StrongParams,
18
+ execShPath,
19
+ kubectlCommand,
20
+ printUsageAndExit
21
+ };
@@ -0,0 +1 @@
1
+ This folder contains the templates that are copied to the target project's folder based on answers the user provides during `./devops init`. Some of these answers may change the content of files, which is done by substituting variables prefixed by `$`. To avoid potential issues, such substitution is not pursued globally for all files in this folder. Files requiring substitution must be referenced by name in `./devops init` code.
@@ -0,0 +1,2 @@
1
+ During `./devops init`, the user is asked to select options for generating manifests of various cluster resources.
2
+ The files of each selected option `$OPTION` is copied under `.devops/infra/$OPTION`.
@@ -0,0 +1,60 @@
1
+ apiVersion: v1
2
+ kind: Namespace
3
+ metadata:
4
+ name: tmp
5
+ ---
6
+ apiVersion: v1
7
+ kind: Service
8
+ metadata:
9
+ name: hello-kubernetes-first
10
+ namespace: tmp
11
+ spec:
12
+ type: ClusterIP
13
+ ports:
14
+ - port: 80
15
+ targetPort: 8080
16
+ selector:
17
+ app: hello-kubernetes-first
18
+ ---
19
+ apiVersion: apps/v1
20
+ kind: Deployment
21
+ metadata:
22
+ name: hello-kubernetes-first
23
+ namespace: tmp
24
+ spec:
25
+ replicas: 3
26
+ selector:
27
+ matchLabels:
28
+ app: hello-kubernetes-first
29
+ template:
30
+ metadata:
31
+ labels:
32
+ app: hello-kubernetes-first
33
+ spec:
34
+ containers:
35
+ - name: hello-kubernetes
36
+ image: paulbouwer/hello-kubernetes:1.10
37
+ ports:
38
+ - containerPort: 8080
39
+ env:
40
+ - name: MESSAGE
41
+ value: Hello from the first deployment!
42
+ ---
43
+ apiVersion: networking.k8s.io/v1
44
+ kind: Ingress
45
+ metadata:
46
+ name: hello-kubernetes-ingress
47
+ namespace: tmp
48
+ spec:
49
+ ingressClassName: "nginx"
50
+ rules:
51
+ - host: $TEST_HOST
52
+ http:
53
+ paths:
54
+ - pathType: Prefix
55
+ path: "/"
56
+ backend:
57
+ service:
58
+ name: hello-kubernetes-first
59
+ port:
60
+ number: 80
@@ -0,0 +1,62 @@
1
+ apiVersion: networking.k8s.io/v1
2
+ kind: Ingress
3
+ metadata:
4
+ name: grafana
5
+ namespace: monitoring
6
+ labels:
7
+ app: grafana
8
+ spec:
9
+ ingressClassName: nginx
10
+ rules:
11
+ - host: grafana.$APEX_DOMAIN
12
+ http:
13
+ paths:
14
+ - path: /
15
+ pathType: Prefix
16
+ backend:
17
+ service:
18
+ name: prometheus-grafana
19
+ port:
20
+ number: 80
21
+ ---
22
+ apiVersion: networking.k8s.io/v1
23
+ kind: Ingress
24
+ metadata:
25
+ name: prometheus
26
+ namespace: monitoring
27
+ labels:
28
+ app: prometheus
29
+ spec:
30
+ ingressClassName: nginx
31
+ rules:
32
+ - host: prometheus.$APEX_DOMAIN
33
+ http:
34
+ paths:
35
+ - path: /
36
+ pathType: Prefix
37
+ backend:
38
+ service:
39
+ name: prometheus-kube-prometheus-prometheus
40
+ port:
41
+ number: 9090
42
+ ---
43
+ apiVersion: networking.k8s.io/v1
44
+ kind: Ingress
45
+ metadata:
46
+ name: alerts
47
+ namespace: monitoring
48
+ labels:
49
+ app: alerts
50
+ spec:
51
+ ingressClassName: nginx
52
+ rules:
53
+ - host: alerts.$APEX_DOMAIN
54
+ http:
55
+ paths:
56
+ - path: /
57
+ pathType: Prefix
58
+ backend:
59
+ service:
60
+ name: prometheus-kube-prometheus-alertmanager
61
+ port:
62
+ number: 9093
@@ -0,0 +1,54 @@
1
+ # New service account for managing deployments in stackgres namespace
2
+ apiVersion: v1
3
+ kind: ServiceAccount
4
+ metadata:
5
+ name: stackgres-deployment-manager
6
+ namespace: stackgres
7
+ ---
8
+ # Role with permissions to restart deployments
9
+ apiVersion: rbac.authorization.k8s.io/v1
10
+ kind: Role
11
+ metadata:
12
+ name: deployment-manager
13
+ namespace: stackgres
14
+ rules:
15
+ - apiGroups: ["apps"]
16
+ resources: ["deployments"]
17
+ verbs: ["get", "list", "watch", "patch"]
18
+ ---
19
+ # Bind the role to the service account
20
+ apiVersion: rbac.authorization.k8s.io/v1
21
+ kind: RoleBinding
22
+ metadata:
23
+ name: stackgres-deployment-manager-binding
24
+ namespace: stackgres
25
+ subjects:
26
+ - kind: ServiceAccount
27
+ name: stackgres-deployment-manager
28
+ namespace: stackgres
29
+ roleRef:
30
+ kind: Role
31
+ name: deployment-manager
32
+ apiGroup: rbac.authorization.k8s.io
33
+ ---
34
+ apiVersion: batch/v1
35
+ kind: CronJob
36
+ metadata:
37
+ name: stackgres-operator-restart-all-deployments
38
+ namespace: stackgres
39
+ spec:
40
+ schedule: "0 2 * * *"
41
+ jobTemplate:
42
+ spec:
43
+ template:
44
+ spec:
45
+ serviceAccountName: stackgres-deployment-manager
46
+ containers:
47
+ - name: kubectl
48
+ image: bitnami/kubectl:latest
49
+ command:
50
+ - /bin/sh
51
+ - -c
52
+ # Restarts all deployments in the stackgres namespace, which include stackgres-collector, stackgres-operator, and stackgres-restapi
53
+ - kubectl rollout restart deployment -n stackgres
54
+ restartPolicy: OnFailure
@@ -0,0 +1,27 @@
1
+ apiVersion: policy/v1
2
+ kind: PodDisruptionBudget
3
+ metadata:
4
+ name: db-production-replicas-pdb
5
+ namespace: db-production
6
+ spec:
7
+ maxUnavailable: 1
8
+ selector:
9
+ matchLabels:
10
+ app: StackGresCluster
11
+ role: replica
12
+ stackgres.io/cluster-name: db-production
13
+ stackgres.io/cluster: "true"
14
+ ---
15
+ apiVersion: policy/v1
16
+ kind: PodDisruptionBudget
17
+ metadata:
18
+ name: db-production-primary-pdb
19
+ namespace: db-production
20
+ spec:
21
+ minAvailable: 1
22
+ selector:
23
+ matchLabels:
24
+ app: StackGresCluster
25
+ role: primary
26
+ stackgres.io/cluster-name: db-production
27
+ stackgres.io/cluster: "true"
@@ -0,0 +1,47 @@
1
+ apiVersion: stackgres.io/v1
2
+ kind: SGCluster
3
+ metadata:
4
+ namespace: db-production
5
+ name: db-production
6
+ spec:
7
+ postgres:
8
+ version: '17.4'
9
+ extensions:
10
+ # - name: 'pg_repack'
11
+ - name: 'pg_trgm' # required for prefect
12
+ instances: 2
13
+ # sgInstanceProfile: 'size-m'
14
+ profile: 'production'
15
+ pods:
16
+ persistentVolume:
17
+ size: '20Gi'
18
+ storageClass: 'hcloud-volumes-retain'
19
+ scheduling:
20
+ tolerations:
21
+ - key: "stackgres"
22
+ operator: "Exists"
23
+ effect: "NoSchedule"
24
+ configurations:
25
+ # sgPostgresConfig: 'pgconfig'
26
+ # sgPoolingConfig: 'poolconfig'
27
+ backups:
28
+ - sgObjectStorage: 'backupconfig'
29
+ cronSchedule: '30 02 * * *'
30
+ retention: 7
31
+ compression: lz4
32
+ performance:
33
+ maxDiskBandwidth: 26214400 #25 MB per seceod
34
+ maxNetworkBandwidth: 52428800 #50 MB per second
35
+ uploadDiskConcurrency: 2
36
+ # We do not use for now as it requires adding a few more nodes
37
+ # distributedLogs:
38
+ # sgDistributedLogs: 'distributedlogs'
39
+ managedSql:
40
+ scripts:
41
+ - sgScript: create-db-script
42
+ postgresServices:
43
+ primary:
44
+ type: ClusterIP
45
+ replicas:
46
+ type: ClusterIP
47
+ prometheusAutobind: true
@@ -0,0 +1,191 @@
1
+ apiVersion: monitoring.coreos.com/v1
2
+ kind: PrometheusRule
3
+ metadata:
4
+ labels:
5
+ app: kube-prometheus-stack
6
+ release: monitoring
7
+ name: stackgres-rules
8
+ namespace: monitoring
9
+ spec:
10
+ groups:
11
+ - name: StackGres
12
+ rules:
13
+ - alert: PostgresInstanceDown
14
+ expr: pg_up == 0
15
+ for: 1m
16
+ labels:
17
+ severity: critical
18
+ service: "PostgreSQL"
19
+ cluster: "StackGres"
20
+ annotations:
21
+ summary: "Postgres server instance is down"
22
+ description: "Postgres has not been responding for the past 1 minutes on {{ $labels.instance }}"
23
+ title: "Postgres server instance {{ $labels.instance }} is down "
24
+ - alert: PostgresExporterErrors
25
+ expr: pg_exporter_last_scrape_error == 1
26
+ for: 10m
27
+ labels:
28
+ severity: critical
29
+ service: "PostgreSQL"
30
+ cluster: "StackGres"
31
+ annotations:
32
+ summary: "Postgres Exporter is down or is showing errors"
33
+ description: "postgres-exporter is not running or it is showing errors {{ $labels.instance }}"
34
+ - alert: PostgresReplicationLagSizeTooLarge
35
+ expr: pg_replication_status_lag_size > 1e+09
36
+ for: 5m
37
+ labels:
38
+ severity: critical
39
+ service: "PostgreSQL"
40
+ cluster: "StackGres"
41
+ annotations:
42
+ summary: "Postgres replication lag size is to large"
43
+ description: "Replication lag size on server {{$labels.instance}} ({{$labels.application_name}}) is currently {{ $value | humanize1024}}B behind the leader in cluster {{$labels.cluster_name}}"
44
+ - alert: PostgresTooManyDeadTuples
45
+ expr: ((pg_stat_user_tables_n_dead_tup > 1e+06) / (pg_stat_user_tables_n_live_tup + pg_stat_user_tables_n_dead_tup)) >= 0.1
46
+ for: 30m
47
+ labels:
48
+ severity: info
49
+ service: "PostgreSQL"
50
+ cluster: "StackGres"
51
+ annotations:
52
+ summary: "PostgreSQL dead tuples is too large"
53
+ description: "The dead tuple ratio of {{$labels.relname}} on database {{$labels.datname}} is greater than 10% in cluster {{$labels.cluster_name}}"
54
+ - alert: PostgresInactiveReplicationSlots
55
+ expr: pg_replication_slots_active == 0
56
+ for: 10m
57
+ labels:
58
+ severity: warning
59
+ service: "PostgreSQL"
60
+ cluster: "StackGres"
61
+ annotations:
62
+ summary: "There are inactive replications slots"
63
+ description: "The are some inactive replication slots on {{$labels.instance}} in cluster {{$labels.cluster_name}}"
64
+ - alert: PostgresSplitBrain
65
+ expr: count by(cluster_name) (pg_replication_is_replica == 0) > 1
66
+ for: 1m
67
+ labels:
68
+ severity: critical
69
+ service: "PostgreSQL"
70
+ cluster: "StackGres"
71
+ annotations:
72
+ summary: "There are more than one instance in read-write mode"
73
+ description: "Split Brain: too many postgres databases in cluster {{$labels.cluster_name}} in read-write mode"
74
+ - alert: PostgresTooManyConnections
75
+ expr: sum by (datname) (pg_stat_activity_count{datname!~"template.*|postgres"}) > pg_settings_max_connections * 0.9
76
+ for: 5m
77
+ labels:
78
+ severity: warning
79
+ service: "PostgreSQL"
80
+ cluster: "StackGres"
81
+ annotations:
82
+ summary: Postgresql too many connections (instance {{ $labels.instance }} in cluster {{$labels.cluster_name}})
83
+ description: "PostgreSQL instance has too many connections\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
84
+ - alert: PostgresNotEnoughConnections
85
+ expr: sum by (datname) (pg_stat_activity_count{datname!~"template.*|postgres"}) < 5
86
+ for: 5m
87
+ labels:
88
+ severity: warning
89
+ service: "PostgreSQL"
90
+ cluster: "StackGres"
91
+ annotations:
92
+ summary: Postgresql not enough connections (instance {{ $labels.instance }} in cluster {{$labels.cluster_name}})
93
+ description: "PostgreSQL instance should have more connections (> 5)\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
94
+ - alert: PostgresPromotedNode
95
+ expr: pg_replication_is_replica and changes(pg_replication_is_replica[1m]) > 0
96
+ for: 5m
97
+ labels:
98
+ severity: warning
99
+ service: "PostgreSQL"
100
+ cluster: "StackGres"
101
+ annotations:
102
+ summary: "Postgresql promoted node (instance {{ $labels.instance }}, cluster {{ $labels.cluster_name }})"
103
+ description: "Postgresql standby server has been promoted as primary node\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
104
+ - alert: PostgresLongRunningTransactionLeaderNode
105
+ expr: pg_long_running_transactions_transactions>0 and on (instance)(pg_replication_is_replica == 0)
106
+ for: 10m
107
+ labels:
108
+ severity: warning
109
+ service: "PostgreSQL"
110
+ cluster: "StackGres"
111
+ annotations:
112
+ summary: "Long running transaction on the leader node, {{ $labels.instance }}
113
+ cluster {{ $labels.cluster_name }}"
114
+ description: |-
115
+ There are long running transactions on the leader node, {{ $labels.instance }}
116
+ COUNT = {{ $value }}
117
+ LABELS: {{ $labels }}
118
+ - alert: PostgresLongRunningTransactionReplicaNode
119
+ expr: pg_long_running_transactions_transactions>0 and on (instance)(pg_replication_is_replica == 1)
120
+ for: 10m
121
+ labels:
122
+ severity: warning
123
+ service: "PostgreSQL"
124
+ cluster: "StackGres"
125
+ annotations:
126
+ summary: "Long running transaction on a replica node, {{ $labels.instance }}, cluster {{ $labels.cluster_name }}"
127
+ description: |-
128
+ There are long running transactions on a replica node, {{ $labels.instance }}
129
+ COUNT = {{ $value }}
130
+ LABELS: {{ $labels }}
131
+ # Connection Pooling alerts
132
+ - alert: PgBouncerWaitingClients
133
+ expr: pgbouncer_show_pools_cl_waiting > 0
134
+ for: 10m
135
+ labels:
136
+ severity: warning
137
+ service: "PostgreSQL"
138
+ cluster: "StackGres"
139
+ annotations:
140
+ summary: PgBouncer has waiting clients on instance {{ $labels.instance }} in cluster {{$labels.cluster_name}})
141
+ description: "PgBouncer instance has waiting clients\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
142
+ - alert: PgBouncerNotEnoughConnections
143
+ expr: (sum by (database,instance) (pgbouncer_show_pools_cl_active{database!~"template.*|postgres|pgbouncer"}) + sum by (database, instance) (pgbouncer_show_pools_cl_waiting{database!~"template.*|postgres|pgbouncer"})) - on (database,instance) (pgbouncer_show_databases_pool_size{database!~"template.*|postgres|pgbouncer"}) > 0
144
+ for: 10m
145
+ labels:
146
+ severity: critical
147
+ service: "PostgreSQL"
148
+ cluster: "StackGres"
149
+ annotations:
150
+ summary: PgBouncer pool size is not enough for the current connections on {{ $labels.instance }} in cluster {{$labels.cluster_name}})
151
+ description: "PgBouncer is getting more connections than the pool size, extra connections = {{ $value }}"
152
+ - alert: PgBouncerPoolFillingUp
153
+ expr: (sum by (database,instance) (pgbouncer_show_databases_pool_size{database!~"template.*|postgres|pgbouncer"}) - on (database,instance) pgbouncer_show_databases_current_connections) <= 15
154
+ for: 1m
155
+ labels:
156
+ severity: warning
157
+ service: "PostgreSQL"
158
+ cluster: "StackGres"
159
+ annotations:
160
+ summary: PgBouncer pool is filling up on {{ $labels.instance }} in cluster {{$labels.cluster_name}})
161
+ description: "PgBouncer pool is filling up, remaining connections = {{ $value }}"
162
+ - alert: PgBouncerAvgWaitTimeTooHigh
163
+ expr: pgbouncer_show_stats_avg_wait_time > 1e+6
164
+ for: 5m
165
+ labels:
166
+ severity: warning
167
+ service: "PostgreSQL"
168
+ cluster: "StackGres"
169
+ annotations:
170
+ summary: PgBouncer time spent by clients waiting for a connections is too high on {{ $labels.instance }} in cluster {{$labels.cluster_name}})
171
+ description: "PgBouncer wait for a server connections is too high = {{ $value }}"
172
+ - alert: PgBouncerQueryTimeTooHigh
173
+ expr: pgbouncer_show_stats_avg_query_time > 5e+6
174
+ for: 5m
175
+ labels:
176
+ severity: warning
177
+ service: "PostgreSQL"
178
+ cluster: "StackGres"
179
+ annotations:
180
+ summary: PgBouncer average query duration more than 5 seconds on {{ $labels.instance }} in cluster {{$labels.cluster_name}})
181
+ description: "PgBouncer average query duration more than 5 seconds = {{ $value }}"
182
+ - alert: DatabaseLowDiskAvailable
183
+ expr: (1.0 - node_filesystem_avail_bytes{mountpoint="/var/lib/postgresql",fstype!=""} / node_filesystem_size_bytes{mountpoint="/var/lib/postgresql",fstype!=""}) * 100 >= 80
184
+ for: 15m
185
+ labels:
186
+ severity: warning
187
+ service: "PostgreSQL"
188
+ cluster: "StackGres"
189
+ annotations:
190
+ summary: Database disk is filling up currently have less than 20% available on {{ $labels.instance }} in cluster {{$labels.cluster_name}})
191
+ description: "Database disk is filling up currently have less than 20%, currently occupied {{ $value }} %"
@@ -0,0 +1,11 @@
1
+ # We do not use for now as it requires adding a few more nodes
2
+
3
+ # apiVersion: stackgres.io/v1
4
+ # kind: SGDistributedLogs
5
+ # metadata:
6
+ # name: distributedlogs
7
+ # namespace: db-production
8
+ # spec:
9
+ # persistentVolume:
10
+ # size: 10Gi
11
+