From 2c37eab9a66071d3143f4296455613d48537635e Mon Sep 17 00:00:00 2001 From: asafMasa Date: Mon, 4 May 2026 17:51:56 +0300 Subject: [PATCH 1/3] chore: update helm name --- helm/templates/_helpers.tpl | 28 ++++++++++++++-------------- helm/templates/configmap.yaml | 6 +++--- helm/templates/deployment.yaml | 26 +++++++++++++------------- helm/templates/ingress.yaml | 8 ++++---- helm/templates/route.yaml | 8 ++++---- helm/templates/service.yaml | 12 ++++++------ helm/values.yaml | 2 +- 7 files changed, 45 insertions(+), 45 deletions(-) diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index da7d776..ce42f05 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -1,7 +1,7 @@ {{/* Expand the name of the chart. */}} -{{- define "ts-server-boilerplate.name" -}} +{{- define "sync-layer-server.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} {{- end -}} @@ -10,7 +10,7 @@ Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} -{{- define "ts-server-boilerplate.fullname" -}} +{{- define "sync-layer-server.fullname" -}} {{- if .Values.fullnameOverride -}} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} {{- else -}} @@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name. {{/* Create chart name and version as used by the chart label. */}} -{{- define "ts-server-boilerplate.chart" -}} +{{- define "sync-layer-server.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Common labels */}} -{{- define "ts-server-boilerplate.labels" -}} -helm.sh/chart: {{ include "ts-server-boilerplate.chart" . }} -{{ include "ts-server-boilerplate.selectorLabels" . }} +{{- define "sync-layer-server.labels" -}} +helm.sh/chart: {{ include "sync-layer-server.chart" . }} +{{ include "sync-layer-server.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} @@ -46,15 +46,15 @@ app.kubernetes.io/managed-by: {{ .Release.Service }} {{/* Returns the tag of the chart. */}} -{{- define "ts-server-boilerplate.tag" -}} +{{- define "sync-layer-server.tag" -}} {{- default (printf "v%s" .Chart.AppVersion) .Values.image.tag }} {{- end }} {{/* Selector labels */}} -{{- define "ts-server-boilerplate.selectorLabels" -}} -app.kubernetes.io/name: {{ include "ts-server-boilerplate.name" . }} +{{- define "sync-layer-server.selectorLabels" -}} +app.kubernetes.io/name: {{ include "sync-layer-server.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{ include "mclabels.selectorLabels" . }} {{- end }} @@ -62,7 +62,7 @@ app.kubernetes.io/instance: {{ .Release.Name }} {{/* Returns the cloud provider name from global if exists or from the chart's values, defaults to minikube */}} -{{- define "ts-server-boilerplate.cloudProviderFlavor" -}} +{{- define "sync-layer-server.cloudProviderFlavor" -}} {{- if .Values.global.cloudProvider.flavor }} {{- .Values.global.cloudProvider.flavor -}} {{- else if .Values.cloudProvider -}} @@ -75,7 +75,7 @@ Returns the cloud provider name from global if exists or from the chart's values {{/* Returns the cloud provider docker registry url from global if exists or from the chart's values */}} -{{- define "ts-server-boilerplate.cloudProviderDockerRegistryUrl" -}} +{{- define "sync-layer-server.cloudProviderDockerRegistryUrl" -}} {{- if .Values.global.cloudProvider.dockerRegistryUrl }} {{- printf "%s/" .Values.global.cloudProvider.dockerRegistryUrl -}} {{- else if .Values.cloudProvider.dockerRegistryUrl -}} @@ -87,7 +87,7 @@ Returns the cloud provider docker registry url from global if exists or from the {{/* Returns the cloud provider image pull secret name from global if exists or from the chart's values */}} -{{- define "ts-server-boilerplate.cloudProviderImagePullSecretName" -}} +{{- define "sync-layer-server.cloudProviderImagePullSecretName" -}} {{- if .Values.global.cloudProvider.imagePullSecretName }} {{- .Values.global.cloudProvider.imagePullSecretName -}} {{- else if .Values.cloudProvider.imagePullSecretName -}} @@ -98,7 +98,7 @@ Returns the cloud provider image pull secret name from global if exists or from {{/* Returns the tracing url from global if exists or from the chart's values */}} -{{- define "ts-server-boilerplate.tracingUrl" -}} +{{- define "sync-layer-server.tracingUrl" -}} {{- if .Values.global.tracing.url }} {{- .Values.global.tracing.url -}} {{- else if .Values.cloudProvider -}} @@ -109,7 +109,7 @@ Returns the tracing url from global if exists or from the chart's values {{/* Returns the tracing url from global if exists or from the chart's values */}} -{{- define "ts-server-boilerplate.metricsUrl" -}} +{{- define "sync-layer-server.metricsUrl" -}} {{- if .Values.global.metrics.url }} {{- .Values.global.metrics.url -}} {{- else -}} diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml index 187f013..d44e876 100644 --- a/helm/templates/configmap.yaml +++ b/helm/templates/configmap.yaml @@ -1,10 +1,10 @@ -{{- $tracingUrl := include "ts-server-boilerplate.tracingUrl" . -}} -{{- $metricsUrl := include "ts-server-boilerplate.metricsUrl" . -}} +{{- $tracingUrl := include "sync-layer-server.tracingUrl" . -}} +{{- $metricsUrl := include "sync-layer-server.metricsUrl" . -}} {{- if .Values.enabled -}} apiVersion: v1 kind: ConfigMap metadata: - name: {{ include "ts-server-boilerplate.fullname" . }} + name: {{ include "sync-layer-server.fullname" . }} data: REQUEST_PAYLOAD_LIMIT: {{ .Values.env.requestPayloadLimit | quote }} RESPONSE_COMPRESSION_ENABLED: {{ .Values.env.responseCompressionEnabled | quote }} diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index 862cff4..ed539c8 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -1,19 +1,19 @@ {{- $releaseName := .Release.Name -}} -{{- $chartName := include "ts-server-boilerplate.name" . -}} -{{- $cloudProviderFlavor := include "ts-server-boilerplate.cloudProviderFlavor" . -}} -{{- $cloudProviderDockerRegistryUrl := include "ts-server-boilerplate.cloudProviderDockerRegistryUrl" . -}} -{{- $cloudProviderImagePullSecretName := include "ts-server-boilerplate.cloudProviderImagePullSecretName" . -}} -{{- $imageTag := include "ts-server-boilerplate.tag" . -}} +{{- $chartName := include "sync-layer-server.name" . -}} +{{- $cloudProviderFlavor := include "sync-layer-server.cloudProviderFlavor" . -}} +{{- $cloudProviderDockerRegistryUrl := include "sync-layer-server.cloudProviderDockerRegistryUrl" . -}} +{{- $cloudProviderImagePullSecretName := include "sync-layer-server.cloudProviderImagePullSecretName" . -}} +{{- $imageTag := include "sync-layer-server.tag" . -}} {{- if .Values.enabled -}} apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "ts-server-boilerplate.fullname" . }} + name: {{ include "sync-layer-server.fullname" . }} labels: app: {{ $chartName }} component: {{ $chartName }} release: {{ $releaseName }} - {{- include "ts-server-boilerplate.labels" . | nindent 4 }} + {{- include "sync-layer-server.labels" . | nindent 4 }} spec: replicas: {{ .Values.replicaCount }} revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} @@ -21,15 +21,15 @@ spec: matchLabels: app: {{ $chartName }} release: {{ $releaseName }} - run: {{ include "ts-server-boilerplate.fullname" . }} - {{- include "ts-server-boilerplate.selectorLabels" . | nindent 6 }} + run: {{ include "sync-layer-server.fullname" . }} + {{- include "sync-layer-server.selectorLabels" . | nindent 6 }} template: metadata: labels: app: {{ $chartName }} release: {{ $releaseName }} - run: {{ include "ts-server-boilerplate.fullname" . }} - {{- include "ts-server-boilerplate.labels" . | nindent 8 }} + run: {{ include "sync-layer-server.fullname" . }} + {{- include "sync-layer-server.labels" . | nindent 8 }} annotations: {{ include "mclabels.annotations" . | nindent 8 }} {{- if .Values.resetOnConfigChange }} @@ -44,7 +44,7 @@ spec: - name: {{ $cloudProviderImagePullSecretName | quote }} {{- end }} containers: - - name: {{ include "ts-server-boilerplate.fullname" . }} + - name: {{ include "sync-layer-server.fullname" . }} {{- with .Values.image }} image: {{ $cloudProviderDockerRegistryUrl }}{{ .repository }}:{{ $imageTag }} imagePullPolicy: {{ .pullPolicy | default "IfNotPresent" }} @@ -84,7 +84,7 @@ spec: {{- end }} envFrom: - configMapRef: - name: {{ include "ts-server-boilerplate.fullname" . }} + name: {{ include "sync-layer-server.fullname" . }} ports: - name: http containerPort: {{ .Values.env.targetPort }} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index 3355e5c..80ac351 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -1,14 +1,14 @@ {{- $releaseName := .Release.Name -}} -{{- $chartName := include "ts-server-boilerplate.name" . -}} +{{- $chartName := include "sync-layer-server.name" . -}} {{- if and (.Values.enabled) (.Values.ingress.enabled) -}} apiVersion: networking.k8s.io/v1 kind: Ingress metadata: - name: {{ include "ts-server-boilerplate.fullname" . }} + name: {{ include "sync-layer-server.fullname" . }} annotations: kubernetes.io/ingress.class: "nginx" nginx.org/mergeable-ingress-type: "minion" - nginx.org/rewrites: 'serviceName={{ include "ts-server-boilerplate.fullname" . }} rewrite=/' + nginx.org/rewrites: 'serviceName={{ include "sync-layer-server.fullname" . }} rewrite=/' nginx.org/location-snippets: | if ($request_method = OPTIONS) { return 204; @@ -27,7 +27,7 @@ spec: pathType: Prefix backend: service: - name: {{ include "ts-server-boilerplate.fullname" . }} + name: {{ include "sync-layer-server.fullname" . }} port: number: {{ .Values.env.port }} host: {{ .Values.ingress.host | quote }} diff --git a/helm/templates/route.yaml b/helm/templates/route.yaml index 0ef1def..eddffcf 100644 --- a/helm/templates/route.yaml +++ b/helm/templates/route.yaml @@ -1,11 +1,11 @@ {{- $releaseName := .Release.Name -}} -{{- $chartName := include "ts-server-boilerplate.name" . -}} -{{- $cloudProviderFlavor := include "ts-server-boilerplate.cloudProviderFlavor" . -}} +{{- $chartName := include "sync-layer-server.name" . -}} +{{- $cloudProviderFlavor := include "sync-layer-server.cloudProviderFlavor" . -}} {{- if and (and (.Values.enabled) (eq $cloudProviderFlavor "openshift")) (.Values.route.enabled) -}} apiVersion: route.openshift.io/v1 kind: Route metadata: - name: {{ include "ts-server-boilerplate.fullname" . }} + name: {{ include "sync-layer-server.fullname" . }} annotations: {{- if .Values.route.rewriteTarget }} haproxy.router.openshift.io/rewrite-target: {{ .Values.route.rewriteTarget }} @@ -20,7 +20,7 @@ spec: path: {{ .Values.route.path | default "/" }} to: kind: Service - name: {{ include "ts-server-boilerplate.fullname" . }} + name: {{ include "sync-layer-server.fullname" . }} {{- if .Values.route.tls.enabled }} tls: termination: {{ .Values.route.tls.termination | quote }} diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml index f69c44c..e7bc02e 100644 --- a/helm/templates/service.yaml +++ b/helm/templates/service.yaml @@ -1,16 +1,16 @@ {{- $releaseName := .Release.Name -}} -{{- $chartName := include "ts-server-boilerplate.name" . -}} -{{- $cloudProviderFlavor := include "ts-server-boilerplate.cloudProviderFlavor" . -}} +{{- $chartName := include "sync-layer-server.name" . -}} +{{- $cloudProviderFlavor := include "sync-layer-server.cloudProviderFlavor" . -}} {{- if .Values.enabled -}} apiVersion: v1 kind: Service metadata: - name: {{ include "ts-server-boilerplate.fullname" . }} + name: {{ include "sync-layer-server.fullname" . }} labels: app: {{ $chartName }} component: {{ $chartName }} release: {{ $releaseName }} - {{- include "ts-server-boilerplate.labels" . | nindent 4 }} + {{- include "sync-layer-server.labels" . | nindent 4 }} spec: {{- if eq $cloudProviderFlavor "minikube" }} type: NodePort @@ -26,6 +26,6 @@ spec: selector: app: {{ $chartName }} release: {{ $releaseName }} - run: {{ include "ts-server-boilerplate.fullname" . }} - {{- include "ts-server-boilerplate.selectorLabels" . | nindent 4 }} + run: {{ include "sync-layer-server.fullname" . }} + {{- include "sync-layer-server.selectorLabels" . | nindent 4 }} {{- end }} diff --git a/helm/values.yaml b/helm/values.yaml index 11b81f6..9987519 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -64,7 +64,7 @@ caPath: '/usr/local/share/ca-certificates' caKey: 'ca.crt' image: - repository: ts-server-boilerplate + repository: sync-layer-server # If commented, appVersion will be taken. See: _helpers.tpl # tag: 'latest' pullPolicy: IfNotPresent From 0028569fd8a99c30aa677b51988c796ffbec0a9b Mon Sep 17 00:00:00 2001 From: asafMasa Date: Mon, 4 May 2026 17:53:10 +0300 Subject: [PATCH 2/3] chore: update helm name --- catalog-info.yaml | 12 ++++++------ package-lock.json | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index 55a51de..a36d014 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1,17 +1,17 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: - name: ts-server-boilerplate - description: A boilerplate github repo for a REST API service in NodeJS for MapColonies + name: sync-layer-server + description: Service that continuously synchronizes geospatial layer data from a third-party GraphQL API into a remote PostgreSQL database annotations: - github.com/project-slug: MapColonies/ts-server-boilerplate + github.com/project-slug: MapColonies/sync-layer-server tags: - nodejs - typescript - expressjs - - boilerplate + - yahalom spec: type: service lifecycle: production - owner: DevInfra - system: boilerplate + owner: 3D + system: yahalom diff --git a/package-lock.json b/package-lock.json index e0da492..9a4f3ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16041,9 +16041,9 @@ "license": "0BSD" }, "node_modules/typeorm/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", + "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" From de565ebea72c64a93daa0ebb6d11976f8250b5f1 Mon Sep 17 00:00:00 2001 From: asafMasa Date: Mon, 4 May 2026 18:07:26 +0300 Subject: [PATCH 3/3] chore: support helm values --- config/custom-environment-variables.json | 92 ++++++++++++++++++++++++ helm/templates/configmap.yaml | 14 +++- helm/values.yaml | 11 +++ 3 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 config/custom-environment-variables.json diff --git a/config/custom-environment-variables.json b/config/custom-environment-variables.json new file mode 100644 index 0000000..98432c3 --- /dev/null +++ b/config/custom-environment-variables.json @@ -0,0 +1,92 @@ +{ + "telemetry": { + "serviceName": "TELEMETRY_SERVICE_NAME", + "hostname": "TELEMETRY_HOST_NAME", + "version": "TELEMETRY_SERVICE_VERSION", + "logger": { + "level": "LOG_LEVEL", + "prettyPrint": { + "__name": "LOG_PRETTY_PRINT_ENABLED", + "__format": "boolean" + } + }, + "tracing": { + "enabled": "TELEMETRY_TRACING_ENABLED", + "url": "TELEMETRY_TRACING_URL" + }, + "metrics": { + "enabled": { + "__name": "TELEMETRY_METRICS_ENABLED", + "__format": "boolean" + }, + "url": "TELEMETRY_METRICS_URL", + "interval": "TELEMETRY_METRICS_INTERVAL" + } + }, + "server": { + "port": "SERVER_PORT", + "request": { + "payload": { + "limit": "REQUEST_PAYLOAD_LIMIT" + } + }, + "response": { + "compression": { + "enabled": { + "__name": "RESPONSE_COMPRESSION_ENABLED", + "__format": "boolean" + } + } + } + }, + "sync": { + "layers": { + "__name": "LAYERS", + "__format": "json" + }, + "syncIntervalMs": { + "__name": "SYNC_INTERVAL_MS", + "__format": "number" + }, + "pollIntervalMs": { + "__name": "POLL_INTERVAL_MS", + "__format": "number" + }, + "pageSize": { + "__name": "PAGE_SIZE", + "__format": "number" + }, + "thirdPartyBaseUrl": "THIRD_PARTY_BASE_URL", + "realityId": { + "__name": "REALITY_ID", + "__format": "number" + }, + "requestingSystem": "REQUESTING_SYSTEM", + "requestingSystemName": "REQUESTING_SYSTEM_NAME", + "useDeleteEntities": { + "__name": "USE_DELETE_ENTITIES", + "__format": "boolean" + }, + "authToken": "AUTH_TOKEN" + }, + "db": { + "type": "DB_TYPE", + "host": "DB_HOST", + "port": { + "__name": "DB_PORT", + "__format": "number" + }, + "username": "DB_USERNAME", + "password": "DB_PASSWORD", + "enableSslAuth": { + "__name": "DB_ENABLE_SSL_AUTH", + "__format": "boolean" + }, + "sslPaths": { + "ca": "DB_CA_PATH", + "key": "DB_KEY_PATH", + "cert": "DB_CERT_PATH" + }, + "database": "DB_NAME" + } +} diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml index d44e876..7b64a0f 100644 --- a/helm/templates/configmap.yaml +++ b/helm/templates/configmap.yaml @@ -20,9 +20,21 @@ data: {{ end }} npm_config_cache: /tmp/ {{- with .Values.configManagement }} - CONFIG_NAME: {{ .name| quote }} + CONFIG_NAME: {{ .name | quote }} CONFIG_VERSION: {{ .version | quote }} CONFIG_OFFLINE_MODE: {{ .offlineMode | quote }} CONFIG_SERVER_URL: {{ .serverUrl | quote }} {{- end -}} + {{- with .Values.env.sync }} + LAYERS: {{ .layers | toJson | quote }} + SYNC_INTERVAL_MS: {{ .syncIntervalMs | quote }} + POLL_INTERVAL_MS: {{ .pollIntervalMs | quote }} + PAGE_SIZE: {{ .pageSize | quote }} + THIRD_PARTY_BASE_URL: {{ .thirdPartyBaseUrl | quote }} + REALITY_ID: {{ .realityId | quote }} + REQUESTING_SYSTEM: {{ .requestingSystem | quote }} + REQUESTING_SYSTEM_NAME: {{ .requestingSystemName | quote }} + USE_DELETE_ENTITIES: {{ .useDeleteEntities | quote }} + AUTH_TOKEN: {{ .authToken | quote }} + {{- end -}} {{- end }} diff --git a/helm/values.yaml b/helm/values.yaml index 9987519..6352312 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -83,6 +83,17 @@ env: metrics: enabled: false url: http://localhost:55681/v1/metrics + sync: + layers: [] + syncIntervalMs: 500 + pollIntervalMs: 600000 + pageSize: 1000 + thirdPartyBaseUrl: '' + realityId: 0 + requestingSystem: '' + requestingSystemName: '' + useDeleteEntities: true + authToken: '' resources: enabled: true