@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.
- package/dist/chunk-N7EX3HJH.js +139 -0
- package/dist/chunk-RZ46YYZZ.js +420 -0
- package/dist/chunk-WKP7EQNU.js +421 -0
- package/dist/devops.d.ts +0 -2
- package/dist/devops.js +3235 -91
- package/dist/index.d.ts +972 -4
- package/dist/index.js +67 -3
- package/dist/plugins.d.ts +95 -4
- package/dist/plugins.js +20 -6
- package/dist/src/target-templates/README.md +1 -0
- package/dist/src/target-templates/cluster-resource-options/README.md +2 -0
- package/dist/src/target-templates/cluster-resource-options/dns-test/dns-test.yaml +60 -0
- package/dist/src/target-templates/cluster-resource-options/milvus/production/milvus-values.yaml +2 -0
- package/dist/src/target-templates/cluster-resource-options/milvus/staging/milvus-values.yaml +2 -0
- package/dist/src/target-templates/cluster-resource-options/monitoring-ingress/monitoring-ingress.yaml +62 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/daily-operator-restart.yaml +54 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/PodDisruptionBudget.yaml +27 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/SGCluster.yaml +47 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/StackGres-alerts.yaml +191 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/06-SGDistributedLogs.yaml +11 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/07-SGObjectStorage.yaml +18 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/08-SGScript.yaml +12 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/stackgres-ui-ingress.yaml +35 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/staging/cluster/SGCluster.yaml +42 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/staging/configurations/07-SGObjectStorage.yaml +18 -0
- package/dist/src/target-templates/cluster-resource-options/postgres/staging/configurations/08-SGScript.yaml +12 -0
- package/dist/src/target-templates/cluster-resource-options/prefect/production/prefect-values.yaml +14 -0
- package/dist/src/target-templates/cluster-resource-options/prefect/staging/prefect-values.yaml +14 -0
- package/dist/src/target-templates/cluster-resource-options/redis/production/redis-values.yaml +20 -0
- package/dist/src/target-templates/cluster-resource-options/redis/staging/redis-values.yaml +8 -0
- package/dist/src/target-templates/infra-variants/README.md +2 -0
- package/dist/src/target-templates/infra-variants/digitalocean/.devops/config/constants.yaml +18 -0
- package/dist/src/target-templates/infra-variants/digitalocean/.github/workflows/k8s-build.yaml +91 -0
- package/dist/src/target-templates/infra-variants/gcloud/.devops/config/constants.yaml +15 -0
- package/dist/src/target-templates/infra-variants/gcloud/.devops/manifests/ingress.yaml.hb +22 -0
- package/dist/src/target-templates/infra-variants/gcloud/.github/workflows/k8s-build.yaml +95 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/config/constants.yaml +18 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/abandoned/harbor-values.yaml +30 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/abandoned/hcloud-config.yaml +134 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/cert-manager.yaml +25 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/harbor-cert.yaml +13 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/harbor-values.yaml +76 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/hcloud-config.yaml +113 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/ingress-nginx-annotations.yaml +49 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/ingress-nginx-configmap.yaml +8 -0
- package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/retain-storage-class.yaml +8 -0
- package/dist/src/target-templates/infra-variants/hetzner/.github/workflows/k8s-build.yaml +93 -0
- package/dist/src/target-templates/lang-variants-common/README.md +4 -0
- package/dist/src/target-templates/lang-variants-common/python/.cursor/rules/monorepo-python.mdc +56 -0
- package/dist/src/target-templates/lang-variants-common/python/.devops/config/images.yaml +89 -0
- package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services/python-exec.sh +8 -0
- package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services/python-run.sh +8 -0
- package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services.Dockerfile +29 -0
- package/dist/src/target-templates/lang-variants-common/python/.devops/manifests/_index.yaml +21 -0
- package/dist/src/target-templates/lang-variants-common/python/.devops/manifests/prefect.yaml.hb +63 -0
- package/dist/src/target-templates/lang-variants-common/python/applications/example-data-pipeline/pyproject.toml +14 -0
- package/dist/src/target-templates/lang-variants-common/python/applications/example-data-pipeline/src/example_data_pipeline/main.py +38 -0
- package/dist/src/target-templates/lang-variants-common/python/applications/example-python/pyproject.toml +20 -0
- package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/__init__.py +0 -0
- package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/main.py +13 -0
- package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/scripts.py +17 -0
- package/dist/src/target-templates/lang-variants-common/python/applications/example-python/tests/__init__.py +0 -0
- package/dist/src/target-templates/lang-variants-common/python/devopspy +3 -0
- package/dist/src/target-templates/lang-variants-common/python/libs/example-python-lib/pyproject.toml +11 -0
- package/dist/src/target-templates/lang-variants-common/python/libs/example-python-lib/src/example_python_lib/__init__.py +2 -0
- package/dist/src/target-templates/lang-variants-common/python/pyproject.toml +16 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.cursor/rules/monorepo-typescript.mdc +51 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/config/images.yaml +69 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/cloudrun.Dockerfile +31 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/common/docker-common.sh +23 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services/node-exec.sh +8 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services/node-run.sh +8 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services.Dockerfile +31 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/env.example.yaml +23 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/_index.yaml +19 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/cron-jobs.yaml.hb +56 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/db-migrate-job.yaml.hb +43 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-debug.yaml.hb +42 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-process.yaml.hb +48 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-web.yaml.hb +54 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/ingress.yaml.hb +21 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/service.yaml.hb +15 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.envrc +5 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/build-image@v1/action.yaml +81 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-digital-ocean@v1/action.yaml +29 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-gke@v1/action.yaml +43 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-hetzner@v1/action.yaml +31 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/db-migrate@v1/action.yaml +23 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/deploy-image-cloudrun@v1/action.yaml +71 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/deploy-image-k8s@v1/action.yaml +37 -0
- package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/setup-prereq@v1/action.yaml +24 -0
- package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/index.ts +30 -0
- package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/package.json +26 -0
- package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/tsconfig.json +3 -0
- package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/README.md +68 -0
- package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/index.ts +1 -0
- package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/package.json +30 -0
- package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/tsconfig.json +3 -0
- package/dist/src/target-templates/lang-variants-common/typescript/config/.env.development +1 -0
- package/dist/src/target-templates/lang-variants-common/typescript/config/.env.global +4 -0
- package/dist/src/target-templates/lang-variants-common/typescript/config/.env.test +1 -0
- package/dist/src/target-templates/lang-variants-common/typescript/devops +3 -0
- package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/index.ts +3 -0
- package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/package.json +12 -0
- package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/tsconfig.json +3 -0
- package/dist/src/target-templates/lang-variants-common/typescript/tmp/.gitkeep +0 -0
- package/dist/src/target-templates/lang-variants-common/typescript/tsconfig.json +27 -0
- package/dist/src/target-templates/lang-variants-prisma/README.md +3 -0
- package/dist/src/target-templates/lang-variants-prisma/python/.cursor/rules/prisma-python.mdc +55 -0
- package/dist/src/target-templates/lang-variants-prisma/python/.cursor/rules/testing-python.mdc +89 -0
- package/dist/src/target-templates/lang-variants-prisma/python/db/db/__init__.py +0 -0
- package/dist/src/target-templates/lang-variants-prisma/python/db/db/db_client_test.py +46 -0
- package/dist/src/target-templates/lang-variants-prisma/python/db/pyproject.toml +14 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/prisma-typescript.mdc +54 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/testing-typescript.mdc +103 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/db/db-client-test.ts +142 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/db/db-client.ts +19 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/db/env.yaml +4 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/db/package.json +17 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/db/prisma/schema.prisma +24 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/db/prisma-setup-vitest.ts +27 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/db/tsconfig.json +3 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/dml/package.json +7 -0
- package/dist/src/target-templates/lang-variants-prisma/typescript/dml/tsconfig.json +3 -0
- package/package.json +3 -2
- package/src/cli/core/exec.ts +2 -4
- package/src/cli/core/run.ts +2 -4
- package/src/cli/extensions/prisma.ts +2 -4
- package/src/libs/init-generator.ts +2 -4
- package/src/pkg-root.ts +14 -0
- package/src/plugins.ts +2 -4
- package/dist/app-support/crypto/aes.d.ts +0 -15
- package/dist/app-support/crypto/aes.d.ts.map +0 -1
- package/dist/app-support/crypto/aes.js +0 -56
- package/dist/app-support/crypto/aes.spec.d.ts +0 -2
- package/dist/app-support/crypto/aes.spec.d.ts.map +0 -1
- package/dist/app-support/crypto/aes.spec.js +0 -58
- package/dist/app-support/crypto/index.d.ts +0 -16
- package/dist/app-support/crypto/index.d.ts.map +0 -1
- package/dist/app-support/crypto/index.js +0 -31
- package/dist/app-support/crypto/internal-token.d.ts +0 -20
- package/dist/app-support/crypto/internal-token.d.ts.map +0 -1
- package/dist/app-support/crypto/internal-token.js +0 -42
- package/dist/app-support/crypto/internal-token.spec.d.ts +0 -2
- package/dist/app-support/crypto/internal-token.spec.d.ts.map +0 -1
- package/dist/app-support/crypto/internal-token.spec.js +0 -45
- package/dist/app-support/crypto/secret.d.ts +0 -3
- package/dist/app-support/crypto/secret.d.ts.map +0 -1
- package/dist/app-support/crypto/secret.js +0 -12
- package/dist/app-support/crypto/secret.spec.d.ts +0 -2
- package/dist/app-support/crypto/secret.spec.d.ts.map +0 -1
- package/dist/app-support/crypto/secret.spec.js +0 -15
- package/dist/app-support/discovery/dev-discovery-loader.d.ts +0 -2
- package/dist/app-support/discovery/dev-discovery-loader.d.ts.map +0 -1
- package/dist/app-support/discovery/dev-discovery-loader.js +0 -30
- package/dist/app-support/discovery/service-endpoint.d.ts +0 -2
- package/dist/app-support/discovery/service-endpoint.d.ts.map +0 -1
- package/dist/app-support/discovery/service-endpoint.js +0 -10
- package/dist/cli/common.d.ts +0 -89
- package/dist/cli/common.d.ts.map +0 -1
- package/dist/cli/common.js +0 -246
- package/dist/cli/common.spec.d.ts +0 -2
- package/dist/cli/common.spec.d.ts.map +0 -1
- package/dist/cli/common.spec.js +0 -64
- package/dist/cli/core/affected.d.ts +0 -9
- package/dist/cli/core/affected.d.ts.map +0 -1
- package/dist/cli/core/affected.js +0 -101
- package/dist/cli/core/cloudrun.d.ts +0 -9
- package/dist/cli/core/cloudrun.d.ts.map +0 -1
- package/dist/cli/core/cloudrun.js +0 -119
- package/dist/cli/core/console.d.ts +0 -10
- package/dist/cli/core/console.d.ts.map +0 -1
- package/dist/cli/core/console.js +0 -50
- package/dist/cli/core/constant.d.ts +0 -9
- package/dist/cli/core/constant.d.ts.map +0 -1
- package/dist/cli/core/constant.js +0 -20
- package/dist/cli/core/env.d.ts +0 -9
- package/dist/cli/core/env.d.ts.map +0 -1
- package/dist/cli/core/env.js +0 -65
- package/dist/cli/core/exec.d.ts +0 -9
- package/dist/cli/core/exec.d.ts.map +0 -1
- package/dist/cli/core/exec.js +0 -48
- package/dist/cli/core/image.d.ts +0 -9
- package/dist/cli/core/image.d.ts.map +0 -1
- package/dist/cli/core/image.js +0 -153
- package/dist/cli/core/index.d.ts +0 -16
- package/dist/cli/core/index.d.ts.map +0 -1
- package/dist/cli/core/index.js +0 -15
- package/dist/cli/core/init.d.ts +0 -9
- package/dist/cli/core/init.d.ts.map +0 -1
- package/dist/cli/core/init.js +0 -219
- package/dist/cli/core/job.d.ts +0 -9
- package/dist/cli/core/job.d.ts.map +0 -1
- package/dist/cli/core/job.js +0 -65
- package/dist/cli/core/namespace.d.ts +0 -9
- package/dist/cli/core/namespace.d.ts.map +0 -1
- package/dist/cli/core/namespace.js +0 -67
- package/dist/cli/core/prep-build.d.ts +0 -10
- package/dist/cli/core/prep-build.d.ts.map +0 -1
- package/dist/cli/core/prep-build.js +0 -109
- package/dist/cli/core/registry.d.ts +0 -9
- package/dist/cli/core/registry.d.ts.map +0 -1
- package/dist/cli/core/registry.js +0 -66
- package/dist/cli/core/run-many.d.ts +0 -10
- package/dist/cli/core/run-many.d.ts.map +0 -1
- package/dist/cli/core/run-many.js +0 -48
- package/dist/cli/core/run.d.ts +0 -9
- package/dist/cli/core/run.d.ts.map +0 -1
- package/dist/cli/core/run.js +0 -35
- package/dist/cli/core/test.d.ts +0 -9
- package/dist/cli/core/test.d.ts.map +0 -1
- package/dist/cli/core/test.js +0 -26
- package/dist/cli/extensions/dml.d.ts +0 -9
- package/dist/cli/extensions/dml.d.ts.map +0 -1
- package/dist/cli/extensions/dml.js +0 -114
- package/dist/cli/extensions/index.d.ts +0 -9
- package/dist/cli/extensions/index.d.ts.map +0 -1
- package/dist/cli/extensions/index.js +0 -8
- package/dist/cli/extensions/internal-curl.d.ts +0 -10
- package/dist/cli/extensions/internal-curl.d.ts.map +0 -1
- package/dist/cli/extensions/internal-curl.js +0 -41
- package/dist/cli/extensions/jwt.d.ts +0 -9
- package/dist/cli/extensions/jwt.d.ts.map +0 -1
- package/dist/cli/extensions/jwt.js +0 -25
- package/dist/cli/extensions/prisma.d.ts +0 -9
- package/dist/cli/extensions/prisma.d.ts.map +0 -1
- package/dist/cli/extensions/prisma.js +0 -23
- package/dist/cli/extensions/redis-bitnami.d.ts +0 -11
- package/dist/cli/extensions/redis-bitnami.d.ts.map +0 -1
- package/dist/cli/extensions/redis-bitnami.js +0 -74
- package/dist/cli/extensions/redis-ha.d.ts +0 -11
- package/dist/cli/extensions/redis-ha.d.ts.map +0 -1
- package/dist/cli/extensions/redis-ha.js +0 -51
- package/dist/cli/extensions/stackgres.d.ts +0 -10
- package/dist/cli/extensions/stackgres.d.ts.map +0 -1
- package/dist/cli/extensions/stackgres.js +0 -117
- package/dist/cli/extensions/template.d.ts +0 -9
- package/dist/cli/extensions/template.d.ts.map +0 -1
- package/dist/cli/extensions/template.js +0 -121
- package/dist/devops.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/libs/affected-entities.d.ts +0 -15
- package/dist/libs/affected-entities.d.ts.map +0 -1
- package/dist/libs/affected-entities.js +0 -52
- package/dist/libs/cloudrun-helpers.d.ts +0 -16
- package/dist/libs/cloudrun-helpers.d.ts.map +0 -1
- package/dist/libs/cloudrun-helpers.js +0 -81
- package/dist/libs/config.d.ts +0 -7
- package/dist/libs/config.d.ts.map +0 -1
- package/dist/libs/config.js +0 -102
- package/dist/libs/digital-ocean/container-reg.d.ts +0 -6
- package/dist/libs/digital-ocean/container-reg.d.ts.map +0 -1
- package/dist/libs/digital-ocean/container-reg.js +0 -74
- package/dist/libs/discovery/dependencies.d.ts +0 -19
- package/dist/libs/discovery/dependencies.d.ts.map +0 -1
- package/dist/libs/discovery/dependencies.js +0 -62
- package/dist/libs/discovery/dependencies.spec.d.ts +0 -2
- package/dist/libs/discovery/dependencies.spec.d.ts.map +0 -1
- package/dist/libs/discovery/dependencies.spec.js +0 -21
- package/dist/libs/discovery/images.d.ts +0 -5
- package/dist/libs/discovery/images.d.ts.map +0 -1
- package/dist/libs/discovery/images.js +0 -45
- package/dist/libs/discovery/index.d.ts +0 -6
- package/dist/libs/discovery/index.d.ts.map +0 -1
- package/dist/libs/discovery/index.js +0 -67
- package/dist/libs/discovery/process-common.d.ts +0 -25
- package/dist/libs/discovery/process-common.d.ts.map +0 -1
- package/dist/libs/discovery/process-common.js +0 -40
- package/dist/libs/discovery/process-package-json.d.ts +0 -3
- package/dist/libs/discovery/process-package-json.d.ts.map +0 -1
- package/dist/libs/discovery/process-package-json.js +0 -40
- package/dist/libs/discovery/process-pyproject-toml.d.ts +0 -3
- package/dist/libs/discovery/process-pyproject-toml.d.ts.map +0 -1
- package/dist/libs/discovery/process-pyproject-toml.js +0 -49
- package/dist/libs/git-helpers.d.ts +0 -8
- package/dist/libs/git-helpers.d.ts.map +0 -1
- package/dist/libs/git-helpers.js +0 -20
- package/dist/libs/hetzner/reg-secret.d.ts +0 -3
- package/dist/libs/hetzner/reg-secret.d.ts.map +0 -1
- package/dist/libs/hetzner/reg-secret.js +0 -39
- package/dist/libs/init-generator.d.ts +0 -41
- package/dist/libs/init-generator.d.ts.map +0 -1
- package/dist/libs/init-generator.js +0 -123
- package/dist/libs/k8s-constants.d.ts +0 -13
- package/dist/libs/k8s-constants.d.ts.map +0 -1
- package/dist/libs/k8s-constants.js +0 -91
- package/dist/libs/k8s-db.d.ts +0 -18
- package/dist/libs/k8s-db.d.ts.map +0 -1
- package/dist/libs/k8s-db.js +0 -73
- package/dist/libs/k8s-generate.d.ts +0 -17
- package/dist/libs/k8s-generate.d.ts.map +0 -1
- package/dist/libs/k8s-generate.js +0 -193
- package/dist/libs/k8s-helpers.d.ts +0 -11
- package/dist/libs/k8s-helpers.d.ts.map +0 -1
- package/dist/libs/k8s-helpers.js +0 -42
- package/dist/libs/k8s-image-config.d.ts +0 -8
- package/dist/libs/k8s-image-config.d.ts.map +0 -1
- package/dist/libs/k8s-image-config.js +0 -113
- package/dist/libs/k8s-job-waiter.d.ts +0 -8
- package/dist/libs/k8s-job-waiter.d.ts.map +0 -1
- package/dist/libs/k8s-job-waiter.js +0 -84
- package/dist/libs/k8s-namespace.d.ts +0 -7
- package/dist/libs/k8s-namespace.d.ts.map +0 -1
- package/dist/libs/k8s-namespace.js +0 -27
- package/dist/libs/k8s-redis-bitnami.d.ts +0 -6
- package/dist/libs/k8s-redis-bitnami.d.ts.map +0 -1
- package/dist/libs/k8s-redis-bitnami.js +0 -31
- package/dist/libs/k8s-redis-ha.d.ts +0 -3
- package/dist/libs/k8s-redis-ha.d.ts.map +0 -1
- package/dist/libs/k8s-redis-ha.js +0 -15
- package/dist/libs/k8s-secrets-manager.d.ts +0 -6
- package/dist/libs/k8s-secrets-manager.d.ts.map +0 -1
- package/dist/libs/k8s-secrets-manager.js +0 -64
- package/dist/libs/validate-env.d.ts +0 -56
- package/dist/libs/validate-env.d.ts.map +0 -1
- package/dist/libs/validate-env.js +0 -214
- package/dist/libs/validate-env.spec.d.ts +0 -2
- package/dist/libs/validate-env.spec.d.ts.map +0 -1
- package/dist/libs/validate-env.spec.js +0 -168
- package/dist/plugins.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -939
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -82
package/dist/index.js
CHANGED
|
@@ -1,3 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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,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
|
package/dist/src/target-templates/cluster-resource-options/postgres/daily-operator-restart.yaml
ADDED
|
@@ -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 }} %"
|