diff --git a/charts/document-engine/CHANGELOG.md b/charts/document-engine/CHANGELOG.md index 86e9483..8c50af4 100644 --- a/charts/document-engine/CHANGELOG.md +++ b/charts/document-engine/CHANGELOG.md @@ -164,6 +164,7 @@ ### Added * `cloudNativePG` section, including `cloudNativePG.cluster` to create PostgreSQL database clusters using [CloudNativePG](https://cloudnative-pg.io/) operator. +* `observability.log.structured` to enable structured logs in JSON format ### Changed diff --git a/charts/document-engine/README.md b/charts/document-engine/README.md index e57cd5b..19bbcde 100644 --- a/charts/document-engine/README.md +++ b/charts/document-engine/README.md @@ -317,53 +317,53 @@ ingress: | Key | Description | Default | |-----|-------------|---------| -| [`extraEnvFrom`](./values.yaml#L777) | Extra environment variables from resources | `[]` | -| [`extraEnvs`](./values.yaml#L774) | Extra environment variables | `[]` | -| [`extraVolumeMounts`](./values.yaml#L783) | Additional volume mounts for Document Engine container | `[]` | -| [`extraVolumes`](./values.yaml#L780) | Additional volumes | `[]` | -| [`image`](./values.yaml#L734) | Image settings | [...](./values.yaml#L734) | -| [`imagePullSecrets`](./values.yaml#L741) | Pull secrets | `[]` | -| [`initContainers`](./values.yaml#L789) | Init containers | `[]` | -| [`podSecurityContext`](./values.yaml#L760) | Pod security context | `{}` | -| [`securityContext`](./values.yaml#L764) | Security context | `{}` | -| [`serviceAccount`](./values.yaml#L753) | ServiceAccount | [...](./values.yaml#L753) | -| [`sidecars`](./values.yaml#L786) | Additional containers | `[]` | +| [`extraEnvFrom`](./values.yaml#L780) | Extra environment variables from resources | `[]` | +| [`extraEnvs`](./values.yaml#L777) | Extra environment variables | `[]` | +| [`extraVolumeMounts`](./values.yaml#L786) | Additional volume mounts for Document Engine container | `[]` | +| [`extraVolumes`](./values.yaml#L783) | Additional volumes | `[]` | +| [`image`](./values.yaml#L737) | Image settings | [...](./values.yaml#L737) | +| [`imagePullSecrets`](./values.yaml#L744) | Pull secrets | `[]` | +| [`initContainers`](./values.yaml#L792) | Init containers | `[]` | +| [`podSecurityContext`](./values.yaml#L763) | Pod security context | `{}` | +| [`securityContext`](./values.yaml#L767) | Security context | `{}` | +| [`serviceAccount`](./values.yaml#L756) | ServiceAccount | [...](./values.yaml#L756) | +| [`sidecars`](./values.yaml#L789) | Additional containers | `[]` | ### Metadata | Key | Description | Default | |-----|-------------|---------| -| [`deploymentAnnotations`](./values.yaml#L799) | Deployment annotations | `{}` | -| [`deploymentExtraSelectorLabels`](./values.yaml#L802) | Additional label selector for the deployment | `{}` | -| [`fullnameOverride`](./values.yaml#L748) | Release full name override | `""` | -| [`nameOverride`](./values.yaml#L745) | Release name override | `""` | -| [`podAnnotations`](./values.yaml#L796) | Pod annotations | `{}` | -| [`podLabels`](./values.yaml#L793) | Pod labels | `{}` | +| [`deploymentAnnotations`](./values.yaml#L802) | Deployment annotations | `{}` | +| [`deploymentExtraSelectorLabels`](./values.yaml#L805) | Additional label selector for the deployment | `{}` | +| [`fullnameOverride`](./values.yaml#L751) | Release full name override | `""` | +| [`nameOverride`](./values.yaml#L748) | Release name override | `""` | +| [`podAnnotations`](./values.yaml#L799) | Pod annotations | `{}` | +| [`podLabels`](./values.yaml#L796) | Pod labels | `{}` | ### Networking | Key | Description | Default | |-----|-------------|---------| -| [`extraIngresses`](./values.yaml#L862) | Additional ingresses, e.g. for the dashboard | [...](./values.yaml#L862) | -| [`ingress`](./values.yaml#L827) | Ingress | [...](./values.yaml#L827) | -| [`ingress.annotations`](./values.yaml#L836) | Ingress annotations | `{}` | -| [`ingress.className`](./values.yaml#L833) | Ingress class name | `""` | -| [`ingress.enabled`](./values.yaml#L830) | Enable ingress | `false` | -| [`ingress.hosts`](./values.yaml#L839) | Hosts | `[]` | -| [`ingress.tls`](./values.yaml#L853) | Ingress TLS section | `[]` | -| [`networkPolicy`](./values.yaml#L879) | [Network policy](https://kubernetes.io/docs/concepts/services-networking/network-policies/) | [...](./values.yaml#L879) | -| [`networkPolicy.allowExternal`](./values.yaml#L887) | Allow access from anywhere | `true` | -| [`networkPolicy.allowExternalEgress`](./values.yaml#L911) | Allow the pod to access any range of port and all destinations. | `true` | -| [`networkPolicy.enabled`](./values.yaml#L882) | Enable network policy | `true` | -| [`networkPolicy.extraEgress`](./values.yaml#L914) | Extra egress rules | `[]` | -| [`networkPolicy.extraIngress`](./values.yaml#L890) | Additional ingress rules | `[]` | -| [`networkPolicy.ingressMatchSelectorLabels`](./values.yaml#L905) | Allow traffic from other namespaces | `[]` | -| [`service`](./values.yaml#L807) | Service | [...](./values.yaml#L807) | -| [`service.annotations`](./values.yaml#L816) | Service annotations | `{}` | -| [`service.internalTrafficPolicy`](./values.yaml#L819) | Service internal traffic policy | `"Cluster"` | -| [`service.port`](./values.yaml#L813) | Service port — see also `config.port` | `5000` | -| [`service.trafficDistribution`](./values.yaml#L822) | Service [traffic distribution policy](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution) | `nil` | -| [`service.type`](./values.yaml#L810) | Service type | `"ClusterIP"` | +| [`extraIngresses`](./values.yaml#L865) | Additional ingresses, e.g. for the dashboard | [...](./values.yaml#L865) | +| [`ingress`](./values.yaml#L830) | Ingress | [...](./values.yaml#L830) | +| [`ingress.annotations`](./values.yaml#L839) | Ingress annotations | `{}` | +| [`ingress.className`](./values.yaml#L836) | Ingress class name | `""` | +| [`ingress.enabled`](./values.yaml#L833) | Enable ingress | `false` | +| [`ingress.hosts`](./values.yaml#L842) | Hosts | `[]` | +| [`ingress.tls`](./values.yaml#L856) | Ingress TLS section | `[]` | +| [`networkPolicy`](./values.yaml#L882) | [Network policy](https://kubernetes.io/docs/concepts/services-networking/network-policies/) | [...](./values.yaml#L882) | +| [`networkPolicy.allowExternal`](./values.yaml#L890) | Allow access from anywhere | `true` | +| [`networkPolicy.allowExternalEgress`](./values.yaml#L914) | Allow the pod to access any range of port and all destinations. | `true` | +| [`networkPolicy.enabled`](./values.yaml#L885) | Enable network policy | `true` | +| [`networkPolicy.extraEgress`](./values.yaml#L917) | Extra egress rules | `[]` | +| [`networkPolicy.extraIngress`](./values.yaml#L893) | Additional ingress rules | `[]` | +| [`networkPolicy.ingressMatchSelectorLabels`](./values.yaml#L908) | Allow traffic from other namespaces | `[]` | +| [`service`](./values.yaml#L810) | Service | [...](./values.yaml#L810) | +| [`service.annotations`](./values.yaml#L819) | Service annotations | `{}` | +| [`service.internalTrafficPolicy`](./values.yaml#L822) | Service internal traffic policy | `"Cluster"` | +| [`service.port`](./values.yaml#L816) | Service port — see also `config.port` | `5000` | +| [`service.trafficDistribution`](./values.yaml#L825) | Service [traffic distribution policy](https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution) | `nil` | +| [`service.type`](./values.yaml#L813) | Service type | `"ClusterIP"` | ### Observability @@ -371,72 +371,73 @@ ingress: |-----|-------------|---------| | [`observability`](./values.yaml#L596) | Observability settings | | | [`observability.log`](./values.yaml#L600) | Logs | [...](./values.yaml#L600) | -| [`observability.log.healthcheckLevel`](./values.yaml#L606) | `HEALTHCHECK_LOGLEVEL` — log level for health checks | `"debug"` | +| [`observability.log.healthcheckLevel`](./values.yaml#L609) | `HEALTHCHECK_LOGLEVEL` — log level for health checks | `"debug"` | | [`observability.log.level`](./values.yaml#L603) | `LOG_LEVEL` | `"info"` | -| [`observability.metrics`](./values.yaml#L641) | Metrics configuration | [...](./values.yaml#L641) | -| [`observability.metrics.customTags`](./values.yaml#L650) | Prometheus metrics endpoint settings | `namespace={{ .Release.Namespace }},app={{ include "document-engine.fullname" . }}` | -| [`observability.metrics.grafanaDashboard`](./values.yaml#L689) | Grafana dashboard | [...](./values.yaml#L689) | -| [`observability.metrics.grafanaDashboard.configMap`](./values.yaml#L697) | ConfigMap parameters | [...](./values.yaml#L697) | -| [`observability.metrics.grafanaDashboard.configMap.labels`](./values.yaml#L700) | ConfigMap labels | `{"grafana_dashboard":"1"}` | -| [`observability.metrics.grafanaDashboard.enabled`](./values.yaml#L693) | Enable Grafana dashboard. To work, requires Prometheus metrics enabled in `observability.metrics.prometheusEndpoint.enabled` | `false` | -| [`observability.metrics.grafanaDashboard.tags`](./values.yaml#L710) | Dashboard tags | `["Nutrient","document-engine"]` | -| [`observability.metrics.grafanaDashboard.title`](./values.yaml#L707) | Dashboard title | *generated* | -| [`observability.metrics.prometheusEndpoint.enabled`](./values.yaml#L654) | Enable Prometheus metrics endpoint, `ENABLE_PROMETHEUS` | `false` | -| [`observability.metrics.prometheusEndpoint.port`](./values.yaml#L657) | Port for the Prometheus metrics endpoint, `PROMETHEUS_PORT` | `10254` | -| [`observability.metrics.prometheusRule`](./values.yaml#L681) | Prometheus [PrometheusRule](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.PrometheusRule) Requires `observability.metrics.prometheusEndpoint.enabled` to be `true` | [...](./values.yaml#L681) | -| [`observability.metrics.serviceMonitor`](./values.yaml#L666) | Prometheus [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.ServiceMonitor) Requires `observability.metrics.prometheusEndpoint.enabled` to be `true` | [...](./values.yaml#L666) | -| [`observability.metrics.statsd`](./values.yaml#L716) | StatsD parameters | [...](./values.yaml#L716) | -| [`observability.metrics.statsd.customTags`](./values.yaml#L729) | StatsD custom tags, `STATSD_CUSTOM_TAGS` | `` | -| [`observability.metrics.statsd.port`](./values.yaml#L725) | StatsD port, `STATSD_PORT` | `9125` | -| [`observability.opentelemetry`](./values.yaml#L610) | OpenTelemetry settings | [...](./values.yaml#L610) | -| [`observability.opentelemetry.enabled`](./values.yaml#L613) | Enable OpenTelemetry (`ENABLE_OPENTELEMETRY`), only tracing is currently supported | `false` | -| [`observability.opentelemetry.otelPropagators`](./values.yaml#L629) | `OTEL_PROPAGATORS`, propagators | `""` | -| [`observability.opentelemetry.otelResourceAttributes`](./values.yaml#L626) | `OTEL_RESOURCE_ATTRIBUTES`, resource attributes | `""` | -| [`observability.opentelemetry.otelServiceName`](./values.yaml#L623) | `OTEL_SERVICE_NAME`, service name | `""` | -| [`observability.opentelemetry.otelTracesSampler`](./values.yaml#L634) | `OTEL_TRACES_SAMPLER`, should normally not be touched to allow custom `parent_based` work, but something like `parentbased_traceidratio` may be considered | `""` | -| [`observability.opentelemetry.otelTracesSamplerArg`](./values.yaml#L637) | `OTEL_TRACES_SAMPLER_ARG`, argument for the sampler | `""` | -| [`observability.opentelemetry.otlpExporterEndpoint`](./values.yaml#L617) | https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/ `OTEL_EXPORTER_OTLP_ENDPOINT`, if not set, defaults to `http://localhost:4317` | `""` | -| [`observability.opentelemetry.otlpExporterProtocol`](./values.yaml#L620) | `OTEL_EXPORTER_OTLP_PROTOCOL`, if not set, defaults to `grpc` | `""` | +| [`observability.log.structured`](./values.yaml#L606) | `LOG_STRUCTURED` — enable structured logging in JSON format | `false` | +| [`observability.metrics`](./values.yaml#L644) | Metrics configuration | [...](./values.yaml#L644) | +| [`observability.metrics.customTags`](./values.yaml#L653) | Prometheus metrics endpoint settings | `namespace={{ .Release.Namespace }},app={{ include "document-engine.fullname" . }}` | +| [`observability.metrics.grafanaDashboard`](./values.yaml#L692) | Grafana dashboard | [...](./values.yaml#L692) | +| [`observability.metrics.grafanaDashboard.configMap`](./values.yaml#L700) | ConfigMap parameters | [...](./values.yaml#L700) | +| [`observability.metrics.grafanaDashboard.configMap.labels`](./values.yaml#L703) | ConfigMap labels | `{"grafana_dashboard":"1"}` | +| [`observability.metrics.grafanaDashboard.enabled`](./values.yaml#L696) | Enable Grafana dashboard. To work, requires Prometheus metrics enabled in `observability.metrics.prometheusEndpoint.enabled` | `false` | +| [`observability.metrics.grafanaDashboard.tags`](./values.yaml#L713) | Dashboard tags | `["Nutrient","document-engine"]` | +| [`observability.metrics.grafanaDashboard.title`](./values.yaml#L710) | Dashboard title | *generated* | +| [`observability.metrics.prometheusEndpoint.enabled`](./values.yaml#L657) | Enable Prometheus metrics endpoint, `ENABLE_PROMETHEUS` | `false` | +| [`observability.metrics.prometheusEndpoint.port`](./values.yaml#L660) | Port for the Prometheus metrics endpoint, `PROMETHEUS_PORT` | `10254` | +| [`observability.metrics.prometheusRule`](./values.yaml#L684) | Prometheus [PrometheusRule](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.PrometheusRule) Requires `observability.metrics.prometheusEndpoint.enabled` to be `true` | [...](./values.yaml#L684) | +| [`observability.metrics.serviceMonitor`](./values.yaml#L669) | Prometheus [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.ServiceMonitor) Requires `observability.metrics.prometheusEndpoint.enabled` to be `true` | [...](./values.yaml#L669) | +| [`observability.metrics.statsd`](./values.yaml#L719) | StatsD parameters | [...](./values.yaml#L719) | +| [`observability.metrics.statsd.customTags`](./values.yaml#L732) | StatsD custom tags, `STATSD_CUSTOM_TAGS` | `` | +| [`observability.metrics.statsd.port`](./values.yaml#L728) | StatsD port, `STATSD_PORT` | `9125` | +| [`observability.opentelemetry`](./values.yaml#L613) | OpenTelemetry settings | [...](./values.yaml#L613) | +| [`observability.opentelemetry.enabled`](./values.yaml#L616) | Enable OpenTelemetry (`ENABLE_OPENTELEMETRY`), only tracing is currently supported | `false` | +| [`observability.opentelemetry.otelPropagators`](./values.yaml#L632) | `OTEL_PROPAGATORS`, propagators | `""` | +| [`observability.opentelemetry.otelResourceAttributes`](./values.yaml#L629) | `OTEL_RESOURCE_ATTRIBUTES`, resource attributes | `""` | +| [`observability.opentelemetry.otelServiceName`](./values.yaml#L626) | `OTEL_SERVICE_NAME`, service name | `""` | +| [`observability.opentelemetry.otelTracesSampler`](./values.yaml#L637) | `OTEL_TRACES_SAMPLER`, should normally not be touched to allow custom `parent_based` work, but something like `parentbased_traceidratio` may be considered | `""` | +| [`observability.opentelemetry.otelTracesSamplerArg`](./values.yaml#L640) | `OTEL_TRACES_SAMPLER_ARG`, argument for the sampler | `""` | +| [`observability.opentelemetry.otlpExporterEndpoint`](./values.yaml#L620) | https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/ `OTEL_EXPORTER_OTLP_ENDPOINT`, if not set, defaults to `http://localhost:4317` | `""` | +| [`observability.opentelemetry.otlpExporterProtocol`](./values.yaml#L623) | `OTEL_EXPORTER_OTLP_PROTOCOL`, if not set, defaults to `grpc` | `""` | ### Pod lifecycle | Key | Description | Default | |-----|-------------|---------| -| [`lifecycle`](./values.yaml#L974) | [Lifecycle](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/) | `map[]` | -| [`livenessProbe`](./values.yaml#L944) | [Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L944) | -| [`readinessProbe`](./values.yaml#L957) | [Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L957) | -| [`startupProbe`](./values.yaml#L931) | [Startup probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L931) | -| [`terminationGracePeriodSeconds`](./values.yaml#L970) | [Termination grace period](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/). Should be greater than the longest expected request processing time (`config.requestTimeoutSeconds`). | `65` | +| [`lifecycle`](./values.yaml#L977) | [Lifecycle](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/) | `map[]` | +| [`livenessProbe`](./values.yaml#L947) | [Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L947) | +| [`readinessProbe`](./values.yaml#L960) | [Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L960) | +| [`startupProbe`](./values.yaml#L934) | [Startup probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) | [...](./values.yaml#L934) | +| [`terminationGracePeriodSeconds`](./values.yaml#L973) | [Termination grace period](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/). Should be greater than the longest expected request processing time (`config.requestTimeoutSeconds`). | `65` | ### Scheduling | Key | Description | Default | |-----|-------------|---------| -| [`affinity`](./values.yaml#L1029) | Node affinity | `{}` | -| [`autoscaling`](./values.yaml#L982) | [Autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | [...](./values.yaml#L982) | -| [`nodeSelector`](./values.yaml#L1026) | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | `{}` | -| [`podDisruptionBudget`](./values.yaml#L1019) | [Pod disruption budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) | [...](./values.yaml#L1019) | -| [`priorityClassName`](./values.yaml#L1038) | [Priority classs](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) | `""` | -| [`replicaCount`](./values.yaml#L1007) | Number of replicas | `1` | -| [`resources`](./values.yaml#L1004) | [Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | `{}` | -| [`schedulerName`](./values.yaml#L1041) | [Scheduler](https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/) | `""` | -| [`tolerations`](./values.yaml#L1032) | [Node tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) | `[]` | -| [`topologySpreadConstraints`](./values.yaml#L1035) | [Topology spread constraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/) | `[]` | -| [`updateStrategy`](./values.yaml#L1010) | [Update strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) | `{"rollingUpdate":{},"type":"RollingUpdate"}` | +| [`affinity`](./values.yaml#L1032) | Node affinity | `{}` | +| [`autoscaling`](./values.yaml#L985) | [Autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | [...](./values.yaml#L985) | +| [`nodeSelector`](./values.yaml#L1029) | [Node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) | `{}` | +| [`podDisruptionBudget`](./values.yaml#L1022) | [Pod disruption budget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) | [...](./values.yaml#L1022) | +| [`priorityClassName`](./values.yaml#L1041) | [Priority classs](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) | `""` | +| [`replicaCount`](./values.yaml#L1010) | Number of replicas | `1` | +| [`resources`](./values.yaml#L1007) | [Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) | `{}` | +| [`schedulerName`](./values.yaml#L1044) | [Scheduler](https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/) | `""` | +| [`tolerations`](./values.yaml#L1035) | [Node tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) | `[]` | +| [`topologySpreadConstraints`](./values.yaml#L1038) | [Topology spread constraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/) | `[]` | +| [`updateStrategy`](./values.yaml#L1013) | [Update strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) | `{"rollingUpdate":{},"type":"RollingUpdate"}` | ### Storage resource definitions | Key | Description | Default | |-----|-------------|---------| -| [`cloudNativePG`](./values.yaml#L1046) | [CloudNativePG](https://cloudnative-pg.io/) resources | [...](./values.yaml#L1046) | -| [`cloudNativePG.clusterAnnotations`](./values.yaml#L1077) | Cluster annotations | `{}` | -| [`cloudNativePG.clusterLabels`](./values.yaml#L1074) | Cluster labels | `{}` | -| [`cloudNativePG.clusterSpec`](./values.yaml#L1059) | CloudNativePG [cluster spec](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-ClusterSpec) | [...](./values.yaml#L1059) | -| [`cloudNativePG.enabled`](./values.yaml#L1049) | Enable CloudNativePG resources | `false` | -| [`cloudNativePG.networkPolicy`](./values.yaml#L1086) | Network policy to allow access to the cluster | `{"enabled":true}` | -| [`cloudNativePG.operatorNamespace`](./values.yaml#L1052) | CloudNativePG operator namespace | `"cnpg-system"` | -| [`cloudNativePG.operatorReleaseName`](./values.yaml#L1055) | CloudNativePG operator release name | `"cloudnative-pg"` | -| [`cloudNativePG.superuserSecret`](./values.yaml#L1080) | Superuser secret to use with the cluster | `{"create":true,"password":"despair","username":"postgres"}` | +| [`cloudNativePG`](./values.yaml#L1049) | [CloudNativePG](https://cloudnative-pg.io/) resources | [...](./values.yaml#L1049) | +| [`cloudNativePG.clusterAnnotations`](./values.yaml#L1080) | Cluster annotations | `{}` | +| [`cloudNativePG.clusterLabels`](./values.yaml#L1077) | Cluster labels | `{}` | +| [`cloudNativePG.clusterSpec`](./values.yaml#L1062) | CloudNativePG [cluster spec](https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-ClusterSpec) | [...](./values.yaml#L1062) | +| [`cloudNativePG.enabled`](./values.yaml#L1052) | Enable CloudNativePG resources | `false` | +| [`cloudNativePG.networkPolicy`](./values.yaml#L1089) | Network policy to allow access to the cluster | `{"enabled":true}` | +| [`cloudNativePG.operatorNamespace`](./values.yaml#L1055) | CloudNativePG operator namespace | `"cnpg-system"` | +| [`cloudNativePG.operatorReleaseName`](./values.yaml#L1058) | CloudNativePG operator release name | `"cloudnative-pg"` | +| [`cloudNativePG.superuserSecret`](./values.yaml#L1083) | Superuser secret to use with the cluster | `{"create":true,"password":"despair","username":"postgres"}` | ### Other Values @@ -444,7 +445,7 @@ ingress: |-----|-------------|---------| | [`config.http2SharedRendering.checkinTimeoutMilliseconds`](./values.yaml#L138) | `HTTP2_SHARED_RENDERING_PROCESS_CHECKIN_TIMEOUT` — document processing daemon checkin timeout. Do not change unless explicitly recommended by Nutrient support. | `0` | | [`config.http2SharedRendering.checkoutTimeoutMilliseconds`](./values.yaml#L141) | `HTTP2_SHARED_RENDERING_PROCESS_CHECKOUT_TIMEOUT` — document processing daemon checkout timeout. Do not change unless explicitly recommended by Nutrient support. | `5000` | -| [`revisionHistoryLimit`](./values.yaml#L1014) | [Revision history limit](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy) | `10` | +| [`revisionHistoryLimit`](./values.yaml#L1017) | [Revision history limit](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy) | `10` | ## Contribution diff --git a/charts/document-engine/ci/01-no-storage-values.yaml b/charts/document-engine/ci/01-no-storage-values.yaml index ab3afce..cd7de07 100644 --- a/charts/document-engine/ci/01-no-storage-values.yaml +++ b/charts/document-engine/ci/01-no-storage-values.yaml @@ -3,8 +3,7 @@ apiAuth: secretKeyBase: verySecretStringToNeverBeUsedInProduction service: - annotations: - service.kubernetes.io/topology-aware-hints: "auto" + trafficDistribution: PreferClose database: enabled: false diff --git a/charts/document-engine/templates/configmap.yaml b/charts/document-engine/templates/configmap.yaml index 5a6dd03..0395eb4 100644 --- a/charts/document-engine/templates/configmap.yaml +++ b/charts/document-engine/templates/configmap.yaml @@ -181,6 +181,7 @@ data: {{- end }} {{- end }} LOG_LEVEL: {{ .log.level | quote }} + LOG_STRUCTURED: {{ .log.structured | quote }} HEALTHCHECK_LOGLEVEL: {{ .log.healthcheckLevel | quote }} {{- with .opentelemetry }} {{- if .enabled }} diff --git a/charts/document-engine/values.schema.json b/charts/document-engine/values.schema.json index 2414c22..9e694e2 100644 --- a/charts/document-engine/values.schema.json +++ b/charts/document-engine/values.schema.json @@ -940,6 +940,9 @@ "level": { "type": "string", "pattern": "^(debug|info|warn|error)$" + }, + "structured": { + "type": "boolean" } } }, diff --git a/charts/document-engine/values.yaml b/charts/document-engine/values.yaml index cb93a2c..eb08608 100644 --- a/charts/document-engine/values.yaml +++ b/charts/document-engine/values.yaml @@ -601,6 +601,9 @@ observability: # -- `LOG_LEVEL` # @section -- D. Observability level: info # @schema pattern:^(debug|info|warn|error)$ + # -- `LOG_STRUCTURED` — enable structured logging in JSON format + # @section -- D. Observability + structured: false # -- `HEALTHCHECK_LOGLEVEL` — log level for health checks # @section -- D. Observability healthcheckLevel: debug # @schema pattern:^(debug|info|warn|error)$