From 6234b5fadacdcfe9df111f2bbaf6718884d9054c Mon Sep 17 00:00:00 2001 From: "ar.polyakov" Date: Tue, 1 Oct 2024 13:08:56 +0300 Subject: [PATCH 1/9] [PRO-6241] update files and version --- charts/pro-api/Chart.yaml | 4 +- charts/pro-api/templates/_helpers.tpl | 22 +- charts/pro-api/templates/deployment.yaml | 16 +- .../templates/permissions-api-deployment.yaml | 10 +- charts/pro-api/templates/secrets.yaml | 4 +- .../templates/tasks-api/deployment.yaml | 148 ++++++++ .../pro-api/templates/tasks-api/ingress.yaml | 41 ++ .../pro-api/templates/tasks-api/service.yaml | 25 ++ charts/pro-api/templates/tasks-api/vpa.yaml | 28 ++ charts/pro-api/values.yaml | 357 ++++++++++++------ 10 files changed, 531 insertions(+), 124 deletions(-) create mode 100644 charts/pro-api/templates/tasks-api/deployment.yaml create mode 100644 charts/pro-api/templates/tasks-api/ingress.yaml create mode 100644 charts/pro-api/templates/tasks-api/service.yaml create mode 100644 charts/pro-api/templates/tasks-api/vpa.yaml diff --git a/charts/pro-api/Chart.yaml b/charts/pro-api/Chart.yaml index e01669dfe..90c3b6c3e 100644 --- a/charts/pro-api/Chart.yaml +++ b/charts/pro-api/Chart.yaml @@ -4,8 +4,8 @@ description: Geo API for getting geo data type: application -version: 1.29.0 -appVersion: 1.35.0 +version: 1.28.2 +appVersion: 1.40.0 maintainers: - name: 2gis diff --git a/charts/pro-api/templates/_helpers.tpl b/charts/pro-api/templates/_helpers.tpl index 13c15d1fe..35cc89636 100644 --- a/charts/pro-api/templates/_helpers.tpl +++ b/charts/pro-api/templates/_helpers.tpl @@ -2,7 +2,7 @@ {{- if .Values.api.pod.fullnameOverride -}} {{- .Values.api.pod.fullnameOverride | trunc 63 | trimSuffix "-" -}} {{- else -}} -{{- $name := default .Values.api.pod.appName .Values.api.pod.nameOverride -}} +{{- $name := default .Values.api.appName .Values.api.pod.nameOverride -}} {{- if contains $name .Release.Name -}} {{- .Release.Name | trunc 63 | trimSuffix "-" -}} {{- else -}} @@ -15,6 +15,10 @@ {{ include "pro-api.name" . }}-permissions {{- end -}} +{{- define "pro-api.tasks-name" -}} +{{ include "pro-api.name" . }}-tasks +{{- end -}} + {{- define "pro-api.permissions-url" -}} {{- if .Values.permissions.settings.host -}} {{- .Values.permissions.settings.host -}} @@ -56,7 +60,7 @@ {{- end -}} {{- define "pro-api.chart" -}} -{{- printf "%s-%s" .Values.api.pod.appName .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- printf "%s-%s" .Values.api.appName .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} {{- end -}} {{- define "pro-api.selectorLabels" -}} @@ -69,6 +73,11 @@ app.kubernetes.io/name: {{ include "pro-api.permissions-name" . }} app.kubernetes.io/instance: {{ .Release.Name }}-permissions {{- end -}} +{{- define "pro-api.tasksSelectorLabels" -}} +app.kubernetes.io/name: {{ include "pro-api.tasks-name" . }} +app.kubernetes.io/instance: {{ .Release.Name }}-tasks +{{- end -}} + {{- define "pro-api.labels" -}} helm.sh/chart: {{ include "pro-api.chart" . }} {{ include "pro-api.selectorLabels" . }} @@ -86,3 +95,12 @@ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} app.kubernetes.io/managed-by: {{ .Release.Service }} {{- end -}} + +{{- define "pro-api.tasksLabels" -}} +helm.sh/chart: {{ include "pro-api.chart" . }} +{{ include "pro-api.tasksSelectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} diff --git a/charts/pro-api/templates/deployment.yaml b/charts/pro-api/templates/deployment.yaml index de7ff3b9f..fb4ad2de7 100644 --- a/charts/pro-api/templates/deployment.yaml +++ b/charts/pro-api/templates/deployment.yaml @@ -112,9 +112,9 @@ spec: - name: DEBUG value: "{{ .Values.api.settings.debug }}" - name: Import__EnableUserAssetsImporter - value: "{{ .Values.api.settings.enableUserAssetsImporter }}" + value: "{{ .Values.api.settings.backgroundJobs.enableUserAssetsImporter }}" - name: Import__EnableAssetsStreaming - value: "{{ .Values.api.settings.enableAssetsStreaming }}" + value: "{{ .Values.api.settings.backgroundJobs.enableAssetsStreaming }}" - name: Import__AssetImporterJobName value: {{ include "pro-api.asset-importer-name" . }} - name: Import__ExternalLinksProxyUrl @@ -158,13 +158,13 @@ spec: value: "{{ .Values.api.settings.env }}" - name: Common__FilterByZoneCodes value: "{{ .Values.api.settings.filterByZoneCodes }}" - - name: DB_CONNECTION_STRING + - name: Postgres__ConnectionString value: {{ required "A valid .Values.postgres.connectionString entry required" $.Values.postgres.connectionString }} {{ if .Values.postgres.connectionStringReadonly }} - - name: DB_CONNECTION_STRING_READONLY + - name: Postgres__ConnectionStringReadonly value: "{{ .Values.postgres.connectionStringReadonly }}" {{ end }} - - name: DB_CONNECTION_PWD + - name: Postgres__Password valueFrom: secretKeyRef: key: dbConnectionPwd @@ -226,6 +226,8 @@ spec: value: {{ required "A valid .Values.kafka.eventsTopic.name entry required" $.Values.kafka.eventsTopic.name }} - name: Kafka__EventsTopicSettings__ReaderGroupId value: {{ required "A valid .Values.kafka.eventsTopic.readerGroupId entry required" $.Values.kafka.eventsTopic.readerGroupId }} + - name: Kafka__UseReplicaTopics + value: "{{ $.Values.kafka.useReplicaTopics }}" - name: Auth__Type value: "{{ .Values.api.settings.auth.type }}" - name: Auth__Url @@ -247,7 +249,7 @@ spec: {{ end }} - name: Auth__PermissionsApiUrl value: {{ include "pro-api.permissions-url" . }} - {{ if .Values.api.settings.auth.permissionsApiKey }} + {{ if .Values.permissions.settings.auth.apiKey }} - name: Auth__PermissionsApiKey valueFrom: secretKeyRef: @@ -300,6 +302,8 @@ spec: value: "{{ .Values.api.settings.localCache.trackStatistics }}" - name: LicensingService__BaseUri value: {{ required "A valid .Values.license.url entry required" $.Values.license.url }} + - name: LayerGeneration__IsochroneLayerMaxPointsCount + value: "{{ .Values.api.settings.layerGeneration.isochroneLayerMaxPointsCount }}" {{- range $i, $s := .Values.api.settings.openApi.servers }} - name: OpenApi__Servers__{{$i}} value: "{{ $s }}" diff --git a/charts/pro-api/templates/permissions-api-deployment.yaml b/charts/pro-api/templates/permissions-api-deployment.yaml index c0136b7f0..ea4829f48 100644 --- a/charts/pro-api/templates/permissions-api-deployment.yaml +++ b/charts/pro-api/templates/permissions-api-deployment.yaml @@ -112,11 +112,11 @@ spec: value: "{{ .Values.api.settings.allowAnyOrigin }}" - name: ENV value: "{{ .Values.api.settings.env }}" - - name: DB_CONNECTION_STRING + - name: Postgres__ConnectionString value: {{ required "A valid .Values.postgres.connectionString entry required" $.Values.postgres.connectionString }} - - name: DB_CONNECTION_STRING_READONLY + - name: Postgres__ConnectionStringReadonly value: "{{ .Values.postgres.connectionStringReadonly }}" - - name: DB_CONNECTION_PWD + - name: Postgres__Password valueFrom: secretKeyRef: key: dbConnectionPwd @@ -130,7 +130,7 @@ spec: name: {{ include "pro-api.name" . }}-secret - name: Auth__Type value: {{ required "A valid .Values.api.settings.auth.type entry required" $.Values.api.settings.auth.type }} - {{ if .Values.api.settings.auth.permissionsApiKey }} + {{ if .Values.permissions.settings.auth.apiKey }} - name: Auth__PermissionsApiKey valueFrom: secretKeyRef: @@ -186,6 +186,8 @@ spec: value: "{{ $.Values.kafka.permissionsTopic.readerGroupId }}" - name: Kafka__EventsTopicSettings__Name value: {{ required "A valid .Values.kafka.eventsTopic.name entry required" $.Values.kafka.eventsTopic.name }} + - name: Kafka__UseReplicaTopics + value: "{{ $.Values.kafka.useReplicaTopics }}" - name: LocalCache__Enabled value: "{{ .Values.permissions.settings.localCache.enabled }}" - name: LocalCache__TrackStatistics diff --git a/charts/pro-api/templates/secrets.yaml b/charts/pro-api/templates/secrets.yaml index 9092ceef5..e0bdbd78e 100644 --- a/charts/pro-api/templates/secrets.yaml +++ b/charts/pro-api/templates/secrets.yaml @@ -12,8 +12,8 @@ data: {{ if .Values.digger.password }} diggerPassword: {{ .Values.digger.password | b64enc }} {{ end }} - {{ if .Values.api.settings.auth.permissionsApiKey }} - permissionsApiKey: {{ required "Valid .Values.api.settings.auth.permissionsApiKey required!" .Values.api.settings.auth.permissionsApiKey | b64enc }} + {{ if .Values.permissions.settings.auth.apiKey }} + permissionsApiKey: {{ required "Valid .Values.permissions.settings.auth.apiKey required!" .Values.permissions.settings.auth.apiKey | b64enc }} {{ end }} {{ if .Values.elastic.credentials }} esCredentials: {{ .Values.elastic.credentials | b64enc }} diff --git a/charts/pro-api/templates/tasks-api/deployment.yaml b/charts/pro-api/templates/tasks-api/deployment.yaml new file mode 100644 index 000000000..f44afa91d --- /dev/null +++ b/charts/pro-api/templates/tasks-api/deployment.yaml @@ -0,0 +1,148 @@ +{{ if .Values.tasks.settings.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "pro-api.tasks-name" . }} + {{- with .Values.tasks.pod.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "pro-api.tasksLabels" . | nindent 4 }} + {{- with .Values.tasks.pod.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.tasks.pod.replicaCount }} + revisionHistoryLimit: {{ .Values.tasks.pod.revisionHistoryLimit }} + {{- if .Values.tasks.pod.strategy }} + strategy: + {{- toYaml .Values.tasks.pod.strategy | nindent 4 }} + {{- end }} + selector: + matchLabels: + {{- include "pro-api.tasksSelectorLabels" . | nindent 6 }} + template: + metadata: + annotations: + checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} + {{- with .Values.tasks.pod.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "pro-api.tasksLabels" . | nindent 8 }} + {{- with .Values.tasks.pod.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.tasks.pod.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tasks.pod.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tasks.pod.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tasks.pod.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- if .Values.tasks.pod.priorityClassName }} + priorityClassName: {{ .Values.tasks.pod.priorityClassName }} + {{- end }} + {{- with .Values.tasks.pod.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + terminationGracePeriodSeconds: {{ .Values.tasks.pod.terminationGracePeriodSeconds }} + serviceAccountName: {{ include "pro-api.service-account-name" . }} + volumes: + - name: temp-volume + emptyDir: {} + containers: + - name: {{ include "pro-api.tasks-name" . }} + image: {{ required "A valid .Values.dgctlDockerRegistry entry required" $.Values.dgctlDockerRegistry }}/{{ .Values.tasks.image.repository }}:{{ .Values.tasks.image.tag }} + imagePullPolicy: {{ .Values.tasks.image.pullPolicy }} + ports: + - name: http + containerPort: 8082 + protocol: TCP + - name: management + containerPort: 8092 + protocol: TCP + volumeMounts: + - mountPath: "{{ .Values.tasks.settings.tempPath }}" + name: temp-volume + livenessProbe: + httpGet: + path: /health/live + port: management + failureThreshold: 5 + initialDelaySeconds: 5 + periodSeconds: 15 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /health/ready + port: management + failureThreshold: 3 + initialDelaySeconds: 5 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 5 + startupProbe: + httpGet: + path: /health/live + port: management + failureThreshold: 20 + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 5 + resources: + {{- toYaml .Values.tasks.pod.resources | nindent 12 }} + lifecycle: + preStop: + exec: + command: ["/bin/sh", "-c", "sleep 5"] + env: + - name: ENV + value: "{{ .Values.tasks.settings.env }}" + - name: TEMP_PATH + value: "{{ .Values.tasks.settings.tempPath }}" + - name: Postgres__ConnectionString + value: {{ required "A valid .Values.postgres.connectionString entry required" $.Values.postgres.connectionString }} + - name: Postgres__Password + valueFrom: + secretKeyRef: + key: dbConnectionPwd + name: {{ include "pro-api.name" . }}-secret + - name: Common__Logging__Format + value: "{{ .Values.tasks.settings.logging.format }}" + - name: Common__Logging__Targets + value: "{{ .Values.tasks.settings.logging.targets }}" + - name: Kafka__BootstrapServers + value: {{ $.Values.kafka.bootstrapServers }} + - name: Kafka__SecurityProtocol + value: {{ $.Values.kafka.securityProtocol }} + - name: Kafka__SaslMechanism + value: {{ $.Values.kafka.sasl.mechanism }} + - name: Kafka__SaslUsername + value: {{ $.Values.kafka.sasl.username }} + {{ if .Values.kafka.sasl.password }} + - name: Kafka__SaslPassword + valueFrom: + secretKeyRef: + key: kafkaSaslPassword + name: {{ include "pro-api.name" . }}-secret + {{ end }} + - name: Kafka__EventsTopicSettings__Name + value: {{ required "A valid .Values.kafka.eventsTopic.name entry required" $.Values.kafka.eventsTopic.name }} + - name: Kafka__UseReplicaTopics + value: "{{ $.Values.kafka.useReplicaTopics }}" + +{{- end }} diff --git a/charts/pro-api/templates/tasks-api/ingress.yaml b/charts/pro-api/templates/tasks-api/ingress.yaml new file mode 100644 index 000000000..bf8361c19 --- /dev/null +++ b/charts/pro-api/templates/tasks-api/ingress.yaml @@ -0,0 +1,41 @@ +{{- if and (.Values.tasks.ingress.enabled) (.Values.tasks.settings.enabled) }} +{{- $fullName := include "pro-api.tasks-name" . -}} +{{- $svcPort := .Values.tasks.service.port -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "pro-api.tasksLabels" . | nindent 4 }} + {{- with .Values.tasks.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + ingressClassName: {{ .Values.tasks.ingress.className }} + {{- if .Values.tasks.ingress.tls }} + tls: + {{- range .Values.tasks.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.tasks.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + pathType: {{ .pathType }} + backend: + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/pro-api/templates/tasks-api/service.yaml b/charts/pro-api/templates/tasks-api/service.yaml new file mode 100644 index 000000000..af05cb220 --- /dev/null +++ b/charts/pro-api/templates/tasks-api/service.yaml @@ -0,0 +1,25 @@ +{{ if .Values.tasks.settings.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "pro-api.tasks-name" . }} + {{- if .Values.tasks.service.annotations }} + annotations: + {{- toYaml .Values.tasks.service.annotations | nindent 4 }} + {{- end }} + labels: + {{- include "pro-api.tasksLabels" . | nindent 4 }} + {{- if .Values.tasks.service.labels }} + {{- toYaml .Values.tasks.service.labels | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.tasks.service.type }} + ports: + - port: {{ .Values.tasks.service.port }} + targetPort: http + protocol: TCP + name: http + appProtocol: http + selector: + {{- include "pro-api.tasksSelectorLabels" . | nindent 4 }} +{{- end }} diff --git a/charts/pro-api/templates/tasks-api/vpa.yaml b/charts/pro-api/templates/tasks-api/vpa.yaml new file mode 100644 index 000000000..a8cec1be3 --- /dev/null +++ b/charts/pro-api/templates/tasks-api/vpa.yaml @@ -0,0 +1,28 @@ +{{- if and (.Values.tasks.vpa.enabled) (.Values.tasks.settings.enabled) }} +apiVersion: autoscaling.k8s.io/v1 +kind: VerticalPodAutoscaler +metadata: + name: {{ include "pro-api.tasks-name" . }} + labels: + {{- include "pro-api.tasksLabels" . | nindent 4 }} +spec: + targetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "pro-api.tasks-name" . }} + updatePolicy: + updateMode: {{ .Values.tasks.vpa.updateMode }} + resourcePolicy: + containerPolicies: + - containerName: {{ .Chart.Name }} + controlledValues: RequestsOnly + mode: Auto + {{- with .Values.tasks.vpa.minAllowed }} + minAllowed: + {{- toYaml . | nindent 10 }} + {{- end }} + {{- with .Values.tasks.vpa.maxAllowed }} + maxAllowed: + {{- toYaml . | nindent 10 }} + {{- end }} +{{- end }} diff --git a/charts/pro-api/values.yaml b/charts/pro-api/values.yaml index 7d8c61e7b..82f0dbc35 100644 --- a/charts/pro-api/values.yaml +++ b/charts/pro-api/values.yaml @@ -1,89 +1,24 @@ # @section Geo API configuration & settings -# @extra Image settings -# @param api.image.repository Repository -# @param api.image.tag Tag -# @param api.image.pullPolicy Pull Policy -# @extra Ingress settings -# @param api.ingress.enabled If Ingress is enabled for the service. -# @param api.ingress.className Name of the Ingress controller class. -# @param api.ingress.hosts[0].host Hostname for the Ingress service. -# @param api.ingress.hosts[0].paths[0].path Path of the host for the Ingress service. -# @param api.ingress.hosts[0].paths[0].pathType Type of the path for the Ingress service. -# @param api.ingress.tls TLS configuration -# @extra Pod settings -# @param api.pod.appName Name of the service. -# @param api.pod.replicaCount A replica count for the pod. -# @param api.pod.imagePullSecrets Kubernetes image pull secrets. -# @param api.pod.nameOverride Base name to use in all the Kubernetes entities deployed by this chart. -# @param api.pod.fullnameOverride Base fullname to use in all the Kubernetes entities deployed by this chart. -# @param api.pod.nodeSelector Kubernetes [node selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector). -# @param api.pod.affinity Kubernetes pod [affinity settings](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity). -# @param api.pod.priorityClassName Kubernetes [pod priority](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/). -# @param api.pod.terminationGracePeriodSeconds Kubernetes [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/). Should be at least 300 seconds -# @param api.pod.tolerations Kubernetes [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) settings. -# @param api.pod.podAnnotations Kubernetes [pod annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). -# @param api.pod.podLabels Kubernetes [pod labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). -# @param api.pod.annotations Kubernetes [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). -# @param api.pod.labels Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). -# @param api.pod.revisionHistoryLimit Revision history limit (used for [rolling back](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) a deployment). -# @extra api.pod.resources **Limits for the application service** -# @param api.pod.resources.requests.cpu A CPU request. -# @param api.pod.resources.requests.memory A memory request. -# @param api.pod.resources.limits.cpu A CPU limit. -# @param api.pod.resources.limits.memory A memory limit. -# @param api.pod.strategy.type Type of Kubernetes deployment. Can be `Recreate` or `RollingUpdate`. -# @param api.pod.strategy.rollingUpdate.maxUnavailable Maximum number of pods that can be created over the desired number of pods when doing [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment). -# @param api.pod.strategy.rollingUpdate.maxSurge Maximum number of pods that can be unavailable during the [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment) process. -# @extra VPA settings [Vertical Pod Autoscaling](https://github.com/kubernetes/autoscaler/blob/master/vertical-pod-autoscaler/README.md) -# @param api.vpa.enabled If VPA is enabled for the service. -# @param api.vpa.updateMode VPA [update mode](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start). -# @param api.vpa.minAllowed.cpu Lower limit for the number of CPUs to which the autoscaler can scale down. -# @param api.vpa.minAllowed.memory Lower limit for the RAM size to which the autoscaler can scale down. -# @param api.vpa.maxAllowed.cpu Upper limit for the number of CPUs to which the autoscaler can scale up. -# @param api.vpa.maxAllowed.memory Upper limit for the RAM size to which the autoscaler can scale up. -# @extra Service settings -# @param api.service.annotations Kubernetes [service annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) -# @param api.service.labels Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). -# @param api.service.type Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). -# @param api.service.port PRO API service port. -# @param api.service.serviceAccount Kubernetes service account -# @param api.service.serviceAccountOverride The name of an existing custom service account. If specified, the services in the chart will use this existing service account. If not specified, a new service account will be created and used with the name from the variable `api.serviceAccount`. -# @extra Geo API settings -# @param api.settings.licenseKey License key. **Required** -# @param api.settings.tempPath Path to directory used for temp data -# @param api.settings.allowAnyOrigin Cors policy: allow any origin to perform requests to pro-api service -# @skip api.settings.logEsQueries -# @skip api.settings.debug -# @skip api.settings.env -# @skip api.settings.filterByZoneCodes -# @skip api.settings.esDataCentersCount -# @extra api.settings.logging Logging settings -# @param api.settings.logging.format Log message format, possible options: 'default' - compact json, 'renderedCompactJson' - rendered json format, 'simple' - plain text -# @param api.settings.logging.targets Collection of logging targets divided by comma. Currently only 'console' and 'database' are supported. Console is used by default (no need to specify). -# @extra api.settings.rateLimiter rate limiter settings -# @param api.settings.rateLimiter.requestsLimit max number of requests from one user during time window (0 means rate limiter is disabled) -# @param api.settings.rateLimiter.windowSizeInSeconds the size of time windows to count and limit incoming requests -# @skip api.settings.localCache.enabled -# @skip api.settings.localCache.trackStatistics -# @skip api.settings.openApi.servers -# @param api.settings.enableUserAssetsImporter If user data importer job is enabled for the service. -# @param api.settings.enableAssetsStreaming If the streaming data processing job is enabled for the service. -# @param api.settings.auth.type Authentication type: 'none' - disabled, 'openid10' - [OpenId 1.0 / OAuth 2.0 authentication protocol](https://openid.net/specs/openid-connect-core-1_0.html), 'urbi' - urbi authentication protocol -# @param api.settings.auth.url API URL of authentication service. Example: `http(s)://keycloak.ingress.host` -# @param api.settings.auth.userInfoEndpoint The [UserInfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). Example: `realms/URBI_Pro/protocol/openid-connect/userinfo` -# @param api.settings.auth.wellKnownConfigEndpoint The [Well-Known Config endpoint](https://openid.net/specs/openid-connect-discovery-1_0.html). Example: `realms/URBI_Pro/.well-known/openid-configuration` -# @param api.settings.auth.apiKey Secret API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `4230b288-301e-4ec6-82c6-db6a8a72c2af` -# @param api.settings.auth.permissionsApiKey Secret Permissions API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `c7d74870-ec28-4543-b408-b49bfed84399` -# @skip api.settings.auth.autoRegisterUsers -# @param api.settings.auth.turnOffCertValidation Turn off certificate validation for auth.url -# @param api.settings.auth.shareKeys Secret keys for creating and validating shared links. Must contain at least 32 characters. All keys are used for validation. The last one is used for creation. Example: `m7nShlX1a8+IqE9ZcDqRCVjlhEud850ucT0av9bS+tcMTwIwUOUqpNikM+G8teDR` - api: + + # @param api.appName Name of the service + appName: pro-api + + # @param api.image.repository Repository + # @param api.image.tag Tag + # @param api.image.pullPolicy Pull Policy image: repository: 2gis-on-premise/pro-api - tag: 1.35.0 + tag: 1.40.0 pullPolicy: IfNotPresent + + # @param api.ingress.enabled If Ingress is enabled for the service. + # @param api.ingress.className Name of the Ingress controller class. + # @param api.ingress.hosts[0].host Hostname for the Ingress service. + # @param api.ingress.hosts[0].paths[0].path Path of the host for the Ingress service. + # @param api.ingress.hosts[0].paths[0].pathType Type of the path for the Ingress service. + # @param api.ingress.tls TLS configuration ingress: enabled: false className: nginx @@ -93,11 +28,31 @@ api: - path: / pathType: Prefix tls: [] - # - hosts: - # - pro-api.example.com # secretName: secret.tls + + # @param api.pod.replicaCount A replica count for the pod. + # @param api.pod.imagePullSecrets Kubernetes image pull secrets. + # @param api.pod.nameOverride Base name to use in all the Kubernetes entities deployed by this chart. + # @param api.pod.fullnameOverride Base fullname to use in all the Kubernetes entities deployed by this chart. + # @param api.pod.nodeSelector Kubernetes [node selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector). + # @param api.pod.affinity Kubernetes pod [affinity settings](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity). + # @param api.pod.priorityClassName Kubernetes [pod priority](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/). + # @param api.pod.terminationGracePeriodSeconds Kubernetes [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/). Should be at least 300 seconds + # @param api.pod.tolerations Kubernetes [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) settings. + # @param api.pod.podAnnotations Kubernetes [pod annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). + # @param api.pod.podLabels Kubernetes [pod labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param api.pod.annotations Kubernetes [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). + # @param api.pod.labels Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param api.pod.revisionHistoryLimit Revision history limit (used for [rolling back](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) a deployment). + # @extra api.pod.resources **Limits for the application service** + # @param api.pod.resources.requests.cpu A CPU request. + # @param api.pod.resources.requests.memory A memory request. + # @param api.pod.resources.limits.cpu A CPU limit. + # @param api.pod.resources.limits.memory A memory limit. + # @param api.pod.strategy.type Type of Kubernetes deployment. Can be `Recreate` or `RollingUpdate`. + # @param api.pod.strategy.rollingUpdate.maxUnavailable Maximum number of pods that can be created over the desired number of pods when doing [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment). + # @param api.pod.strategy.rollingUpdate.maxSurge Maximum number of pods that can be unavailable during the [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment) process. pod: - appName: pro-api replicaCount: 2 imagePullSecrets: [] nameOverride: '' @@ -124,6 +79,13 @@ api: rollingUpdate: maxUnavailable: 0 maxSurge: 1 + + # @param api.vpa.enabled If VPA is enabled for the service. + # @param api.vpa.updateMode VPA [update mode](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start). + # @param api.vpa.minAllowed.cpu Lower limit for the number of CPUs to which the autoscaler can scale down. + # @param api.vpa.minAllowed.memory Lower limit for the RAM size to which the autoscaler can scale down. + # @param api.vpa.maxAllowed.cpu Upper limit for the number of CPUs to which the autoscaler can scale up. + # @param api.vpa.maxAllowed.memory Upper limit for the RAM size to which the autoscaler can scale up. vpa: enabled: false updateMode: Auto @@ -133,6 +95,13 @@ api: maxAllowed: cpu: 1 memory: 1024M + + # @param api.service.annotations Kubernetes [service annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) + # @param api.service.labels Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param api.service.type Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). + # @param api.service.port PRO API service port. + # @param api.service.serviceAccount Kubernetes service account + # @param api.service.serviceAccountOverride The name of an existing custom service account. If specified, the services in the chart will use this existing service account. If not specified, a new service account will be created and used with the name from the variable `api.serviceAccount`. service: annotations: {} labels: {} @@ -140,6 +109,34 @@ api: port: 80 serviceAccount: runner serviceAccountOverride: '' + + # @param api.settings.licenseKey License key. **Required** + # @param api.settings.tempPath Path to directory used for temp data + # @param api.settings.allowAnyOrigin Cors policy: allow any origin to perform requests to pro-api service + # @skip api.settings.logEsQueries + # @skip api.settings.debug + # @skip api.settings.env + # @skip api.settings.filterByZoneCodes + # @skip api.settings.esDataCentersCount + # @extra api.settings.logging Logging settings + # @param api.settings.logging.format Log message format, possible options: 'default' - compact json, 'renderedCompactJson' - rendered json format, 'simple' - plain text + # @param api.settings.logging.targets Collection of logging targets divided by comma. Currently only 'console' and 'database' are supported. Console is used by default (no need to specify). + # @extra api.settings.rateLimiter rate limiter settings + # @param api.settings.rateLimiter.requestsLimit max number of requests from one user during time window (0 means rate limiter is disabled) + # @param api.settings.rateLimiter.windowSizeInSeconds the size of time windows to count and limit incoming requests + # @skip api.settings.localCache.enabled + # @skip api.settings.localCache.trackStatistics + # @skip api.settings.openApi.servers + # @param api.settings.auth.type Authentication type: 'none' - disabled, 'openid10' - [OpenId 1.0 / OAuth 2.0 authentication protocol](https://openid.net/specs/openid-connect-core-1_0.html), 'urbi' - urbi authentication protocol + # @param api.settings.auth.url API URL of authentication service. Example: `http(s)://keycloak.ingress.host` + # @param api.settings.auth.userInfoEndpoint The [UserInfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). Example: `realms/URBI_Pro/protocol/openid-connect/userinfo` + # @param api.settings.auth.wellKnownConfigEndpoint The [Well-Known Config endpoint](https://openid.net/specs/openid-connect-discovery-1_0.html). Example: `realms/URBI_Pro/.well-known/openid-configuration` + # @param api.settings.auth.apiKey Secret API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `4230b288-301e-4ec6-82c6-db6a8a72c2af` + # @skip api.settings.auth.autoRegisterUsers + # @param api.settings.auth.turnOffCertValidation Turn off certificate validation for auth.url + # @param api.settings.auth.shareKeys Secret keys for creating and validating shared links. Must contain at least 32 characters. All keys are used for validation. The last one is used for creation. Example: `m7nShlX1a8+IqE9ZcDqRCVjlhEud850ucT0av9bS+tcMTwIwUOUqpNikM+G8teDR` + # @param api.settings.backgroundJobs.enableUserAssetsImporter If user data importer job is enabled for the service. + # @param api.settings.backgroundJobs.enableAssetsStreaming If the streaming data processing job is enabled for the service. settings: licenseKey: '' tempPath: /tmp @@ -160,43 +157,39 @@ api: trackStatistics: false openApi: servers: [] - enableUserAssetsImporter: true - enableAssetsStreaming: false auth: type: none url: '' userInfoEndpoint: '' wellKnownConfigEndpoint: '' apiKey: '' - permissionsApiKey: '' autoRegisterUsers: true turnOffCertValidation: false shareKeys: [] - + backgroundJobs: + enableUserAssetsImporter: true + enableAssetsStreaming: false + layerGeneration: + isochroneLayerMaxPointsCount: 500 # @section Permissions API configuration & settings -# @skip permissions.image -# @extra Ingress settings -# @param permissions.ingress.enabled If Ingress is enabled for the service. -# @param permissions.ingress.className Name of the Ingress controller class. -# @param permissions.ingress.hosts[0].host Hostname for the Ingress service. -# @param permissions.ingress.hosts[0].paths[0].path Path of the host for the Ingress service. -# @param permissions.ingress.hosts[0].paths[0].pathType Type of the path for the Ingress service. -# @param permissions.ingress.tls TLS configuration -# @skip permissions.pod -# @skip permissions.service -# @extra Permissions API settings -# @skip permissions.settings.host -# @param permissions.settings.enabled If permissionsApi is enabled for the service. -# @skip permissions.settings.localCache.enabled -# @skip permissions.settings.localCache.trackStatistics - permissions: + + # @param permissions.image.repository Repository + # @param permissions.image.tag Tag + # @param permissions.image.pullPolicy Pull Policy image: repository: 2gis-on-premise/pro-permissions-api - tag: 1.35.0 + tag: 1.40.0 pullPolicy: IfNotPresent + + # @param permissions.ingress.enabled If Ingress is enabled for the service + # @param permissions.ingress.className Name of the Ingress controller class + # @param permissions.ingress.hosts[0].host Hostname for the Ingress service + # @param permissions.ingress.hosts[0].paths[0].path Path of the host for the Ingress service + # @param permissions.ingress.hosts[0].paths[0].pathType Type of the path for the Ingress service + # @param permissions.ingress.tls TLS configuration ingress: enabled: false className: nginx @@ -206,9 +199,25 @@ permissions: - path: / pathType: Prefix tls: [] - # - hosts: - # - pro-permissions-api.example.com # secretName: secret.tls + + # @param permissions.pod.replicaCount A replica count for the pod. + # @param permissions.pod.imagePullSecrets Kubernetes image pull secrets. + # @param permissions.pod.nodeSelector Kubernetes [node selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector). + # @param permissions.pod.affinity Kubernetes pod [affinity settings](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity). + # @param permissions.pod.priorityClassName Kubernetes [pod priority](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/). + # @param permissions.pod.terminationGracePeriodSeconds Kubernetes [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/). Should be at least 300 seconds + # @param permissions.pod.tolerations Kubernetes [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) settings. + # @param permissions.pod.podAnnotations Kubernetes [pod annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). + # @param permissions.pod.podLabels Kubernetes [pod labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param permissions.pod.annotations Kubernetes [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). + # @param permissions.pod.labels Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param permissions.pod.revisionHistoryLimit Revision history limit (used for [rolling back](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) a deployment). + # @extra permissions.pod.resources **Limits for the application service** + # @param permissions.pod.resources.requests.cpu A CPU request. + # @param permissions.pod.resources.requests.memory A memory request. + # @param permissions.pod.resources.limits.cpu A CPU limit. + # @param permissions.pod.resources.limits.memory A memory limit. pod: replicaCount: 1 imagePullSecrets: [] @@ -229,18 +238,146 @@ permissions: limits: cpu: 1 memory: 1G + + # @param permissions.service.annotations Kubernetes [service annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) + # @param permissions.service.labels Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param permissions.service.type Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). + # @param permissions.service.port PRO API service port. service: annotations: {} labels: {} type: ClusterIP port: 80 + + # @skip permissions.settings.host + # @param permissions.settings.enabled If permissionsApi is enabled for the service. + # @skip permissions.settings.localCache.enabled + # @skip permissions.settings.localCache.trackStatistics + # @param permissions.settings.auth.apiKey Secret Permissions API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `c7d74870-ec28-4543-b408-b49bfed84399` settings: host: '' enabled: false localCache: enabled: true trackStatistics: false + auth: + apiKey: '' + +# @section Tasks API configuration & settings +# @skip tasks + +tasks: + + # @param tasks.image.repository Repository + # @param tasks.image.tag Tag + # @param tasks.image.pullPolicy Pull Policy + image: + repository: 2gis-on-premise/pro-tasks-api + tag: 1.40.0 + pullPolicy: IfNotPresent + # @param tasks.ingress.enabled If Ingress is enabled for the service + # @param tasks.ingress.className Name of the Ingress controller class + # @param tasks.ingress.hosts[0].host Hostname for the Ingress service + # @param tasks.ingress.hosts[0].paths[0].path Path of the host for the Ingress service + # @param tasks.ingress.hosts[0].paths[0].pathType Type of the path for the Ingress service + # @param tasks.ingress.tls TLS configuration + ingress: + enabled: false + className: nginx + hosts: + - host: pro-tasks-api.example.com + paths: + - path: / + pathType: Prefix + tls: [] + # secretName: secret.tls + + # @param tasks.pod.replicaCount A replica count for the pod. + # @param tasks.pod.imagePullSecrets Kubernetes image pull secrets. + # @param tasks.pod.nodeSelector Kubernetes [node selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector). + # @param tasks.pod.affinity Kubernetes pod [affinity settings](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity). + # @param tasks.pod.priorityClassName Kubernetes [pod priority](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/). + # @param tasks.pod.terminationGracePeriodSeconds Kubernetes [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/). Should be at least 300 seconds + # @param tasks.pod.tolerations Kubernetes [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) settings. + # @param tasks.pod.podAnnotations Kubernetes [pod annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). + # @param tasks.pod.podLabels Kubernetes [pod labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param tasks.pod.annotations Kubernetes [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). + # @param tasks.pod.labels Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param tasks.pod.revisionHistoryLimit Revision history limit (used for [rolling back](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) a deployment). + # @extra tasks.pod.resources **Limits for the application service** + # @param tasks.pod.resources.requests.cpu A CPU request. + # @param tasks.pod.resources.requests.memory A memory request. + # @param tasks.pod.resources.limits.cpu A CPU limit. + # @param tasks.pod.resources.limits.memory A memory limit. + # @param tasks.pod.strategy.type Type of Kubernetes deployment. Can be `Recreate` or `RollingUpdate`. + # @param tasks.pod.strategy.rollingUpdate.maxUnavailable Maximum number of pods that can be created over the desired number of pods when doing [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment). + # @param tasks.pod.strategy.rollingUpdate.maxSurge Maximum number of pods that can be unavailable during the [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment) process. + pod: + replicaCount: 1 + imagePullSecrets: [] + nodeSelector: {} + affinity: {} + priorityClassName: '' + terminationGracePeriodSeconds: 60 + tolerations: [] + podAnnotations: {} + podLabels: {} + annotations: {} + labels: {} + revisionHistoryLimit: 3 + resources: + requests: + cpu: 400m + memory: 256M + limits: + cpu: 1 + memory: 1024M + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 0 + maxSurge: 1 + + # @param tasks.vpa.enabled If VPA is enabled for the service. + # @param tasks.vpa.updateMode VPA [update mode](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start). + # @param tasks.vpa.minAllowed.cpu Lower limit for the number of CPUs to which the autoscaler can scale down. + # @param tasks.vpa.minAllowed.memory Lower limit for the RAM size to which the autoscaler can scale down. + # @param tasks.vpa.maxAllowed.cpu Upper limit for the number of CPUs to which the autoscaler can scale up. + # @param tasks.vpa.maxAllowed.memory Upper limit for the RAM size to which the autoscaler can scale up. + vpa: + enabled: false + updateMode: Auto + minAllowed: + cpu: 400m + memory: 256M + maxAllowed: + cpu: 1 + memory: 1024M + + # @param tasks.service.annotations Kubernetes [service annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) + # @param tasks.service.labels Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). + # @param tasks.service.type Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). + # @param tasks.service.port Tasks API service port. + service: + annotations: {} + labels: {} + type: ClusterIP + port: 80 + + # @param tasks.settings.enabled If Tasks API is disabled it will not be deployed to k8s + # @skip tasks.settings.env + # @param tasks.settings.tempPath Path to directory used for temp data + # @extra tasks.settings.logging Logging settings + # @param tasks.settings.logging.format Log message format, possible options: 'default' - compact json, 'renderedCompactJson' - rendered json format, 'simple' - plain text + # @param tasks.settings.logging.targets Collection of logging targets divided by comma. Currently only 'console' and 'database' are supported. Console is used by default (no need to specify). + settings: + enabled: false + env: '' + tempPath: /tmp + logging: + format: simple + targets: '' # @section asset importer settings @@ -271,7 +408,7 @@ permissions: assetImporter: appName: asset-importer repository: 2gis-on-premise/pro-importer - tag: 1.35.0 + tag: 1.40.0 schedule: 0 18 * * * backoffLimit: 2 successfulJobsHistoryLimit: 3 @@ -303,7 +440,7 @@ assetImporter: assetPreparer: appName: asset-preparer repository: 2gis-on-premise/pro-importer - tag: 1.35.0 + tag: 1.40.0 schedule: 0 16 * * 6 backoffLimit: 2 successfulJobsHistoryLimit: 1 @@ -317,6 +454,7 @@ assetPreparer: memory: 512M enabled: true settings: + files: '' maxParallelJobs: 1 @@ -398,6 +536,7 @@ postgres: # @param kafka.assetDataTopic.name Kafka topic name. # @skip kafka.permissionsTopic # @param kafka.refreshAssetsIntervalMinutes Refresh interval for reading streaming assets settings in minutes. +# @param kafka.useReplicaTopics Use topic replica when using multiple kafka clusters. Each topic in the kafka settings must have a corresponding ".replica" topic kafka: bootstrapServers: '' @@ -419,6 +558,7 @@ kafka: name: '' readerGroupId: '' refreshAssetsIntervalMinutes: 60 + useReplicaTopics: false # @section ElasticSearch settings (supported version 7.x) @@ -507,6 +647,7 @@ license: search: url: '' + # @skip tileGen tileGen: From 29c6593ce698e3026e872d3b392e85267bbb8357 Mon Sep 17 00:00:00 2001 From: "ar.polyakov" Date: Tue, 1 Oct 2024 14:25:57 +0300 Subject: [PATCH 2/9] [PRO-6241] add changes log --- Breaking-Changes.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Breaking-Changes.md b/Breaking-Changes.md index 5663b344b..ec09959b7 100644 --- a/Breaking-Changes.md +++ b/Breaking-Changes.md @@ -1,5 +1,21 @@ # 2GIS On-Premise Breaking-Changes +## [1.40.0] + +### pro-api +- set host pro-api.example.com +- remove appName from api.pod +- add section backgroundJobs to api.settings +- api.settings.enableUserAssetsImporter renamed to api.settings.backgroundJobs.enableUserAssetsImporter +- api.settings.enableAssetsStreaming renamed to api.settings.backgroundJobs.enableAssetsStreaming +- remove api.settings.auth.permissionsApiKey +- add section layerGeneration to api.settings +- add api.settings.layerGeneration.isochroneLayerMaxPointsCount +- add permissions.settings.auth.apiKey +- add section tasks by new tasks service +- add assetPreparer.settings.files +- add kafka.useReplicaTopics + ## [1.29.0] ### mapgl-js-api From 7be02b046cdf31374d95017f49fe7f592a551709 Mon Sep 17 00:00:00 2001 From: "ar.polyakov" Date: Thu, 3 Oct 2024 08:45:35 +0300 Subject: [PATCH 3/9] [PRO-6241] remove tasks service --- Breaking-Changes.md | 1 - charts/pro-api/templates/_helpers.tpl | 18 --- charts/pro-api/templates/deployment.yaml | 6 +- .../templates/permissions-api-deployment.yaml | 6 +- .../templates/tasks-api/deployment.yaml | 148 ------------------ .../pro-api/templates/tasks-api/ingress.yaml | 41 ----- .../pro-api/templates/tasks-api/service.yaml | 25 --- charts/pro-api/templates/tasks-api/vpa.yaml | 28 ---- charts/pro-api/values.yaml | 115 -------------- 9 files changed, 6 insertions(+), 382 deletions(-) delete mode 100644 charts/pro-api/templates/tasks-api/deployment.yaml delete mode 100644 charts/pro-api/templates/tasks-api/ingress.yaml delete mode 100644 charts/pro-api/templates/tasks-api/service.yaml delete mode 100644 charts/pro-api/templates/tasks-api/vpa.yaml diff --git a/Breaking-Changes.md b/Breaking-Changes.md index ec09959b7..e9eb62c65 100644 --- a/Breaking-Changes.md +++ b/Breaking-Changes.md @@ -12,7 +12,6 @@ - add section layerGeneration to api.settings - add api.settings.layerGeneration.isochroneLayerMaxPointsCount - add permissions.settings.auth.apiKey -- add section tasks by new tasks service - add assetPreparer.settings.files - add kafka.useReplicaTopics diff --git a/charts/pro-api/templates/_helpers.tpl b/charts/pro-api/templates/_helpers.tpl index 35cc89636..109f0afed 100644 --- a/charts/pro-api/templates/_helpers.tpl +++ b/charts/pro-api/templates/_helpers.tpl @@ -15,10 +15,6 @@ {{ include "pro-api.name" . }}-permissions {{- end -}} -{{- define "pro-api.tasks-name" -}} -{{ include "pro-api.name" . }}-tasks -{{- end -}} - {{- define "pro-api.permissions-url" -}} {{- if .Values.permissions.settings.host -}} {{- .Values.permissions.settings.host -}} @@ -73,11 +69,6 @@ app.kubernetes.io/name: {{ include "pro-api.permissions-name" . }} app.kubernetes.io/instance: {{ .Release.Name }}-permissions {{- end -}} -{{- define "pro-api.tasksSelectorLabels" -}} -app.kubernetes.io/name: {{ include "pro-api.tasks-name" . }} -app.kubernetes.io/instance: {{ .Release.Name }}-tasks -{{- end -}} - {{- define "pro-api.labels" -}} helm.sh/chart: {{ include "pro-api.chart" . }} {{ include "pro-api.selectorLabels" . }} @@ -95,12 +86,3 @@ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} app.kubernetes.io/managed-by: {{ .Release.Service }} {{- end -}} - -{{- define "pro-api.tasksLabels" -}} -helm.sh/chart: {{ include "pro-api.chart" . }} -{{ include "pro-api.tasksSelectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} diff --git a/charts/pro-api/templates/deployment.yaml b/charts/pro-api/templates/deployment.yaml index fb4ad2de7..048b4510d 100644 --- a/charts/pro-api/templates/deployment.yaml +++ b/charts/pro-api/templates/deployment.yaml @@ -158,13 +158,13 @@ spec: value: "{{ .Values.api.settings.env }}" - name: Common__FilterByZoneCodes value: "{{ .Values.api.settings.filterByZoneCodes }}" - - name: Postgres__ConnectionString + - name: DB_CONNECTION_STRING value: {{ required "A valid .Values.postgres.connectionString entry required" $.Values.postgres.connectionString }} {{ if .Values.postgres.connectionStringReadonly }} - - name: Postgres__ConnectionStringReadonly + - name: DB_CONNECTION_STRING_READONLY value: "{{ .Values.postgres.connectionStringReadonly }}" {{ end }} - - name: Postgres__Password + - name: DB_CONNECTION_PWD valueFrom: secretKeyRef: key: dbConnectionPwd diff --git a/charts/pro-api/templates/permissions-api-deployment.yaml b/charts/pro-api/templates/permissions-api-deployment.yaml index ea4829f48..e1a6b40dd 100644 --- a/charts/pro-api/templates/permissions-api-deployment.yaml +++ b/charts/pro-api/templates/permissions-api-deployment.yaml @@ -112,11 +112,11 @@ spec: value: "{{ .Values.api.settings.allowAnyOrigin }}" - name: ENV value: "{{ .Values.api.settings.env }}" - - name: Postgres__ConnectionString + - name: DB_CONNECTION_STRING value: {{ required "A valid .Values.postgres.connectionString entry required" $.Values.postgres.connectionString }} - - name: Postgres__ConnectionStringReadonly + - name: DB_CONNECTION_STRING_READONLY value: "{{ .Values.postgres.connectionStringReadonly }}" - - name: Postgres__Password + - name: DB_CONNECTION_PWD valueFrom: secretKeyRef: key: dbConnectionPwd diff --git a/charts/pro-api/templates/tasks-api/deployment.yaml b/charts/pro-api/templates/tasks-api/deployment.yaml deleted file mode 100644 index f44afa91d..000000000 --- a/charts/pro-api/templates/tasks-api/deployment.yaml +++ /dev/null @@ -1,148 +0,0 @@ -{{ if .Values.tasks.settings.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "pro-api.tasks-name" . }} - {{- with .Values.tasks.pod.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "pro-api.tasksLabels" . | nindent 4 }} - {{- with .Values.tasks.pod.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - replicas: {{ .Values.tasks.pod.replicaCount }} - revisionHistoryLimit: {{ .Values.tasks.pod.revisionHistoryLimit }} - {{- if .Values.tasks.pod.strategy }} - strategy: - {{- toYaml .Values.tasks.pod.strategy | nindent 4 }} - {{- end }} - selector: - matchLabels: - {{- include "pro-api.tasksSelectorLabels" . | nindent 6 }} - template: - metadata: - annotations: - checksum/secret: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} - {{- with .Values.tasks.pod.podAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "pro-api.tasksLabels" . | nindent 8 }} - {{- with .Values.tasks.pod.podLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- with .Values.tasks.pod.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tasks.pod.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tasks.pod.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tasks.pod.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.tasks.pod.priorityClassName }} - priorityClassName: {{ .Values.tasks.pod.priorityClassName }} - {{- end }} - {{- with .Values.tasks.pod.podSecurityContext }} - securityContext: - {{- toYaml . | nindent 8 }} - {{- end }} - terminationGracePeriodSeconds: {{ .Values.tasks.pod.terminationGracePeriodSeconds }} - serviceAccountName: {{ include "pro-api.service-account-name" . }} - volumes: - - name: temp-volume - emptyDir: {} - containers: - - name: {{ include "pro-api.tasks-name" . }} - image: {{ required "A valid .Values.dgctlDockerRegistry entry required" $.Values.dgctlDockerRegistry }}/{{ .Values.tasks.image.repository }}:{{ .Values.tasks.image.tag }} - imagePullPolicy: {{ .Values.tasks.image.pullPolicy }} - ports: - - name: http - containerPort: 8082 - protocol: TCP - - name: management - containerPort: 8092 - protocol: TCP - volumeMounts: - - mountPath: "{{ .Values.tasks.settings.tempPath }}" - name: temp-volume - livenessProbe: - httpGet: - path: /health/live - port: management - failureThreshold: 5 - initialDelaySeconds: 5 - periodSeconds: 15 - successThreshold: 1 - timeoutSeconds: 5 - readinessProbe: - httpGet: - path: /health/ready - port: management - failureThreshold: 3 - initialDelaySeconds: 5 - periodSeconds: 5 - successThreshold: 1 - timeoutSeconds: 5 - startupProbe: - httpGet: - path: /health/live - port: management - failureThreshold: 20 - initialDelaySeconds: 5 - periodSeconds: 5 - timeoutSeconds: 5 - resources: - {{- toYaml .Values.tasks.pod.resources | nindent 12 }} - lifecycle: - preStop: - exec: - command: ["/bin/sh", "-c", "sleep 5"] - env: - - name: ENV - value: "{{ .Values.tasks.settings.env }}" - - name: TEMP_PATH - value: "{{ .Values.tasks.settings.tempPath }}" - - name: Postgres__ConnectionString - value: {{ required "A valid .Values.postgres.connectionString entry required" $.Values.postgres.connectionString }} - - name: Postgres__Password - valueFrom: - secretKeyRef: - key: dbConnectionPwd - name: {{ include "pro-api.name" . }}-secret - - name: Common__Logging__Format - value: "{{ .Values.tasks.settings.logging.format }}" - - name: Common__Logging__Targets - value: "{{ .Values.tasks.settings.logging.targets }}" - - name: Kafka__BootstrapServers - value: {{ $.Values.kafka.bootstrapServers }} - - name: Kafka__SecurityProtocol - value: {{ $.Values.kafka.securityProtocol }} - - name: Kafka__SaslMechanism - value: {{ $.Values.kafka.sasl.mechanism }} - - name: Kafka__SaslUsername - value: {{ $.Values.kafka.sasl.username }} - {{ if .Values.kafka.sasl.password }} - - name: Kafka__SaslPassword - valueFrom: - secretKeyRef: - key: kafkaSaslPassword - name: {{ include "pro-api.name" . }}-secret - {{ end }} - - name: Kafka__EventsTopicSettings__Name - value: {{ required "A valid .Values.kafka.eventsTopic.name entry required" $.Values.kafka.eventsTopic.name }} - - name: Kafka__UseReplicaTopics - value: "{{ $.Values.kafka.useReplicaTopics }}" - -{{- end }} diff --git a/charts/pro-api/templates/tasks-api/ingress.yaml b/charts/pro-api/templates/tasks-api/ingress.yaml deleted file mode 100644 index bf8361c19..000000000 --- a/charts/pro-api/templates/tasks-api/ingress.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- if and (.Values.tasks.ingress.enabled) (.Values.tasks.settings.enabled) }} -{{- $fullName := include "pro-api.tasks-name" . -}} -{{- $svcPort := .Values.tasks.service.port -}} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - {{- include "pro-api.tasksLabels" . | nindent 4 }} - {{- with .Values.tasks.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - ingressClassName: {{ .Values.tasks.ingress.className }} - {{- if .Values.tasks.ingress.tls }} - tls: - {{- range .Values.tasks.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.tasks.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - pathType: {{ .pathType }} - backend: - service: - name: {{ $fullName }} - port: - number: {{ $svcPort }} - {{- end }} - {{- end }} -{{- end }} diff --git a/charts/pro-api/templates/tasks-api/service.yaml b/charts/pro-api/templates/tasks-api/service.yaml deleted file mode 100644 index af05cb220..000000000 --- a/charts/pro-api/templates/tasks-api/service.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{ if .Values.tasks.settings.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ include "pro-api.tasks-name" . }} - {{- if .Values.tasks.service.annotations }} - annotations: - {{- toYaml .Values.tasks.service.annotations | nindent 4 }} - {{- end }} - labels: - {{- include "pro-api.tasksLabels" . | nindent 4 }} - {{- if .Values.tasks.service.labels }} - {{- toYaml .Values.tasks.service.labels | nindent 4 }} - {{- end }} -spec: - type: {{ .Values.tasks.service.type }} - ports: - - port: {{ .Values.tasks.service.port }} - targetPort: http - protocol: TCP - name: http - appProtocol: http - selector: - {{- include "pro-api.tasksSelectorLabels" . | nindent 4 }} -{{- end }} diff --git a/charts/pro-api/templates/tasks-api/vpa.yaml b/charts/pro-api/templates/tasks-api/vpa.yaml deleted file mode 100644 index a8cec1be3..000000000 --- a/charts/pro-api/templates/tasks-api/vpa.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- if and (.Values.tasks.vpa.enabled) (.Values.tasks.settings.enabled) }} -apiVersion: autoscaling.k8s.io/v1 -kind: VerticalPodAutoscaler -metadata: - name: {{ include "pro-api.tasks-name" . }} - labels: - {{- include "pro-api.tasksLabels" . | nindent 4 }} -spec: - targetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "pro-api.tasks-name" . }} - updatePolicy: - updateMode: {{ .Values.tasks.vpa.updateMode }} - resourcePolicy: - containerPolicies: - - containerName: {{ .Chart.Name }} - controlledValues: RequestsOnly - mode: Auto - {{- with .Values.tasks.vpa.minAllowed }} - minAllowed: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- with .Values.tasks.vpa.maxAllowed }} - maxAllowed: - {{- toYaml . | nindent 10 }} - {{- end }} -{{- end }} diff --git a/charts/pro-api/values.yaml b/charts/pro-api/values.yaml index 82f0dbc35..66c19e413 100644 --- a/charts/pro-api/values.yaml +++ b/charts/pro-api/values.yaml @@ -263,121 +263,6 @@ permissions: auth: apiKey: '' -# @section Tasks API configuration & settings -# @skip tasks - -tasks: - - # @param tasks.image.repository Repository - # @param tasks.image.tag Tag - # @param tasks.image.pullPolicy Pull Policy - image: - repository: 2gis-on-premise/pro-tasks-api - tag: 1.40.0 - pullPolicy: IfNotPresent - - # @param tasks.ingress.enabled If Ingress is enabled for the service - # @param tasks.ingress.className Name of the Ingress controller class - # @param tasks.ingress.hosts[0].host Hostname for the Ingress service - # @param tasks.ingress.hosts[0].paths[0].path Path of the host for the Ingress service - # @param tasks.ingress.hosts[0].paths[0].pathType Type of the path for the Ingress service - # @param tasks.ingress.tls TLS configuration - ingress: - enabled: false - className: nginx - hosts: - - host: pro-tasks-api.example.com - paths: - - path: / - pathType: Prefix - tls: [] - # secretName: secret.tls - - # @param tasks.pod.replicaCount A replica count for the pod. - # @param tasks.pod.imagePullSecrets Kubernetes image pull secrets. - # @param tasks.pod.nodeSelector Kubernetes [node selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector). - # @param tasks.pod.affinity Kubernetes pod [affinity settings](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity). - # @param tasks.pod.priorityClassName Kubernetes [pod priority](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/). - # @param tasks.pod.terminationGracePeriodSeconds Kubernetes [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/). Should be at least 300 seconds - # @param tasks.pod.tolerations Kubernetes [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) settings. - # @param tasks.pod.podAnnotations Kubernetes [pod annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). - # @param tasks.pod.podLabels Kubernetes [pod labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). - # @param tasks.pod.annotations Kubernetes [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). - # @param tasks.pod.labels Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). - # @param tasks.pod.revisionHistoryLimit Revision history limit (used for [rolling back](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) a deployment). - # @extra tasks.pod.resources **Limits for the application service** - # @param tasks.pod.resources.requests.cpu A CPU request. - # @param tasks.pod.resources.requests.memory A memory request. - # @param tasks.pod.resources.limits.cpu A CPU limit. - # @param tasks.pod.resources.limits.memory A memory limit. - # @param tasks.pod.strategy.type Type of Kubernetes deployment. Can be `Recreate` or `RollingUpdate`. - # @param tasks.pod.strategy.rollingUpdate.maxUnavailable Maximum number of pods that can be created over the desired number of pods when doing [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment). - # @param tasks.pod.strategy.rollingUpdate.maxSurge Maximum number of pods that can be unavailable during the [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment) process. - pod: - replicaCount: 1 - imagePullSecrets: [] - nodeSelector: {} - affinity: {} - priorityClassName: '' - terminationGracePeriodSeconds: 60 - tolerations: [] - podAnnotations: {} - podLabels: {} - annotations: {} - labels: {} - revisionHistoryLimit: 3 - resources: - requests: - cpu: 400m - memory: 256M - limits: - cpu: 1 - memory: 1024M - strategy: - type: RollingUpdate - rollingUpdate: - maxUnavailable: 0 - maxSurge: 1 - - # @param tasks.vpa.enabled If VPA is enabled for the service. - # @param tasks.vpa.updateMode VPA [update mode](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start). - # @param tasks.vpa.minAllowed.cpu Lower limit for the number of CPUs to which the autoscaler can scale down. - # @param tasks.vpa.minAllowed.memory Lower limit for the RAM size to which the autoscaler can scale down. - # @param tasks.vpa.maxAllowed.cpu Upper limit for the number of CPUs to which the autoscaler can scale up. - # @param tasks.vpa.maxAllowed.memory Upper limit for the RAM size to which the autoscaler can scale up. - vpa: - enabled: false - updateMode: Auto - minAllowed: - cpu: 400m - memory: 256M - maxAllowed: - cpu: 1 - memory: 1024M - - # @param tasks.service.annotations Kubernetes [service annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) - # @param tasks.service.labels Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). - # @param tasks.service.type Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). - # @param tasks.service.port Tasks API service port. - service: - annotations: {} - labels: {} - type: ClusterIP - port: 80 - - # @param tasks.settings.enabled If Tasks API is disabled it will not be deployed to k8s - # @skip tasks.settings.env - # @param tasks.settings.tempPath Path to directory used for temp data - # @extra tasks.settings.logging Logging settings - # @param tasks.settings.logging.format Log message format, possible options: 'default' - compact json, 'renderedCompactJson' - rendered json format, 'simple' - plain text - # @param tasks.settings.logging.targets Collection of logging targets divided by comma. Currently only 'console' and 'database' are supported. Console is used by default (no need to specify). - settings: - enabled: false - env: '' - tempPath: /tmp - logging: - format: simple - targets: '' # @section asset importer settings From 902b0034e4ea44dec323d46518ed7c54b95bfc40 Mon Sep 17 00:00:00 2001 From: "ar.polyakov" Date: Thu, 3 Oct 2024 12:09:29 +0300 Subject: [PATCH 4/9] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20PRO=20API=20=D0=B4=D0=BE=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D0=B8=201.35.0=20=D0=B8=20PRO=20UI=20=D0=B4?= =?UTF-8?q?=D0=BE=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=202.27.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Breaking-Changes.md | 2 +- charts/pro-api/values.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Breaking-Changes.md b/Breaking-Changes.md index e9eb62c65..f96602c8d 100644 --- a/Breaking-Changes.md +++ b/Breaking-Changes.md @@ -1,6 +1,6 @@ # 2GIS On-Premise Breaking-Changes -## [1.40.0] +## [1.41.0] ### pro-api - set host pro-api.example.com diff --git a/charts/pro-api/values.yaml b/charts/pro-api/values.yaml index 66c19e413..336cbf620 100644 --- a/charts/pro-api/values.yaml +++ b/charts/pro-api/values.yaml @@ -10,7 +10,7 @@ api: # @param api.image.pullPolicy Pull Policy image: repository: 2gis-on-premise/pro-api - tag: 1.40.0 + tag: 1.41.0 pullPolicy: IfNotPresent # @param api.ingress.enabled If Ingress is enabled for the service. @@ -181,7 +181,7 @@ permissions: # @param permissions.image.pullPolicy Pull Policy image: repository: 2gis-on-premise/pro-permissions-api - tag: 1.40.0 + tag: 1.41.0 pullPolicy: IfNotPresent # @param permissions.ingress.enabled If Ingress is enabled for the service @@ -293,7 +293,7 @@ permissions: assetImporter: appName: asset-importer repository: 2gis-on-premise/pro-importer - tag: 1.40.0 + tag: 1.41.0 schedule: 0 18 * * * backoffLimit: 2 successfulJobsHistoryLimit: 3 @@ -325,7 +325,7 @@ assetImporter: assetPreparer: appName: asset-preparer repository: 2gis-on-premise/pro-importer - tag: 1.40.0 + tag: 1.41.0 schedule: 0 16 * * 6 backoffLimit: 2 successfulJobsHistoryLimit: 1 From 072894db5b4dab0209df488622ff715a42db863b Mon Sep 17 00:00:00 2001 From: "ar.polyakov" Date: Fri, 4 Oct 2024 12:46:20 +0300 Subject: [PATCH 5/9] [PRO-6241] add description by isochroneLayerMaxPointsCount --- charts/pro-api/values.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/charts/pro-api/values.yaml b/charts/pro-api/values.yaml index 336cbf620..76c96e638 100644 --- a/charts/pro-api/values.yaml +++ b/charts/pro-api/values.yaml @@ -137,6 +137,7 @@ api: # @param api.settings.auth.shareKeys Secret keys for creating and validating shared links. Must contain at least 32 characters. All keys are used for validation. The last one is used for creation. Example: `m7nShlX1a8+IqE9ZcDqRCVjlhEud850ucT0av9bS+tcMTwIwUOUqpNikM+G8teDR` # @param api.settings.backgroundJobs.enableUserAssetsImporter If user data importer job is enabled for the service. # @param api.settings.backgroundJobs.enableAssetsStreaming If the streaming data processing job is enabled for the service. + # @param api.settings.layerGeneration.isochroneLayerMaxPointsCount If layer contains more points, isochrone is not avalible settings: licenseKey: '' tempPath: /tmp From 561674359f41421a9768d5b56b826d9685780167 Mon Sep 17 00:00:00 2001 From: "ar.polyakov" Date: Fri, 4 Oct 2024 14:40:58 +0300 Subject: [PATCH 6/9] [PRO-6241] add readme --- Breaking-Changes.md | 1 + charts/pro-api/Chart.yaml | 4 +- charts/pro-api/README.md | 221 +++++++++++++++++++++----------------- 3 files changed, 123 insertions(+), 103 deletions(-) diff --git a/Breaking-Changes.md b/Breaking-Changes.md index f96602c8d..47b71960d 100644 --- a/Breaking-Changes.md +++ b/Breaking-Changes.md @@ -3,6 +3,7 @@ ## [1.41.0] ### pro-api +- settings structure changed, settings are grouped by their services - set host pro-api.example.com - remove appName from api.pod - add section backgroundJobs to api.settings diff --git a/charts/pro-api/Chart.yaml b/charts/pro-api/Chart.yaml index 90c3b6c3e..0c0bec5f0 100644 --- a/charts/pro-api/Chart.yaml +++ b/charts/pro-api/Chart.yaml @@ -4,8 +4,8 @@ description: Geo API for getting geo data type: application -version: 1.28.2 -appVersion: 1.40.0 +version: 1.29.0 +appVersion: 1.41.0 maintainers: - name: 2gis diff --git a/charts/pro-api/README.md b/charts/pro-api/README.md index e32d76d93..4c39e4667 100644 --- a/charts/pro-api/README.md +++ b/charts/pro-api/README.md @@ -4,91 +4,108 @@ ### Geo API configuration & settings -| Name | Description | Value | -| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- | -| `Image` | settings | | -| `api.image.repository` | Repository | `2gis-on-premise/pro-api` | -| `api.image.tag` | Tag | `1.35.0` | -| `api.image.pullPolicy` | Pull Policy | `IfNotPresent` | -| `Ingress` | settings | | -| `api.ingress.enabled` | If Ingress is enabled for the service. | `false` | -| `api.ingress.className` | Name of the Ingress controller class. | `nginx` | -| `api.ingress.hosts[0].host` | Hostname for the Ingress service. | `pro-api.example.com` | -| `api.ingress.hosts[0].paths[0].path` | Path of the host for the Ingress service. | `/` | -| `api.ingress.hosts[0].paths[0].pathType` | Type of the path for the Ingress service. | `Prefix` | -| `api.ingress.tls` | TLS configuration | `[]` | -| `Pod` | settings | | -| `api.pod.appName` | Name of the service. | `pro-api` | -| `api.pod.replicaCount` | A replica count for the pod. | `2` | -| `api.pod.imagePullSecrets` | Kubernetes image pull secrets. | `[]` | -| `api.pod.nameOverride` | Base name to use in all the Kubernetes entities deployed by this chart. | `""` | -| `api.pod.fullnameOverride` | Base fullname to use in all the Kubernetes entities deployed by this chart. | `""` | -| `api.pod.nodeSelector` | Kubernetes [node selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector). | `{}` | -| `api.pod.affinity` | Kubernetes pod [affinity settings](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity). | `{}` | -| `api.pod.priorityClassName` | Kubernetes [pod priority](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/). | `""` | -| `api.pod.terminationGracePeriodSeconds` | Kubernetes [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/). Should be at least 300 seconds | `300` | -| `api.pod.tolerations` | Kubernetes [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) settings. | `[]` | -| `api.pod.podAnnotations` | Kubernetes [pod annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). | `{}` | -| `api.pod.podLabels` | Kubernetes [pod labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | -| `api.pod.annotations` | Kubernetes [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). | `{}` | -| `api.pod.labels` | Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | -| `api.pod.revisionHistoryLimit` | Revision history limit (used for [rolling back](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) a deployment). | `3` | -| `api.pod.resources` | **Limits for the application service** | | -| `api.pod.resources.requests.cpu` | A CPU request. | `400m` | -| `api.pod.resources.requests.memory` | A memory request. | `256M` | -| `api.pod.resources.limits.cpu` | A CPU limit. | `1` | -| `api.pod.resources.limits.memory` | A memory limit. | `1024M` | -| `api.pod.strategy.type` | Type of Kubernetes deployment. Can be `Recreate` or `RollingUpdate`. | `RollingUpdate` | -| `api.pod.strategy.rollingUpdate.maxUnavailable` | Maximum number of pods that can be created over the desired number of pods when doing [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment). | `0` | -| `api.pod.strategy.rollingUpdate.maxSurge` | Maximum number of pods that can be unavailable during the [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment) process. | `1` | -| `VPA` | settings [Vertical Pod Autoscaling](https://github.com/kubernetes/autoscaler/blob/master/vertical-pod-autoscaler/README.md) | | -| `api.vpa.enabled` | If VPA is enabled for the service. | `false` | -| `api.vpa.updateMode` | VPA [update mode](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start). | `Auto` | -| `api.vpa.minAllowed.cpu` | Lower limit for the number of CPUs to which the autoscaler can scale down. | `400m` | -| `api.vpa.minAllowed.memory` | Lower limit for the RAM size to which the autoscaler can scale down. | `256M` | -| `api.vpa.maxAllowed.cpu` | Upper limit for the number of CPUs to which the autoscaler can scale up. | `1` | -| `api.vpa.maxAllowed.memory` | Upper limit for the RAM size to which the autoscaler can scale up. | `1024M` | -| `Service` | settings | | -| `api.service.annotations` | Kubernetes [service annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) | `{}` | -| `api.service.labels` | Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | -| `api.service.type` | Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). | `ClusterIP` | -| `api.service.port` | PRO API service port. | `80` | -| `api.service.serviceAccount` | Kubernetes service account | `runner` | -| `api.service.serviceAccountOverride` | The name of an existing custom service account. If specified, the services in the chart will use this existing service account. If not specified, a new service account will be created and used with the name from the variable `api.serviceAccount`. | `""` | -| `Geo` | API settings | | -| `api.settings.licenseKey` | License key. **Required** | `""` | -| `api.settings.tempPath` | Path to directory used for temp data | `/tmp` | -| `api.settings.allowAnyOrigin` | Cors policy: allow any origin to perform requests to pro-api service | `false` | -| `api.settings.logging` | Logging settings | | -| `api.settings.logging.format` | Log message format, possible options: 'default' - compact json, 'renderedCompactJson' - rendered json format, 'simple' - plain text | `simple` | -| `api.settings.logging.targets` | Collection of logging targets divided by comma. Currently only 'console' and 'database' are supported. Console is used by default (no need to specify). | `""` | -| `api.settings.rateLimiter` | rate limiter settings | | -| `api.settings.rateLimiter.requestsLimit` | max number of requests from one user during time window (0 means rate limiter is disabled) | `1024` | -| `api.settings.rateLimiter.windowSizeInSeconds` | the size of time windows to count and limit incoming requests | `1` | -| `api.settings.enableUserAssetsImporter` | If user data importer job is enabled for the service. | `true` | -| `api.settings.enableAssetsStreaming` | If the streaming data processing job is enabled for the service. | `false` | -| `api.settings.auth.type` | Authentication type: 'none' - disabled, 'openid10' - [OpenId 1.0 / OAuth 2.0 authentication protocol](https://openid.net/specs/openid-connect-core-1_0.html), 'urbi' - urbi authentication protocol | `none` | -| `api.settings.auth.url` | API URL of authentication service. Example: `http(s)://keycloak.ingress.host` | `""` | -| `api.settings.auth.userInfoEndpoint` | The [UserInfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). Example: `realms/URBI_Pro/protocol/openid-connect/userinfo` | `""` | -| `api.settings.auth.wellKnownConfigEndpoint` | The [Well-Known Config endpoint](https://openid.net/specs/openid-connect-discovery-1_0.html). Example: `realms/URBI_Pro/.well-known/openid-configuration` | `""` | -| `api.settings.auth.apiKey` | Secret API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `4230b288-301e-4ec6-82c6-db6a8a72c2af` | `""` | -| `api.settings.auth.permissionsApiKey` | Secret Permissions API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `c7d74870-ec28-4543-b408-b49bfed84399` | `""` | -| `api.settings.auth.turnOffCertValidation` | Turn off certificate validation for auth.url | `false` | -| `api.settings.auth.shareKeys` | Secret keys for creating and validating shared links. Must contain at least 32 characters. All keys are used for validation. The last one is used for creation. Example: `m7nShlX1a8+IqE9ZcDqRCVjlhEud850ucT0av9bS+tcMTwIwUOUqpNikM+G8teDR` | `[]` | +| Name | Description | Value | +| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- | +| `api.appName` | Name of the service | `pro-api` | +| `api.image.repository` | Repository | `2gis-on-premise/pro-api` | +| `api.image.tag` | Tag | `1.41.0` | +| `api.image.pullPolicy` | Pull Policy | `IfNotPresent` | +| `api.ingress.enabled` | If Ingress is enabled for the service. | `false` | +| `api.ingress.className` | Name of the Ingress controller class. | `nginx` | +| `api.ingress.hosts[0].host` | Hostname for the Ingress service. | `pro-api.example.com` | +| `api.ingress.hosts[0].paths[0].path` | Path of the host for the Ingress service. | `/` | +| `api.ingress.hosts[0].paths[0].pathType` | Type of the path for the Ingress service. | `Prefix` | +| `api.ingress.tls` | TLS configuration | `[]` | +| `api.pod.replicaCount` | A replica count for the pod. | `2` | +| `api.pod.imagePullSecrets` | Kubernetes image pull secrets. | `[]` | +| `api.pod.nameOverride` | Base name to use in all the Kubernetes entities deployed by this chart. | `""` | +| `api.pod.fullnameOverride` | Base fullname to use in all the Kubernetes entities deployed by this chart. | `""` | +| `api.pod.nodeSelector` | Kubernetes [node selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector). | `{}` | +| `api.pod.affinity` | Kubernetes pod [affinity settings](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity). | `{}` | +| `api.pod.priorityClassName` | Kubernetes [pod priority](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/). | `""` | +| `api.pod.terminationGracePeriodSeconds` | Kubernetes [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/). Should be at least 300 seconds | `300` | +| `api.pod.tolerations` | Kubernetes [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) settings. | `[]` | +| `api.pod.podAnnotations` | Kubernetes [pod annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). | `{}` | +| `api.pod.podLabels` | Kubernetes [pod labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | +| `api.pod.annotations` | Kubernetes [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). | `{}` | +| `api.pod.labels` | Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | +| `api.pod.revisionHistoryLimit` | Revision history limit (used for [rolling back](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) a deployment). | `3` | +| `api.pod.resources` | **Limits for the application service** | | +| `api.pod.resources.requests.cpu` | A CPU request. | `400m` | +| `api.pod.resources.requests.memory` | A memory request. | `256M` | +| `api.pod.resources.limits.cpu` | A CPU limit. | `1` | +| `api.pod.resources.limits.memory` | A memory limit. | `1024M` | +| `api.pod.strategy.type` | Type of Kubernetes deployment. Can be `Recreate` or `RollingUpdate`. | `RollingUpdate` | +| `api.pod.strategy.rollingUpdate.maxUnavailable` | Maximum number of pods that can be created over the desired number of pods when doing [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment). | `0` | +| `api.pod.strategy.rollingUpdate.maxSurge` | Maximum number of pods that can be unavailable during the [rolling update](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment) process. | `1` | +| `api.vpa.enabled` | If VPA is enabled for the service. | `false` | +| `api.vpa.updateMode` | VPA [update mode](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start). | `Auto` | +| `api.vpa.minAllowed.cpu` | Lower limit for the number of CPUs to which the autoscaler can scale down. | `400m` | +| `api.vpa.minAllowed.memory` | Lower limit for the RAM size to which the autoscaler can scale down. | `256M` | +| `api.vpa.maxAllowed.cpu` | Upper limit for the number of CPUs to which the autoscaler can scale up. | `1` | +| `api.vpa.maxAllowed.memory` | Upper limit for the RAM size to which the autoscaler can scale up. | `1024M` | +| `api.service.annotations` | Kubernetes [service annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) | `{}` | +| `api.service.labels` | Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | +| `api.service.type` | Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). | `ClusterIP` | +| `api.service.port` | PRO API service port. | `80` | +| `api.service.serviceAccount` | Kubernetes service account | `runner` | +| `api.service.serviceAccountOverride` | The name of an existing custom service account. If specified, the services in the chart will use this existing service account. If not specified, a new service account will be created and used with the name from the variable `api.serviceAccount`. | `""` | +| `api.settings.licenseKey` | License key. **Required** | `""` | +| `api.settings.tempPath` | Path to directory used for temp data | `/tmp` | +| `api.settings.allowAnyOrigin` | Cors policy: allow any origin to perform requests to pro-api service | `false` | +| `api.settings.logging` | Logging settings | | +| `api.settings.logging.format` | Log message format, possible options: 'default' - compact json, 'renderedCompactJson' - rendered json format, 'simple' - plain text | `simple` | +| `api.settings.logging.targets` | Collection of logging targets divided by comma. Currently only 'console' and 'database' are supported. Console is used by default (no need to specify). | `""` | +| `api.settings.rateLimiter` | rate limiter settings | | +| `api.settings.rateLimiter.requestsLimit` | max number of requests from one user during time window (0 means rate limiter is disabled) | `1024` | +| `api.settings.rateLimiter.windowSizeInSeconds` | the size of time windows to count and limit incoming requests | `1` | +| `api.settings.auth.type` | Authentication type: 'none' - disabled, 'openid10' - [OpenId 1.0 / OAuth 2.0 authentication protocol](https://openid.net/specs/openid-connect-core-1_0.html), 'urbi' - urbi authentication protocol | `none` | +| `api.settings.auth.url` | API URL of authentication service. Example: `http(s)://keycloak.ingress.host` | `""` | +| `api.settings.auth.userInfoEndpoint` | The [UserInfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). Example: `realms/URBI_Pro/protocol/openid-connect/userinfo` | `""` | +| `api.settings.auth.wellKnownConfigEndpoint` | The [Well-Known Config endpoint](https://openid.net/specs/openid-connect-discovery-1_0.html). Example: `realms/URBI_Pro/.well-known/openid-configuration` | `""` | +| `api.settings.auth.apiKey` | Secret API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `4230b288-301e-4ec6-82c6-db6a8a72c2af` | `""` | +| `api.settings.auth.turnOffCertValidation` | Turn off certificate validation for auth.url | `false` | +| `api.settings.auth.shareKeys` | Secret keys for creating and validating shared links. Must contain at least 32 characters. All keys are used for validation. The last one is used for creation. Example: `m7nShlX1a8+IqE9ZcDqRCVjlhEud850ucT0av9bS+tcMTwIwUOUqpNikM+G8teDR` | `[]` | +| `api.settings.backgroundJobs.enableUserAssetsImporter` | If user data importer job is enabled for the service. | `true` | +| `api.settings.backgroundJobs.enableAssetsStreaming` | If the streaming data processing job is enabled for the service. | `false` | +| `api.settings.layerGeneration.isochroneLayerMaxPointsCount` | If layer contains more points, isochrone is not avalible | `500` | ### Permissions API configuration & settings -| Name | Description | Value | -| ------------------------------------------------ | --------------------------------------------- | --------------------------------- | -| `Ingress` | settings | | -| `permissions.ingress.enabled` | If Ingress is enabled for the service. | `false` | -| `permissions.ingress.className` | Name of the Ingress controller class. | `nginx` | -| `permissions.ingress.hosts[0].host` | Hostname for the Ingress service. | `pro-permissions-api.example.com` | -| `permissions.ingress.hosts[0].paths[0].path` | Path of the host for the Ingress service. | `/` | -| `permissions.ingress.hosts[0].paths[0].pathType` | Type of the path for the Ingress service. | `Prefix` | -| `permissions.ingress.tls` | TLS configuration | `[]` | -| `Permissions` | API settings | | -| `permissions.settings.enabled` | If permissionsApi is enabled for the service. | `false` | +| Name | Description | Value | +| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | +| `permissions.image.repository` | Repository | `2gis-on-premise/pro-permissions-api` | +| `permissions.image.tag` | Tag | `1.41.0` | +| `permissions.image.pullPolicy` | Pull Policy | `IfNotPresent` | +| `permissions.ingress.enabled` | If Ingress is enabled for the service | `false` | +| `permissions.ingress.className` | Name of the Ingress controller class | `nginx` | +| `permissions.ingress.hosts[0].host` | Hostname for the Ingress service | `pro-permissions-api.example.com` | +| `permissions.ingress.hosts[0].paths[0].path` | Path of the host for the Ingress service | `/` | +| `permissions.ingress.hosts[0].paths[0].pathType` | Type of the path for the Ingress service | `Prefix` | +| `permissions.ingress.tls` | TLS configuration | `[]` | +| `permissions.pod.replicaCount` | A replica count for the pod. | `1` | +| `permissions.pod.imagePullSecrets` | Kubernetes image pull secrets. | `[]` | +| `permissions.pod.nodeSelector` | Kubernetes [node selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector). | `{}` | +| `permissions.pod.affinity` | Kubernetes pod [affinity settings](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity). | `{}` | +| `permissions.pod.priorityClassName` | Kubernetes [pod priority](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/). | `""` | +| `permissions.pod.terminationGracePeriodSeconds` | Kubernetes [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/). Should be at least 300 seconds | `60` | +| `permissions.pod.tolerations` | Kubernetes [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) settings. | `[]` | +| `permissions.pod.podAnnotations` | Kubernetes [pod annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). | `{}` | +| `permissions.pod.podLabels` | Kubernetes [pod labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | +| `permissions.pod.annotations` | Kubernetes [annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/). | `{}` | +| `permissions.pod.labels` | Kubernetes [labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | +| `permissions.pod.revisionHistoryLimit` | Revision history limit (used for [rolling back](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) a deployment). | `3` | +| `permissions.pod.resources` | **Limits for the application service** | | +| `permissions.pod.resources.requests.cpu` | A CPU request. | `300m` | +| `permissions.pod.resources.requests.memory` | A memory request. | `256M` | +| `permissions.pod.resources.limits.cpu` | A CPU limit. | `1` | +| `permissions.pod.resources.limits.memory` | A memory limit. | `1G` | +| `permissions.service.annotations` | Kubernetes [service annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) | `{}` | +| `permissions.service.labels` | Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | +| `permissions.service.type` | Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). | `ClusterIP` | +| `permissions.service.port` | PRO API service port. | `80` | +| `permissions.settings.enabled` | If permissionsApi is enabled for the service. | `false` | +| `permissions.settings.auth.apiKey` | Secret Permissions API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `c7d74870-ec28-4543-b408-b49bfed84399` | `""` | ### asset importer settings @@ -96,7 +113,7 @@ | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | | `assetImporter.appName` | Data Import job name. | `asset-importer` | | `assetImporter.repository` | Docker Repository Image. | `2gis-on-premise/pro-importer` | -| `assetImporter.tag` | Docker image tag. | `1.35.0` | +| `assetImporter.tag` | Docker image tag. | `1.41.0` | | `assetImporter.schedule` | Import job schedule. | `0 18 * * *` | | `assetImporter.backoffLimit` | The number of [retries](https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy) before considering a Job as failed. | `2` | | `assetImporter.successfulJobsHistoryLimit` | How many completed and failed jobs should be kept. See [docs](https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#jobs-history-limits). | `3` | @@ -160,24 +177,25 @@ ### Kafka settings (supported version 2.7) -| Name | Description | Value | -| -------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------- | -| `kafka.bootstrapServers` | Kafka bootstrap servers. Format: 'host1:port1,host2:port2' | `""` | -| `kafka.securityProtocol` | Kafka security protocol. Supported options: SaslPlaintext. | `SaslPlaintext` | -| `kafka.sasl` | **Kafka sasl settings** (see [the documentation](https://kafka.apache.org/documentation/#security_sasl_config)) | | -| `kafka.sasl.mechanism` | Kafka sasl mechanism. Supported options: ScramSha512. | `ScramSha512` | -| `kafka.sasl.username` | Kafka sasl username. | `""` | -| `kafka.sasl.password` | Kafka sasl password. | `""` | -| `kafka.assetTopicsReaderGroupId` | Kafka consumer group for reading streaming assets data. | `""` | -| `kafka.importTasksTopic` | Kafka topic settings to run import tasks. | | -| `kafka.importTasksTopic.name` | Kafka topic name. | `""` | -| `kafka.importTasksTopic.readerGroupId` | Kafka consumer group for reading importing tasks. | `""` | -| `kafka.eventsTopic` | Kafka topic settings to manage events. | | -| `kafka.eventsTopic.name` | Kafka events topic name. **Required** | `""` | -| `kafka.eventsTopic.readerGroupId` | Kafka consumer group for reading events. **Required** | `""` | -| `kafka.assetDataTopic` | Kafka topic settings to manage asset data updates. | | -| `kafka.assetDataTopic.name` | Kafka topic name. | `""` | -| `kafka.refreshAssetsIntervalMinutes` | Refresh interval for reading streaming assets settings in minutes. | `60` | +| Name | Description | Value | +| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------- | +| `kafka.bootstrapServers` | Kafka bootstrap servers. Format: 'host1:port1,host2:port2' | `""` | +| `kafka.securityProtocol` | Kafka security protocol. Supported options: SaslPlaintext. | `SaslPlaintext` | +| `kafka.sasl` | **Kafka sasl settings** (see [the documentation](https://kafka.apache.org/documentation/#security_sasl_config)) | | +| `kafka.sasl.mechanism` | Kafka sasl mechanism. Supported options: ScramSha512. | `ScramSha512` | +| `kafka.sasl.username` | Kafka sasl username. | `""` | +| `kafka.sasl.password` | Kafka sasl password. | `""` | +| `kafka.assetTopicsReaderGroupId` | Kafka consumer group for reading streaming assets data. | `""` | +| `kafka.importTasksTopic` | Kafka topic settings to run import tasks. | | +| `kafka.importTasksTopic.name` | Kafka topic name. | `""` | +| `kafka.importTasksTopic.readerGroupId` | Kafka consumer group for reading importing tasks. | `""` | +| `kafka.eventsTopic` | Kafka topic settings to manage events. | | +| `kafka.eventsTopic.name` | Kafka events topic name. **Required** | `""` | +| `kafka.eventsTopic.readerGroupId` | Kafka consumer group for reading events. **Required** | `""` | +| `kafka.assetDataTopic` | Kafka topic settings to manage asset data updates. | | +| `kafka.assetDataTopic.name` | Kafka topic name. | `""` | +| `kafka.refreshAssetsIntervalMinutes` | Refresh interval for reading streaming assets settings in minutes. | `60` | +| `kafka.useReplicaTopics` | Use topic replica when using multiple kafka clusters. Each topic in the kafka settings must have a corresponding ".replica" topic | `false` | ### ElasticSearch settings (supported version 7.x) @@ -234,6 +252,7 @@ | ------------ | ------------------------------------------------------------------------------------------------ | ----- | | `search.url` | URL for [Search API](https://docs.2gis.com/en/on-premise/search). Example: http://search-api.svc | `""` | + ## Installing 1. Create a configuration file values-api.yaml and fill in all the required parameters according to the docs above. From 122a4907b56d6c9bca7a0899b07f7d2673f35ed1 Mon Sep 17 00:00:00 2001 From: "ar.polyakov" Date: Fri, 18 Oct 2024 10:10:10 +0300 Subject: [PATCH 7/9] [PRO-6241] comments --- Breaking-Changes.md | 8 ++++++++ charts/pro-api/values.yaml | 3 +++ 2 files changed, 11 insertions(+) diff --git a/Breaking-Changes.md b/Breaking-Changes.md index 47b71960d..7244a9313 100644 --- a/Breaking-Changes.md +++ b/Breaking-Changes.md @@ -16,6 +16,14 @@ - add assetPreparer.settings.files - add kafka.useReplicaTopics +## [1.30.0] + +### pro-api +- api.pod.appName renamed api.appName +- api.settings.enableUserAssetsImporter renamed to api.settings.backgroundJobs.enableUserAssetsImporter +- api.settings.enableAssetsStreaming renamed to api.settings.backgroundJobs.enableAssetsStreaming +- api.settings.auth.permissionsApiKey renamed permissions.settings.auth.apiKey + ## [1.29.0] ### mapgl-js-api diff --git a/charts/pro-api/values.yaml b/charts/pro-api/values.yaml index 76c96e638..fb7793152 100644 --- a/charts/pro-api/values.yaml +++ b/charts/pro-api/values.yaml @@ -28,6 +28,8 @@ api: - path: / pathType: Prefix tls: [] + # - hosts: + # - pro-api.example.com # secretName: secret.tls # @param api.pod.replicaCount A replica count for the pod. @@ -244,6 +246,7 @@ permissions: # @param permissions.service.labels Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). # @param permissions.service.type Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). # @param permissions.service.port PRO API service port. + # @extra servise is required when uathorization activated service: annotations: {} labels: {} From 8f52d27d0a900ab12fee5046db86ac2cfc037421 Mon Sep 17 00:00:00 2001 From: dbelyaev-nsk Date: Tue, 22 Oct 2024 11:45:13 +0700 Subject: [PATCH 8/9] upd README --- charts/pro-api/README.md | 2 +- charts/pro-api/values.yaml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/charts/pro-api/README.md b/charts/pro-api/README.md index 4c39e4667..be5f296af 100644 --- a/charts/pro-api/README.md +++ b/charts/pro-api/README.md @@ -104,7 +104,7 @@ | `permissions.service.labels` | Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). | `{}` | | `permissions.service.type` | Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). | `ClusterIP` | | `permissions.service.port` | PRO API service port. | `80` | -| `permissions.settings.enabled` | If permissionsApi is enabled for the service. | `false` | +| `permissions.settings.enabled` | Set to `true` if authorization is used | `false` | | `permissions.settings.auth.apiKey` | Secret Permissions API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `c7d74870-ec28-4543-b408-b49bfed84399` | `""` | ### asset importer settings diff --git a/charts/pro-api/values.yaml b/charts/pro-api/values.yaml index fb7793152..1b97a02a0 100644 --- a/charts/pro-api/values.yaml +++ b/charts/pro-api/values.yaml @@ -246,7 +246,6 @@ permissions: # @param permissions.service.labels Kubernetes [service labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/). # @param permissions.service.type Kubernetes [service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types). # @param permissions.service.port PRO API service port. - # @extra servise is required when uathorization activated service: annotations: {} labels: {} @@ -254,7 +253,7 @@ permissions: port: 80 # @skip permissions.settings.host - # @param permissions.settings.enabled If permissionsApi is enabled for the service. + # @param permissions.settings.enabled Set to `true` if authorization is used # @skip permissions.settings.localCache.enabled # @skip permissions.settings.localCache.trackStatistics # @param permissions.settings.auth.apiKey Secret Permissions API Key to perform authorized service actions, random string. Must be set if type not 'none'. Example: `c7d74870-ec28-4543-b408-b49bfed84399` From 4a667eb3e912e0aa8b19c9257ceaf7383f65e831 Mon Sep 17 00:00:00 2001 From: dbelyaev-nsk Date: Tue, 22 Oct 2024 11:48:02 +0700 Subject: [PATCH 9/9] fix BC --- Breaking-Changes.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/Breaking-Changes.md b/Breaking-Changes.md index 7244a9313..f90a78d90 100644 --- a/Breaking-Changes.md +++ b/Breaking-Changes.md @@ -1,21 +1,5 @@ # 2GIS On-Premise Breaking-Changes -## [1.41.0] - -### pro-api -- settings structure changed, settings are grouped by their services -- set host pro-api.example.com -- remove appName from api.pod -- add section backgroundJobs to api.settings -- api.settings.enableUserAssetsImporter renamed to api.settings.backgroundJobs.enableUserAssetsImporter -- api.settings.enableAssetsStreaming renamed to api.settings.backgroundJobs.enableAssetsStreaming -- remove api.settings.auth.permissionsApiKey -- add section layerGeneration to api.settings -- add api.settings.layerGeneration.isochroneLayerMaxPointsCount -- add permissions.settings.auth.apiKey -- add assetPreparer.settings.files -- add kafka.useReplicaTopics - ## [1.30.0] ### pro-api