diff --git a/config/custom-environment-variables.json b/config/custom-environment-variables.json index 971daa8..02d41be 100644 --- a/config/custom-environment-variables.json +++ b/config/custom-environment-variables.json @@ -49,7 +49,12 @@ "sslPaths": { "ca": "KAFKA_CA_PATH", "key": "KAFKA_KEY_PATH", - "cert": "KAFKA_CERT_PATH" + "cert": "KAFKA_CERT_PATkafH" + }, + "sasl": { + "mechanism": "KAFKA_SASL_MECHANISM", + "username": "KAFKA_SASL_USERNAME", + "password": "KAFKA_SASL_PASSWORD" } }, "kafkaConsumer": { diff --git a/helm/Chart.yaml b/helm/Chart.yaml index e0fd71e..3fa94af 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -2,9 +2,5 @@ apiVersion: v2 name: geocoding-enrichment description: A Helm chart for geocoding-enrichment service type: application -version: 1.4.0 -appVersion: 1.4.0 -dependencies: - - name: common - repository: oci://acrarolibotnonprod.azurecr.io/helm - version: 1.0.1 +version: 0.1.0 +appVersion: 0.1.0 \ No newline at end of file diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index c30b885..e38207b 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -1,3 +1,38 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "geocoding-enrichment.name" -}} +{{- default .Chart.Name | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Returns the tag of the chart. +*/}} +{{- define "geocoding-enrichment.tag" -}} +{{- default (printf "v%s" .Chart.AppVersion) .Values.image.tag }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "geocoding-enrichment.fullname" -}} +{{- $name := default .Chart.Name }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "geocoding-enrichment.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + {{/* Common labels */}} @@ -10,13 +45,6 @@ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} app.kubernetes.io/managed-by: {{ .Release.Service }} {{- end }} -{{/* -Returns the tag of the chart. -*/}} -{{- define "geocoding-enrichment.tag" -}} -{{- default (printf "v%s" .Chart.AppVersion) .Values.image.tag }} -{{- end }} - {{/* Selector labels */}} @@ -37,74 +65,47 @@ Returns the environment from global if exists or from the chart's values, defaul {{- end -}} {{/* -Returns the tracing url from global if exists or from the chart's values +Returns the cloud provider name from global if exists or from the chart's values, defaults to minikube */}} -{{- define "geocoding-enrichment.tracingUrl" -}} -{{- if .Values.global.tracing.url }} - {{- .Values.global.tracing.url -}} -{{- else if .Values.env.tracing.url -}} - {{- .Values.env.tracing.url -}} -{{- end -}} -{{- end -}} - -{{/* -Returns the tracing url from global if exists or from the chart's values -*/}} -{{- define "geocoding-enrichment.metricsUrl" -}} -{{- if .Values.global.metrics.url }} - {{- .Values.global.metrics.url -}} +{{- define "geocoding-enrichment.cloudProviderFlavor" -}} +{{- if .Values.global.cloudProvider.flavor }} + {{- .Values.global.cloudProvider.flavor -}} +{{- else if .Values.cloudProvider -}} + {{- .Values.cloudProvider.flavor | default "minikube" -}} {{- else -}} - {{- .Values.env.metrics.url -}} + {{ "minikube" }} {{- end -}} {{- end -}} {{/* -Return the proper image name +Returns the cloud provider docker registry url from global if exists or from the chart's values */}} -{{- define "geocoding-enrichment.image" -}} -{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }} +{{- define "geocoding-enrichment.cloudProviderDockerRegistryUrl" -}} +{{- if .Values.global.cloudProvider.dockerRegistryUrl }} + {{- .Values.global.cloudProvider.dockerRegistryUrl -}} +{{- else if .Values.cloudProvider -}} + {{- .Values.cloudProvider.dockerRegistryUrl -}} {{- end -}} - - -{{/* -Return the proper Docker Image Registry Secret Names -*/}} -{{- define "geocoding-enrichment.imagePullSecrets" -}} -{{ include "common.images.renderPullSecrets" (dict "images" (list .Values.image) "context" $) }} -{{- end -}} - -{{/* -Return the proper image pullPolicy -*/}} -{{- define "geocoding-enrichment.pullPolicy" -}} -{{ include "common.images.pullPolicy" (dict "imageRoot" .Values.image "global" .Values.global) }} {{- end -}} {{/* -Return the proper image deploymentFlavor -*/}} -{{- define "geocoding-enrichment.deploymentFlavor" -}} -{{ include "common.images.deploymentFlavor" (dict "imageRoot" .Values.image "global" .Values.global) }} -{{- end -}} - - -{{/* -Return the proper fully qualified app name +Returns the tracing url from global if exists or from the chart's values */}} -{{- define "geocoding-enrichment.fullname" -}} -{{ include "common.names.fullname" . }} +{{- define "geocoding-enrichment.tracingUrl" -}} +{{- if .Values.global.tracing.url }} + {{- .Values.global.tracing.url -}} +{{- else if .Values.cloudProvider -}} + {{- .Values.env.tracing.url -}} {{- end -}} - -{{/* -Return the proper chart name -*/}} -{{- define "geocoding-enrichment.name" -}} -{{ include "common.names.name" . }} {{- end -}} {{/* -Return the proper chart name +Returns the tracing url from global if exists or from the chart's values */}} -{{- define "geocoding-enrichment.chart" -}} -{{ include "common.names.chart" . }} +{{- define "geocoding-enrichment.metricsUrl" -}} +{{- if .Values.global.metrics.url }} + {{- .Values.global.metrics.url -}} +{{- else -}} + {{- .Values.env.metrics.url -}} {{- end -}} +{{- end -}} \ No newline at end of file diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml index 7f99b89..b0ec719 100644 --- a/helm/templates/configmap.yaml +++ b/helm/templates/configmap.yaml @@ -1,22 +1,47 @@ +{{- $chartName := include "geocoding-enrichment.name" . -}} {{- $tracingUrl := include "geocoding-enrichment.tracingUrl" . -}} {{- $metricsUrl := include "geocoding-enrichment.metricsUrl" . -}} {{- if .Values.enabled -}} apiVersion: v1 kind: ConfigMap metadata: - name: {{ printf "%s-configmap" (include "geocoding-enrichment.fullname" .) }} + name: {{ .Release.Name }}-{{ $chartName }}-configmap data: + NODE_TLS_REJECT_UNAUTHORIZED: "0" + KAFKAJS_NO_PARTITIONER_WARNING: "1" REQUEST_PAYLOAD_LIMIT: {{ .Values.env.requestPayloadLimit | quote }} RESPONSE_COMPRESSION_ENABLED: {{ .Values.env.responseCompressionEnabled | quote }} LOG_LEVEL: {{ .Values.env.logLevel | quote }} LOG_PRETTY_PRINT_ENABLED: {{ .Values.env.logPrettyPrintEnabled | quote }} - {{ if .Values.env.tracing.enabled }} + KAFKA_INPUT_TOPIC: {{ .Values.kafkaTopics.input | quote }} + KAFKA_CONSUMER_GROUP_ID: {{ .Values.kafkaConsumers.groupId | quote }} + {{- with .Values.kafka }} + KAFKA_BROKERS: {{ .brokers | quote }} + {{- if .sslAuth.enabled }} + KAFKA_ENABLE_SSL_AUTH: "true" + KAFKA_CA_PATH: {{ .sslAuth.certDir }}/{{ .sslAuth.caFileName }} + KAFKA_KEY_PATH: {{ .sslAuth.certDir }}/{{ .sslAuth.keyFileName }} + KAFKA_CERT_PATH: {{ .sslAuth.certDir }}/{{ .sslAuth.certFileName }} + {{- else }} + KAFKA_ENABLE_SSL_AUTH: "false" + {{- end }} + {{- if .sasl }} + KAFKA_SASL_MECHANISM: {{ .sasl.mechanism }} + {{- end }} + {{- end }} + USER_DATA_SERVICE_ENDPOINT: {{ .Values.application.userDataService.endpoint | quote }} + HEADER_PARAMS: {{ .Values.application.userDataService.headers | quote }} + {{- with .Values.elastic }} + ELASTIC_URL: {{ .node | quote }} + ELASTIC_INDEX: {{ .properties.index | quote }} + {{- end }} + {{- if .Values.env.tracing.enabled }} TELEMETRY_TRACING_ENABLED: 'true' TELEMETRY_TRACING_URL: {{ $tracingUrl }} - {{ end }} - {{ if .Values.env.metrics.enabled }} + TELEMETRY_TRACING_RATIO: {{ .Values.env.tracing.ratio | quote }} + {{- end }} + {{- if .Values.env.metrics.enabled }} TELEMETRY_METRICS_ENABLED: 'true' TELEMETRY_METRICS_URL: {{ $metricsUrl }} - {{ end }} - npm_config_cache: /tmp/ -{{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index c0e9326..5974482 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -1,19 +1,25 @@ {{- $releaseName := .Release.Name -}} {{- $chartName := include "geocoding-enrichment.name" . -}} +{{- $cloudProviderFlavor := include "geocoding-enrichment.cloudProviderFlavor" . -}} +{{- $cloudProviderDockerRegistryUrl := include "geocoding-enrichment.cloudProviderDockerRegistryUrl" . -}} +{{- $tag := include "geocoding-enrichment.tag" . -}} {{- if .Values.enabled -}} apiVersion: apps/v1 kind: Deployment metadata: - name: {{ printf "%s-deployment" (include "geocoding-enrichment.fullname" .) }} + name: {{ $releaseName }}-{{ $chartName }} labels: app: {{ $chartName }} component: {{ $chartName }} environment: {{ include "geocoding-enrichment.environment" . }} release: {{ $releaseName }} {{- include "geocoding-enrichment.labels" . | nindent 4 }} +{{- with .Values.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} spec: replicas: {{ .Values.replicaCount }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} selector: matchLabels: app: {{ $chartName }} @@ -27,89 +33,55 @@ spec: release: {{ $releaseName }} run: {{ $releaseName }}-{{ $chartName }} {{- include "geocoding-enrichment.selectorLabels" . | nindent 8 }} +{{- with .Values.podAnnotations }} annotations: - {{- if .Values.resetOnConfigChange }} - checksum/configmap: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - {{- end }} - {{- if .Values.podAnnotations }} - {{- toYaml .Values.podAnnotations | nindent 8 }} - {{- end }} +{{ toYaml . | indent 8 }} +{{- end }} spec: - {{- include "geocoding-enrichment.imagePullSecrets" . | nindent 6 }} + {{- if .Values.pullSecret }} + imagePullSecrets: + - name: {{ .Values.pullSecret }} + {{ end }} containers: - name: {{ $releaseName }}-{{ $chartName }}-deployment - image: {{ include "geocoding-enrichment.image" . }} - {{- if .Values.command }} - command: - {{- toYaml .Values.command | nindent 12 }} - {{- if .Values.args }} - args: - {{- toYaml .Values.args | nindent 12 }} + {{- with .Values.image }} + {{- if ne $cloudProviderFlavor "minikube" }} + image: {{ $cloudProviderDockerRegistryUrl }}/{{ .repository }}:{{ $tag }} + {{- else }} + image: {{ .repository }}:{{ $tag }} {{- end }} {{- end }} volumeMounts: - {{- if .Values.caSecretName }} - - mountPath: {{ printf "%s/%s" .Values.caPath .Values.caKey | quote }} - name: root-ca - subPath: {{ quote .Values.caKey }} - {{- end }} - {{- if .Values.extraVolumeMounts -}} - {{ toYaml .Values.extraVolumeMounts | nindent 12 }} + {{- if .Values.kafka.sslAuth.enabled }} + - name: cert-conf-kafka + mountPath: {{ .Values.kafka.sslAuth.certDir }} + readOnly: true {{- end }} env: - name: SERVER_PORT value: {{ .Values.env.targetPort | quote }} - {{- if .Values.caSecretName }} - - name: REQUESTS_CA_BUNDLE - value: {{ printf "%s/%s" .Values.caPath .Values.caKey | quote }} - - name: NODE_EXTRA_CA_CERTS - value: {{ printf "[%s/%s]" .Values.caPath .Values.caKey | quote }} - {{- end }} - {{- if .Values.extraEnvVars }} - {{- toYaml .Values.extraEnvVars | nindent 12 }} - {{- end }} envFrom: - configMapRef: - name: {{ printf "%s-configmap" (include "geocoding-enrichment.fullname" .) }} + name: {{ $releaseName }}-{{ $chartName }}-configmap + - secretRef: + name: {{ $releaseName }}-{{ $chartName }}-secret ports: - name: http containerPort: {{ .Values.env.targetPort }} protocol: {{ .Values.env.protocol }} - {{- if .Values.livenessProbe.enabled }} livenessProbe: - initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} - timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.livenessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.initialDelaySeconds }} httpGet: - path: {{ .Values.livenessProbe.path }} - port: {{ .Values.env.targetPort }} - {{- end }} - {{- if .Values.readinessProbe.enabled }} - readinessProbe: - initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} - timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.readinessProbe.failureThreshold }} - httpGet: - path: {{ .Values.readinessProbe.path }} - port: {{ .Values.env.targetPort }} - {{- end }} + path: /liveness + port: http {{- if .Values.resources.enabled }} resources: {{- toYaml .Values.resources.value | nindent 12 }} {{- end }} - {{- if .Values.sidecars }} - {{ tpl (toYaml .Values.sidecars) . | nindent 8 }} - {{- end }} volumes: - - name: nginx-config - configMap: - name: 'nginx-extra-configmap' - {{- if .Values.caSecretName }} - - name: root-ca - secret: - secretName: {{ .Values.caSecretName }} - {{- end }} - {{- if .Values.extraVolumes -}} - {{ tpl (toYaml .Values.extraVolumes) . | nindent 8 }} - {{- end }} -{{- end -}} + {{- if .Values.kafka.sslAuth.enabled }} + - name: cert-conf-kafka + secret: + secretName: {{ .Values.kafka.sslAuth.secretName }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml deleted file mode 100644 index cd3f5e5..0000000 --- a/helm/templates/ingress.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $releaseName := .Release.Name -}} -{{- $chartName := include "geocoding-enrichment.name" . -}} -{{- if and (.Values.enabled) (.Values.ingress.enabled) -}} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ $releaseName }}-{{ $chartName }}-ingress - annotations: - kubernetes.io/ingress.class: "nginx" - nginx.org/mergeable-ingress-type: "minion" - nginx.org/rewrites: 'serviceName={{ $releaseName }}-{{ $chartName }} rewrite=/' - nginx.org/location-snippets: | - if ($request_method = OPTIONS) { - return 204; - } - {{- if .Values.ingress.cors.enabled }} - add_header 'Access-Control-Allow-Origin' '{{- .Values.ingress.cors.origin -}}'; - add_header 'Access-Control-Max-Age' 3600; - add_header 'Access-Control-Expose-Headers' 'Content-Length'; - add_header 'Access-Control-Allow-Headers' '*'; - {{- end }} -spec: - rules: - - http: - paths: - - path: {{ .Values.ingress.path }} - pathType: Prefix - backend: - service: - name: {{ printf "%s-service" (include "geocoding-enrichment.fullname" .) }} - port: - number: {{ .Values.env.port }} - host: {{ .Values.ingress.host | quote }} -{{- end -}} diff --git a/helm/templates/route.yaml b/helm/templates/route.yaml deleted file mode 100644 index 604c683..0000000 --- a/helm/templates/route.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $releaseName := .Release.Name -}} -{{- $chartName := include "geocoding-enrichment.name" . -}} -{{- $cloudProviderFlavor := include "geocoding-enrichment.deploymentFlavor" . -}} -{{- if and (and (.Values.enabled) (eq $cloudProviderFlavor "openshift")) (.Values.route.enabled) -}} -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ $releaseName }}-{{ $chartName }}-route - annotations: - {{- if .Values.route.rewriteTarget }} - haproxy.router.openshift.io/rewrite-target: {{ .Values.route.rewriteTarget }} - {{- end }} - {{- if .Values.route.timeout.enabled }} - haproxy.router.openshift.io/timeout: {{ .Values.route.timeout.durationSeconds }} - {{- end }} -spec: - {{- if .Values.route.host }} - host: {{ .Values.route.host }} - {{- end }} - path: {{ .Values.route.path | default "/" }} - to: - kind: Service - name: {{ printf "%s-service" (include "geocoding-enrichment.fullname" .) }} - {{- if .Values.route.tls.enabled }} - tls: - termination: {{ .Values.route.tls.termination | quote }} - insecureEdgeTerminationPolicy: {{ .Values.route.tls.insecureEdgeTerminationPolicy | quote }} - {{- if .Values.route.tls.useCerts }} - certificate: {{ .Values.route.tls.certificate | quote }} - key: {{ .Values.route.tls.key | quote }} - caCertificate: {{ .Values.route.tls.caCertificate | quote }} - {{- end }} - {{- end -}} -{{- end -}} diff --git a/helm/templates/secret.yaml b/helm/templates/secret.yaml new file mode 100644 index 0000000..25e1013 --- /dev/null +++ b/helm/templates/secret.yaml @@ -0,0 +1,26 @@ +{{- $releaseName := .Release.Name -}} +{{- $chartName := include "geocoding-enrichment.name" . -}} +{{- if .Values.enabled -}} +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: {{ $releaseName }}-{{ $chartName }}-secret + annotations: + "helm.sh/resource-policy": keep + labels: + app: {{ $chartName }} + component: {{ $chartName }} + environment: {{ include "geocoding-enrichment.environment" . }} + release: {{ $releaseName }} + {{- include "geocoding-enrichment.labels" . | nindent 4 }} +data: +{{- if or (ne .Values.elastic.auth.username "") (ne .Values.elastic.auth.password "") }} + ELASTIC_USERNAME: {{ .Values.elastic.auth.username | b64enc }} + ELASTIC_PASSWORD: {{ .Values.elastic.auth.password | b64enc }} +{{- end }} +{{- if .Values.kafka.sasl }} + KAFKA_SASL_USERNAME: {{ .Values.kafka.sasl.username | b64enc }} + KAFKA_SASL_PASSWORD: {{ .Values.kafka.sasl.password | b64enc }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml index 2252a9a..a67fa8a 100644 --- a/helm/templates/service.yaml +++ b/helm/templates/service.yaml @@ -1,11 +1,11 @@ {{- $releaseName := .Release.Name -}} {{- $chartName := include "geocoding-enrichment.name" . -}} -{{- $deploymentFlavor := include "geocoding-enrichment.deploymentFlavor" . -}} +{{- $cloudProviderFlavor := include "geocoding-enrichment.cloudProviderFlavor" . -}} {{- if .Values.enabled -}} apiVersion: v1 kind: Service metadata: - name: {{ printf "%s-service" (include "geocoding-enrichment.fullname" .) }} + name: {{ $releaseName }}-{{ $chartName }} labels: app: {{ $chartName }} component: {{ $chartName }} @@ -13,7 +13,7 @@ metadata: release: {{ $releaseName }} {{- include "geocoding-enrichment.labels" . | nindent 4 }} spec: - {{- if eq $deploymentFlavor "minikube" }} + {{- if eq $cloudProviderFlavor "minikube" }} type: NodePort {{- end }} ports: @@ -21,12 +21,12 @@ spec: targetPort: {{ .Values.env.targetPort }} protocol: {{ .Values.env.protocol }} name: http - {{- if eq $deploymentFlavor "minikube" }} - nodePort: {{ .Values.nodePort }} + {{- if eq $cloudProviderFlavor "minikube" }} + nodePort: {{ .Values.service.nodePort }} {{- end }} selector: app: {{ $chartName }} release: {{ $releaseName }} run: {{ $releaseName }}-{{ $chartName }} {{- include "geocoding-enrichment.selectorLabels" . | nindent 4 }} -{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm/values.yaml b/helm/values.yaml index 1af7875..014d5e8 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -1,61 +1,30 @@ global: - imageRegistry: "" - imagePullSecrets: [] - deploymentFlavor: "openshift" - pullPolicy: "IfNotPresent" + cloudProvider: {} tracing: {} metrics: {} - environment: '' + environment: {} enabled: true +revisionHistoryLimit: 5 environment: development +initialDelaySeconds: 60 replicaCount: 1 -revisionHistoryLimit: 5 # Amount of revisions we keep -nodePort: 30030 #for minikube deployment only -resetOnConfigChange: false - -nameOverride: "" -fullnameOverride: "" - -livenessProbe: - enabled: true - initialDelaySeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - path: /liveness - -readinessProbe: - enabled: true - initialDelaySeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - path: /liveness +annotations: {} podAnnotations: {} -extraVolumes: [] - -extraVolumeMounts: [] +pullSecret: pull-secret -extraEnvVars: [] - -command: [] -args: [] -# command: [ "/bin/sh", "-c", "--" ] -# args: [ "while true; do sleep infinity; done;" ] - -sidecars: [] - -caSecretName: '' -caPath: '/usr/local/share/ca-certificates' -caKey: 'ca.crt' +cloudProvider: + flavor: openshift + dockerRegistryUrl: docker.registry.com/mapcolonies + imagePullSecretName: pull-secret image: - registry: "" repository: geocoding-enrichment - tag: 'v4.2.0' - digest: "" - pullSecrets: [] + pullPolicy: IfNotPresent + tag: "v1.4.0" + env: port: 8080 targetPort: 8080 @@ -67,41 +36,54 @@ env: tracing: enabled: false url: http://localhost:55681/v1/trace + ratio: 1 metrics: enabled: false url: http://localhost:55681/v1/metrics + hashKey: + enabled: false + value: hashKeyValue + +kafka: + brokers: broker-1.kafka.com:9092,broker-2.kafka.com:9092,broker-3.kafka.com:9092 + sslAuth: + enabled: true + certDir: /tmp/certs/kafka + secretName: kafka-prep-certs + certFileName: kafka.pem + keyFileName: kafka.key + caFileName: root.crt + +kafkaTopics: + input: |- + ["feedback-np"] + +kafkaConsumers: + groupId: feedback-consumers-np + +elastic: + node: http://elastic.com + auth: + username: elastic + password: 1234a + properties: + index: geocoding_enrichment_np + +application: + userDataService: + endpoint: https://user-data.com + headers: |- + { + "token": "token1", + "version": "1.0" + } resources: enabled: true value: limits: - cpu: 100m - memory: 128Mi + cpu: 1000m + memory: 512Mi requests: - cpu: 100m - memory: 128Mi - -route: - enabled: true - path: / - host: - timeout: - enabled: false # defaults to 30s by openshift - duration: 60s # supported units (us, ms, s, m, h, d) - rewriteTarget: '' - tls: - enabled: true - termination: edge - insecureEdgeTerminationPolicy: Redirect - useCerts: false - certificate: '' - key: '' - caCertificate: '' - -ingress: - enabled: false - path: / - host: 'localhost' - cors: - enabled: true - origin: '*' + cpu: 250m + memory: 512Mi \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cf44554..b69546d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -121,6 +121,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", @@ -989,6 +990,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.17.12.tgz", "integrity": "sha512-B8QIgBvkIG6G2jgsOHQUist7Sm0EBLDCx8sen072IwqNuzMegZNXrYnSv77cYzA8mLDZAfQYqsLIhimiP1s2HQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.17.12" }, @@ -1576,6 +1578,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz", "integrity": "sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", @@ -3846,6 +3849,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", "dev": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.7.3", "@typescript-eslint/types": "6.7.3", @@ -4292,6 +4296,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.7.0.tgz", "integrity": "sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -4300,6 +4305,7 @@ "version": "0.46.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.46.0.tgz", "integrity": "sha512-+9BcqfiEDGPXEIo+o3tso/aqGM5dGbGwAkGVp3FPpZ8GlkK1YlaKRd9gMVyPaeRATwvO5wYGGnCsAc/sMMM9Qw==", + "peer": true, "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -6677,7 +6683,8 @@ "node_modules/@types/node": { "version": "17.0.36", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", - "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==" + "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==", + "peer": true }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -6826,6 +6833,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==", "dev": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.38.0", "@typescript-eslint/type-utils": "5.38.0", @@ -7149,6 +7157,7 @@ "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -9122,6 +9131,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, + "peer": true, "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -9658,6 +9668,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", @@ -10543,6 +10554,7 @@ "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -10605,6 +10617,7 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -11326,6 +11339,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12431,6 +12445,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", "dev": true, + "peer": true, "dependencies": { "@jest/core": "^29.5.0", "@jest/types": "^29.5.0", @@ -16215,6 +16230,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "peer": true, "bin": { "prettier": "bin-prettier.js" }, @@ -16425,6 +16441,7 @@ "version": "15.1.2", "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.2.tgz", "integrity": "sha512-on3h1iXb04QFLLThrmVYg1SChBQ9N1c+nKAjebBjokBqipddH3uxmOUcEkTnzmJ8Jh/5TSUnUqS40i2QB2dJHQ==", + "peer": true, "dependencies": { "@opentelemetry/api": "^1.4.0", "tdigest": "^0.1.1" @@ -17980,6 +17997,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -18133,6 +18151,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18692,6 +18711,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", "dev": true, + "peer": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", @@ -19307,6 +19327,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.17.12.tgz", "integrity": "sha512-B8QIgBvkIG6G2jgsOHQUist7Sm0EBLDCx8sen072IwqNuzMegZNXrYnSv77cYzA8mLDZAfQYqsLIhimiP1s2HQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.17.12" } @@ -19684,6 +19705,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz", "integrity": "sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", @@ -21399,6 +21421,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", "dev": true, + "peer": true, "requires": { "@typescript-eslint/scope-manager": "6.7.3", "@typescript-eslint/types": "6.7.3", @@ -21697,12 +21720,14 @@ "@opentelemetry/api": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.7.0.tgz", - "integrity": "sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==" + "integrity": "sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==", + "peer": true }, "@opentelemetry/api-logs": { "version": "0.46.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.46.0.tgz", "integrity": "sha512-+9BcqfiEDGPXEIo+o3tso/aqGM5dGbGwAkGVp3FPpZ8GlkK1YlaKRd9gMVyPaeRATwvO5wYGGnCsAc/sMMM9Qw==", + "peer": true, "requires": { "@opentelemetry/api": "^1.0.0" } @@ -23469,7 +23494,8 @@ "@types/node": { "version": "17.0.36", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", - "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==" + "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==", + "peer": true }, "@types/normalize-package-data": { "version": "2.4.1", @@ -23618,6 +23644,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==", "dev": true, + "peer": true, "requires": { "@typescript-eslint/scope-manager": "5.38.0", "@typescript-eslint/type-utils": "5.38.0", @@ -23794,7 +23821,8 @@ "acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "peer": true }, "acorn-import-assertions": { "version": "1.9.0", @@ -25330,6 +25358,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, + "peer": true, "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -25732,6 +25761,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", "dev": true, + "peer": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", @@ -26361,6 +26391,7 @@ "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "peer": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -26440,6 +26471,7 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -26980,6 +27012,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "peer": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -27760,6 +27793,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", "dev": true, + "peer": true, "requires": { "@jest/core": "^29.5.0", "@jest/types": "^29.5.0", @@ -30644,7 +30678,8 @@ "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true + "dev": true, + "peer": true }, "pretty-format": { "version": "29.5.0", @@ -30793,6 +30828,7 @@ "version": "15.1.2", "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.2.tgz", "integrity": "sha512-on3h1iXb04QFLLThrmVYg1SChBQ9N1c+nKAjebBjokBqipddH3uxmOUcEkTnzmJ8Jh/5TSUnUqS40i2QB2dJHQ==", + "peer": true, "requires": { "@opentelemetry/api": "^1.4.0", "tdigest": "^0.1.1" @@ -31941,6 +31977,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, + "peer": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -32046,7 +32083,8 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", - "dev": true + "dev": true, + "peer": true }, "uglify-js": { "version": "3.15.5", diff --git a/src/streamerBuilder.ts b/src/streamerBuilder.ts index 8f04b5a..eedfbc1 100644 --- a/src/streamerBuilder.ts +++ b/src/streamerBuilder.ts @@ -39,6 +39,7 @@ export class StreamerBuilder { ca: [readFileSync(kafkaConfig.sslPaths.ca, 'utf-8')], } : undefined, + sasl: kafkaConfig.sasl ? { ...kafkaConfig.sasl } : undefined, }; } const consumerConfig = config.get('kafkaConsumer');