1# (c) Copyright [2021-2026] Open Text.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# You may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
6# http://www.apache.org/licenses/LICENSE-2.0
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
14# Default values for verticadb-operator.
15# This is a YAML-formatted file.
16# Declare variables to be passed into your templates.
18# -------------------------------------------------------------------------------
19# NOTE: Whenever changing default values in here, be sure to update the
20# README.md in this directory. That file lists out the helm chart parameters
21# with the default values.
22# -------------------------------------------------------------------------------
24# To control the name of all of the objects created in the helm chart.
25# nameOverride: verticadb-operator
29 name: scratch-images/test-tmp/verticadb-operator:25.4.0.0-r28@sha256:904573b2ec066b4154878e401e4e4c47e315e99c909c72102c71412e4e2d259d
30 pullPolicy: IfNotPresent
33 # If true, the controllers will run watching for changes in any of the
34 # Vertica custom resources. Setting this to false and webhook.enabled to true
35 # will cause the manager to only serve webhook requests. This mode allows you
36 # to decouple the webhook from the controllers, allowing you to run them in
39 # What is the scope of the controllers? Allowed options are: cluster or namespace.
40 # Two things happen when the controllers are scoped at the namespace level: we
41 # only setup watches for the namespace the operator is deployed in, and we will only
42 # grant Role/RoleBindings to the manager for deployed namespace.
44 # Use this if you want to provide a custom burst size for event recording in the operator.
45 # Increasing this allows the controllers to record more events in a short period.
47 # Controls the maximum backoff requeue duration (in milliseconds) for the vdb controller.
48 # Default value is 1000 ms (1 second). Increase this value to reduce the requeue rate
49 # if you have multiple databases running and want a lower rate limit.
50 vdbMaxBackoffDuration: 1000
51 # Controls the maximum backoff requeue duration (in milliseconds) for the sandbox controller.
52 # Default value is 1000 ms (1 second). Increase this value to reduce the requeue rate
53 # if you have multiple sandboxes running and want a lower rate limit.
54 sandboxMaxBackoffDuration: 1000
56 # The webhook requires a TLS certificate to work. This parm defines how the
57 # cert is supplied. Valid values are:
58 # - internal: The certs are generated internally by the operator prior to
59 # starting the managing controller. The generated cert is self-signed.
60 # When it expires, the operator pod will need to be restarted in order
61 # to generate a new certificate. This is the default.
62 # - cert-manager: The certs are generated using the cert-manager operator.
63 # This operator needs to be deployed before deploying the operator. It
64 # can be installed with this command:
65 # kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
67 # Deployment of this chart will create a self-signed cert. The advantage
68 # of this over 'internal' is that cert-manager will automatically handle
69 # private key rotation when the certificate is about to expire.
70 # - secret: The certs are created prior to installation of this chart and are
71 # provided to the operator through a secret. This option gives you the
72 # most flexibility as it is entirely up to you how the cert is created.
73 # This option requires the webhook.tlsSecret option to be set. For
74 # backwards compatibility, if webhook.tlsSecret is set, it is implicit
75 # that this mode is selected.
77 # Use this parameter if you want to provide your own cert. tlsSecret is a
78 # name of a secret in the same namespace the chart is being installed in.
79 # The secret must have the keys: tls.key and tls.crt. It can also include the
80 # key ca.crt. When that key is included the operator will patch it into the CA
81 # bundle in the webhook configuration.
83 # For backwards compatibility, if this is set, then 'certSource = secret' is
86 # If true, the webhook will be enabled and its configuration is setup by the helm chart.
87 # Setting this to false will disable the webhook. The webhook setup needs privileges to add
88 # validatingwebhookconfiguration and mutatingwebhookconfiguration, both are cluster scoped.
89 # If you do not have necessary privileges to add these configurations, then this option
90 # can be used to skip that and still deploy the operator.
93 # If set to true, the operator will use cache to store tls certificates.
94 # Setting this to false will disable cache in the operator
97 # level is the minimum logging level. Valid values are: debug, info, warn, and error
99# Controls the amount of concurrency within the operator to handle the various
105 verticarestorepointsquery: 1
110# The resource requirements for the operator pod. See this for more info:
111# https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
112# These defaults must be kept in sync with config/manifests/kustomization.yaml
120# Add specific node selector labels to control where the server pod is scheduled.
121# If left blank then no selectors are added.
122# See: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
125# Add any affinity or anti-affinity to the pod to control where it gets scheduled.
126# See: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity
128# requiredDuringSchedulingIgnoredDuringExecution:
135# topologyKey: topology.kubernetes.io/zone
137# PriorityClassName given to Pods of this StatefulSet
138# See: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass
140# Taints and tolerations.
141# See: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
143# Set this if you want to override the default name of the serviceaccount
144# serviceAccountNameOverride: ""
146# Annotations to be added to the serviceaccount that we create. This is a key/value map.
147serviceAccountAnnotations: {}
149 # Controls exposing of the prometheus metrics endpoint. Valid options are:
151 # EnableWithAuth: A new service object will be created that exposes the
152 # metrics endpoint. Access to the metrics are controlled by rbac rules.
153 # The metrics endpoint will use the https scheme.
154 # EnableWithoutAuth: Like EnableWithAuth, this will create a service
155 # object to expose the metrics endpoint. However, there is no authority
156 # checking when using the endpoint. Anyone who had network access
157 # endpoint (i.e. any pod in k8s) will be able to read the metrics. The
158 # metrics endpoint will use the http scheme.
159 # EnableWithTLS: Like EnableWithAuth, this will create a service
160 # object to expose the metrics endpoint. However, there is no authority
161 # checking when using the endpoint. People with network access to the
162 # endpoint (i.e. any pod in k8s) and the correct certs can read the metrics.
163 # The metrics endpoint will use the https scheme.
164 # It needs to be used with tlsSecret. If tlsSecret is not set, the behavior
165 # will be similar to EnableWithoutAuth, except that the endpoint will use
167 # Disable: Prometheus metrics are not exposed at all.
169 # If prometheus is exposed with an auth proxy (EnableWithAuth), use this
170 # parameter to control what certificates are used for the https endpoint. If
171 # this is empty, the operator will use a generated self-signed cert. When
172 # provided, the certificates can be used to authenticate with the metrics
175 # This controls the creation of ClusterRole/ClusterRoleBinding to access
176 # the metrics endpoint.
177 createProxyRBAC: true
178# Pod security context configuration
186# Container-specific security context configuration
187# ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
188containerSecurityContext:
189 allowPrivilegeEscalation: false
190 readOnlyRootFilesystem: true
195 # This controls the creation of ClusterRole rules for KEDA objects.
196 createRBACRules: true
197# If the operator is deployed in namespace scope, and you want to use
198# prometheus, then you must set this to the release name of the cluster
199# scope operator that has prometheus enabled.
200clusterScopeReleaseName: ""
201## Using default values from https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml
204 enabled: false # Set to true if you want to deploy Grafana
205 ## Override the deployment namespace
207 namespaceOverride: ""
211 ## Name of the secret. Can be templated.
214 passwordKey: admin-password
217 ## If true, Grafana PSPs will be created
220 ## Enable persistence using Persistent Volume Claims for Grafana data storage
221 ## This stores Grafana's database (users, dashboards, and preferences), plugins, and other persistent files
222 ## so they survive pod restarts or upgrades.
223 ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
228 # storageClassName: default
229 ## (Optional) Use this to bind the claim to an existing PersistentVolume (PV) by name.
236 - kubernetes.io/pvc-protection
237 ## Grafana's primary configuration
238 ## NOTE: values in map will be converted to ini format
239 ## ref: http://docs.grafana.org/installation/configuration/
243 data: /var/lib/grafana/
244 logs: /var/log/grafana
245 plugins: /var/lib/grafana/plugins
246 provisioning: /etc/grafana/provisioning
248 ## If true, Grafana Ingress will be created
253 serviceAccount.automountServiceAccountToken: true
254 # Flag to mark provisioned data sources for deletion if they are no longer configured.
255 # It takes no effect if data sources are already listed in the deleteDatasources section.
256 # ref: https://grafana.com/docs/grafana/latest/administration/provisioning/#example-data-source-configuration-file
258 ## Passed to grafana subchart and used by servicemonitor below
265 dashboardproviders.yaml:
272 disableDeletion: false
275 path: /var/lib/grafana/dashboards/vertica
278 # Example 1: Node Exporter Full Dashboard (ID 1860)
279 # This dashboard is typically for Prometheus data source.
280 vertica-overview-prometheus:
282 # revision: 1 # Optional: Pin to a specific revision if needed
283 datasource: Prometheus
284 vertica-queries-prometheus:
286 # revision: 1 # Optional: Pin to a specific revision if needed
287 datasource: Prometheus
288 vertica-resource-management-prometheus:
290 # revision: 1 # Optional: Pin to a specific revision if needed
291 datasource: Prometheus
292 vertica-depot-prometheus:
294 # revision: 1 # Optional: Pin to a specific revision if needed
295 datasource: Prometheus
302 url: http://verticadb-operator-prom-prometheus.{{ .Release.Namespace }}.svc.cluster.local:9090
309 url: http://{{ .Release.Name }}-loki-gateway.{{ .Release.Namespace }}.svc.cluster.local:80
313 enabled: false # Set to true if you want to deploy Prometheus server
314 # === Global Namespace Configuration ===
315 # By default, kube-prometheus-stack installs into .Release.Namespace
316 # You can override it here if you want it in a different namespace:
317 # namespaceOverride: "my-monitoring-ns" # Ensure this namespace exists or create it
319 # === Control Component Installation (to achieve "only Prometheus") ===
320 # Disable components you don't want.
321 # KEEP `prometheusOperator` ENABLED as it's required for Prometheus itself.
325 enabled: false # If you have Grafana as a separate sub-chart or elsewhere
326 kubeControllerManager:
344 prometheus-node-exporter: # Some older versions might use this instead of nodeExporter
346 prometheus-windows-exporter:
347 ## Enable ServiceMonitor and set Kubernetes label to use as a job label
352 nameOverride: prometheus-server
353 # Override the full name of the Prometheus server deployment.
354 # This allow you to control the name of the service created for Prometheus.
355 fullnameOverride: verticadb-operator-prom
356 # Prometheus Operator - keep minimal
367 # Reduce admission webhook complexity
371 selfMonitor: false # Disable self-monitoring ServiceMonitor
372 # Disable TLS for simplicity
375 # === Prometheus Specific Configuration ===
377 # Service account for Prometheuses to use.
380 name: prometheus-vertica-sa
382 automountServiceAccountToken: true
384 # You can also change the type if needed, e.g., ClusterIP, NodePort, LoadBalancer
386 # NodePort or LoadBalancer can be used if you need external access to Prometheus
387 # for instance, for remote scraping or a UI access
391 # Storage for Prometheus (highly recommended for production)
394 # Minimal resource allocation
402 # Reduce retention and storage
410 storage: 5Gi # Adjust storage size as needed
411 ## WebTLSConfig defines the TLS parameters for HTTPS
412 ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#webtlsconfig
414 # Optionally disable the default `kube-prometheus-stack` scrape configs if you're
415 # defining your own ServiceMonitors/PodMonitors for your operator.
416 # If you want Prometheus to scrape your K8s cluster, keep some of these enabled.
418 # enabled: false # This might disable all default scrape configs
419 # === ServiceMonitor for your Operator's Metrics (Example) ===
420 # If your operator exposes Prometheus metrics, you can define a ServiceMonitor
421 # directly in your main chart's templates or here if you want to conditionally
422 # deploy it with Prometheus.
423 # This example assumes your operator has a service named `my-operator-service`
424 # in the same namespace that exposes metrics on port `metrics-port`.
425 # For more advanced ServiceMonitor creation, it's often better to create a
426 # separate template in your main chart that consumes your operator's service details.
427 # This section is just illustrative of where you might define it.
430 # # This would typically be a template in your main chart, but showing how you'd
431 # # enable the Prometheus Operator to find your operator's metrics.
432 # name: my-operator-service-monitor
435 # app.kubernetes.io/name: my-operator
437 # - port: metrics-port # The name of the port in your operator's Service
439 # Disable all default scraping rules
445 configReloaders: false
448 kubeApiserverAvailability: false
449 kubeApiserverBurnrate: false
450 kubeApiserverHistogram: false
451 kubeApiserverSlos: false
454 kubePrometheusGeneral: false
455 kubePrometheusNodeRecording: false
456 kubernetesApps: false
457 kubernetesResources: false
458 kubernetesStorage: false
459 kubernetesSystem: false
461 kubeStateMetrics: false
464 nodeExporterAlerting: false
465 nodeExporterRecording: false
467 prometheusOperator: false
469 enabled: false # Set to true if you want to deploy loki
470 # == Configuration for running Loki
472 # The Compactor is responsible for compaction of index files and applying log retention.
474 retention_enabled: true # default is not enabled
475 working_directory: /var/loki/compactor # Specify a working directory for the compactor
476 compaction_interval: 10m # The compactor runs every 10 minutes
477 retention_delete_delay: 2h # Deletion of chunks is delayed by 2 hours after the retention period expires
478 delete_request_store: filesystem # Store delete requests locally on disk
479 # Sets the global retention period to 30 days. Logs older than 30 days will be marked for deletion by the compactor.
481 retention_period: 720h # 30 days
482 # Should authentication be enabled
484 # Set parameters shared across multiple Loki components or modules
486 # Loki stores multiple copies of logs in the ingester component, based on a configurable
487 # replication factor, generally 3.
488 replication_factor: 1 # set to 1 for testing purpose
489 # How Loki stores and indexes log data over time
492 - from: 2024-04-01 # Start date for this schema configuration
493 store: tsdb # Time Series Database. Index store type (e.g., tsdb, boltdb)
494 object_store: filesystem # Type of object storage (e.g., s3, gcs, filesystem)
495 schema: v13 # Schema version
497 prefix: loki_index_ # Prefix for index entries
498 period: 24h # Period for index rotation
499 # Loki receives logs in separate streams, where each stream is uniquely identified by its
500 # tenant ID and its set of labels. As log entries from a stream arrive, they are compressed
501 # as chunks and saved in the chunks store.
502 # The index stores each stream’s label set and links them to the individual chunks.
504 type: filesystem # not typically recommended for production use
506 chunks_directory: "/var/loki/chunks" # Directory for storing log data chunks
510 # disable canary to skip health check
513 # disable test or you can not disable canary
516 # Loki offers Monolithic, Simple Scalable Deployment (SSD), and Microservices (Distributed)
517 # modes for running its components. Monolithic is best for testing and small loads, while
518 # Microservices is for massive scale and high availability by running each component independently.
519 # SSD is the recommended default, providing a balance by grouping components into read, write,
520 # and backend targets for independent scaling and managing moderate to large log volumes.
521 deploymentMode: SingleBinary # monolithic mode
523 replicas: 1 # You must specify commonConfig.replication_factor: 1 if you are only using 1 replica, otherwise requests will fail.
524 # Zero out replica counts of other deployment modes
551 # Define the number of replicas for the deployment.
553 # Use self-created RBAC resources for Alloy deployment
556 # Use self-created service account for Alloy deployment
559 name: alloy-vertica-sa
560 # Grafana Alloy specific configuration