values.yaml 28.8 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Used to generate top-level secrets (overridden by custom-values.yaml)
16

17
18
19
# Subcharts configuration

# Dynamo operator configuration
20
dynamo-operator:
21
  # -- Whether to enable the Dynamo Kubernetes operator deployment
22
  enabled: true
23
24

  # -- NATS server address for operator communication (leave empty to use the bundled NATS chart). Format: "nats://hostname:port"
25
  natsAddr: ""
26
27

  # -- etcd server address for operator state storage (leave empty to use the bundled etcd chart). Format: "http://hostname:port" or "https://hostname:port"
28
  etcdAddr: ""
29

30
31
32
  # -- URL for the Model Express server if not deployed by this helm chart. This is ignored if Model Express server is installed by this helm chart (global.model-express.enabled is true).
  modelExpressURL: ""
  # -- Namespace access controls for the operator
33
  namespaceRestriction:
34
35
    # -- Whether to restrict operator to specific namespaces. By default, the operator will run with cluster-wide permissions. Only 1 instance of the operator should be deployed in the cluster. If you want to deploy multiple operator instances, you can set this to true and specify the target namespace (by default, the target namespace is the helm release namespace).
    enabled: false
36
    # -- Target namespace for operator deployment (leave empty for current namespace)
37
    targetNamespace:
38
39
40
41
42
43
44
    # Namespace scope marker lease configuration (used to prevent conflicts when running both cluster-wide and namespace-restricted operators)
    lease:
      # Duration before the namespace scope marker lease expires if not renewed (namespace-restricted mode only). When a namespace-restricted operator is running, it creates a lease in its namespace. The cluster-wide operator detects this lease and excludes that namespace from processing. If the namespace operator stops renewing the lease (e.g., crashes), the lease expires and the cluster-wide operator automatically resumes processing that namespace.
      duration: 30s
      # Interval for renewing the namespace scope marker lease (namespace-restricted mode only). The namespace-restricted operator renews its lease at this interval to signal it's still running.
      renewInterval: 10s

45
46
  # -- The Dynamo discovery backend to use. By default, will rely on ETCD for discovery. Can be set to "kubernetes" to use Kubernetes API for service discovery. --
  discoveryBackend: ""
47
48

  # Controller manager configuration
49
  controllerManager:
50
    # -- Node tolerations for controller manager pods
51
    tolerations: []
52

53
54
55
    # -- Affinity for controller manager pods
    affinity: []

56
57
58
59
60
61
62
    # Leader election configuration for cluster-wide coordination
    leaderElection:
      # -- Leader election ID for cluster-wide coordination. WARNING: All cluster-wide operators must use the SAME ID to prevent split-brain. Different IDs would allow multiple leaders simultaneously.
      id: ""  # If empty, defaults to: dynamo.nvidia.com (shared across all cluster-wide operators)
      # -- Namespace for leader election leases (only used in cluster-wide mode). If empty, defaults to kube-system for cluster-wide coordination. All cluster-wide operators should use the SAME namespace for proper leader election.
      namespace: ""

63
    manager:
64
      # Container image configuration for the operator manager
65
      image:
66
        # -- Official NVIDIA Dynamo operator image repository
67
        repository: "nvcr.io/nvidia/ai-dynamo/kubernetes-operator"
68
        # -- Image tag (leave empty to use chart default)
69
        tag: ""
70
        # -- Image pull policy - when to pull the image
71
        pullPolicy: IfNotPresent
72
73

      # Command line arguments for the operator manager
74
      args:
75
        # -- Health probe endpoint for Kubernetes health checks
76
        - --health-probe-bind-address=:8081
77
        # -- Metrics endpoint for Prometheus scraping (localhost only for security)
78
        - --metrics-bind-address=127.0.0.1:8080
79
80

  # -- Secrets for pulling private container images
81
  imagePullSecrets: []
82
83

  # Core Dynamo platform configuration
84
  dynamo:
85
    # -- How long to wait before forcefully terminating Grove instances
86
    groveTerminationDelay: 4h
87
88

    # Internal utility images used by the platform
89
    internalImages:
90
      # -- Debugger image for troubleshooting deployments
91
      debugger: python:3.12-slim
92
93

    # -- Whether to enable restricted security contexts for enhanced security
94
    enableRestrictedSecurityContext: false
95
96

    # Docker registry configuration for private repositories
97
    dockerRegistry:
98
      # -- Whether to use Kubernetes secrets for registry authentication
99
      useKubernetesSecret: false
100
      # -- Docker registry server URL
101
      server:
102
      # -- Registry username
103
      username:
104
      # -- Registry password (consider using existingSecretName instead)
105
      password:
106
      # -- Name of existing Kubernetes secret containing registry credentials
107
      existingSecretName:
108
      # -- Whether the registry uses HTTPS
109
      secure: true
110
111

    # Ingress configuration for external access
112
    ingress:
113
      # -- Whether to create ingress resources
114
      enabled: false
115
      # -- Ingress class name (e.g., "nginx", "traefik")
116
      className:
117
      # -- Secret name containing TLS certificates
118
      tlsSecretName: my-tls-secret
119
120

    # Istio service mesh configuration
121
    istio:
122
      # -- Whether to enable Istio integration
123
      enabled: false
124
      # -- Istio gateway name for routing
125
      gateway:
126
127

    # -- Host suffix for generated ingress hostnames
128
    ingressHostSuffix: ""
129
130

    # -- Whether VirtualServices should support HTTPS routing
131
    virtualServiceSupportsHTTPS: false
132

133
134
135
136
137
    # Metrics configuration
    metrics:
      # -- Endpoint that services can use to retrieve metrics. If set, dynamo operator will automatically inject the PROMETHEUS_ENDPOINT environment variable into services it manages. Users can override the value of the PROMETHEUS_ENDPOINT environment variable by modifying the corresponding deployment's environment variables
      prometheusEndpoint: ""

138
139
140
141
142
143
144
145
146
    # MPI Run configuration
    mpiRun:
      # -- Name of the secret containing the SSH key for MPI Run
      secretName: "mpi-run-ssh-secret"
      # SSH key generation configuration
      sshKeygen:
        # -- Whether to enable SSH key generation for MPI Run
        enabled: true

147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
  # Webhook configuration for admission control and validation
  webhook:
    # -- Whether to enable admission webhooks for resource validation. When enabled, the operator will validate DynamoComponentDeployment and DynamoGraphDeployment resources before they are created or updated in the cluster. Enabled by default for production-ready validation and better error reporting.
    enabled: true

    # Certificate configuration for webhook TLS
    certificateSecret:
      # -- Name of the Kubernetes secret containing webhook TLS certificates. The secret must contain three keys: tls.crt (server certificate), tls.key (server private key), and ca.crt (Certificate Authority certificate).
      name: webhook-server-cert

      # -- Whether to manage the certificate secret externally. When false (default), certificates are automatically generated via Helm hooks during installation. When true, you must create the secret manually before installing the chart.
      external: false

    # -- Certificate validity duration in days for auto-generated certificates. Only used when certManager.enabled=false and certificateSecret.external=false. After this duration, certificates will expire and need to be regenerated.
    certificateValidity: 365

    # Container image for certificate generation and CA injection jobs
    # Only used when certManager.enabled=false and certificateSecret.external=false
    certGenerator:
      image:
        # -- Container image repository for certificate generation jobs. This image must contain both openssl and kubectl commands.
        repository: bitnami/kubectl
        # -- Container image tag for certificate generation jobs
        tag: latest
        # -- Image pull policy for certificate generation jobs
        pullPolicy: IfNotPresent

    # -- CA bundle (base64 encoded) for webhook validation. Only used when certificateSecret.external=true. For automatic certificate generation or cert-manager integration, leave this empty as it will be injected automatically.
    caBundle: ""

    # -- Webhook failure policy controls how Kubernetes handles requests when the webhook is unavailable. 'Fail' (recommended for production) rejects requests if the webhook cannot be reached, ensuring strict validation. 'Ignore' allows requests through if the webhook is unavailable, providing availability over validation guarantees.
    failurePolicy: Fail

    # -- Timeout in seconds for webhook validation calls. If the webhook doesn't respond within this time, the request will be handled according to the failurePolicy.
    timeoutSeconds: 10

    # Namespace selector for webhook scope control
    # -- Custom namespace selector for webhook validation. Use this to include or exclude specific namespaces from webhook validation. For CLUSTER-WIDE operators, you can exclude namespaces managed by namespace-restricted operators by using: matchExpressions: [{ key: "dynamo-operator", operator: "NotIn", values: ["namespace-restricted"] }]. For NAMESPACE-RESTRICTED operators, leave empty as it will be auto-configured to match only the operator's namespace.
    namespaceSelector: {}

    # cert-manager integration for automated certificate lifecycle management
    certManager:
      # -- Whether to use cert-manager for automatic certificate management. Requires cert-manager to be installed in the cluster. When enabled, cert-manager will automatically generate, renew, and rotate certificates, and the automatic certificate generation via Helm hooks will be disabled.
      enabled: false

      # Certificate configuration for cert-manager
      certificate:
        # -- Certificate duration for webhook certificates managed by cert-manager (e.g., "8760h" for 1 year). cert-manager will automatically renew the certificate before it expires.
        duration: "8760h"

        # -- Time before certificate expiration to trigger renewal (e.g., "360h" for 15 days). cert-manager will attempt to renew the certificate when this threshold is reached.
        renewBefore: "360h"

        # Root CA configuration for cert-manager
        rootCA:
          # -- Duration for the root CA certificate (e.g., "87600h" for 10 years). The root CA typically has a much longer lifetime than the leaf certificates it signs.
          duration: "87600h"

          # -- Time before root CA expiration to trigger renewal (e.g., "720h" for 30 days). Renewing a CA can be disruptive as all signed certificates must be reissued.
          renewBefore: "720h"

208
209
210
211
212
213
214
215
216
217
218
219

# Grove component - distributed inference orchestration
grove:
  # -- Whether to enable Grove for multi-node inference coordination, if enabled, the Grove operator will be deployed cluster-wide
  enabled: false

# Kai Scheduler component - advanced workload scheduling
kai-scheduler:
  # -- Whether to enable Kai Scheduler for intelligent resource allocation, if enabled, the Kai Scheduler operator will be deployed cluster-wide
  enabled: false

# etcd configuration - distributed key-value store for operator state
220
etcd:
221

222
  # -- Whether to enable etcd deployment, disable if you want to use an external etcd instance. For complete configuration options, see: https://github.com/bitnami/charts/tree/main/bitnami/etcd , all etcd settings should be prefixed with "etcd."
223
  enabled: true
224

225
  image:
226
    # -- following bitnami announcement for brownout - https://github.com/bitnami/charts/tree/main/bitnami/etcd#%EF%B8%8F-important-notice-upcoming-changes-to-the-bitnami-catalog, we need to use the legacy repository until we migrate to the new "secure" repository
227
    repository: bitnamilegacy/etcd
228
    tag: 3.5.18-debian-12-r5
229

230
  # Persistent storage configuration for etcd data
231
  persistence:
232
    # Whether to enable persistent storage (recommended for production)
233
234
235
    enabled: true
    # Use the cluster default storage-class or override with a named class
    storageClass: null
236
    # Size of persistent volume for etcd data
237
    size: 1Gi
238
239

  # Pre-upgrade job configuration
240
  preUpgradeJob:
241
    # Whether to run pre-upgrade validation jobs
242
    enabled: false
243
244

  # Number of etcd replicas (1 for single-node, 3+ for HA)
245
  replicaCount: 1
246
247
248

  # Authentication and authorization settings
  # Explicitly remove authentication for simplified internal communication
249
250
  auth:
    rbac:
251
      # Whether to create RBAC authentication (disabled for internal use)
252
253
      create: false

254
  # Health check configuration
255
  readinessProbe:
256
    # Whether to enable readiness probes (disabled to reduce startup complexity)
257
258
259
    enabled: false

  livenessProbe:
260
    # Whether to enable liveness probes (disabled to reduce startup complexity)
261
262
    enabled: false

263
264
265
266
267
268
  # Pod Disruption Budget configuration
  # Should be enabled for HA deployments with 3+ replicas
  pdb:
    # Whether to create a PodDisruptionBudget (disabled for single-node deployments)
    create: false

269
  # Node tolerations for etcd pods (allows scheduling on specific nodes)
270
271
  tolerations: []

272
# NATS configuration - messaging system for operator communication
273
nats:
274
  # -- Whether to enable NATS deployment, disable if you want to use an external NATS instance. For complete configuration options, see: https://github.com/nats-io/k8s/tree/main/helm/charts/nats , all nats settings should be prefixed with "nats."
275
  enabled: true
276
277
278
279

  # TLS Certificate Authority configuration for secure communication
  # Reference a common CA Certificate or Bundle in all nats config `tls` blocks and nats-box contexts
  # Note: `tls.verify` still must be set in the appropriate nats config `tls` blocks to require mTLS
280
  tlsCA:
281
    # Whether to enable TLS CA configuration
282
283
    enabled: false

284
  # Core NATS server configuration
285
  config:
286
    # NATS clustering for high availability (multiple NATS servers)
287
    cluster:
288
      # Whether to enable NATS clustering (disabled for single-node setups)
289
290
      enabled: false

291
    # JetStream - persistent messaging and streaming capabilities
292
    jetstream:
293
      # Whether to enable JetStream (recommended for persistent messaging)
294
295
      enabled: true

296
      # File-based storage for JetStream streams and consumers
297
      fileStore:
298
        # Whether to enable file storage (persistent across restarts)
299
        enabled: true
300
        # Directory path for JetStream file storage
301
302
303
        dir: /data

        ############################################################
304
        # Persistent Volume Claim for JetStream file storage
305
306
        ############################################################
        pvc:
307
          # Whether to create a PVC for JetStream storage
308
          enabled: true
309
          # Size of the persistent volume for JetStream data
310
          size: 10Gi
311
          # Storage class name (leave empty for default)
312
313
          storageClassName:

314
          # Advanced PVC configuration (merge additional fields)
315
316
317
          # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#persistentvolumeclaim-v1-core
          merge: {}
          patch: []
318
          # PVC name (defaults to "{{ include "nats.fullname" $ }}-js")
319
320
          name:

321
        # Maximum size for JetStream file storage (defaults to PVC size)
322
323
        maxSize:

324
      # Memory-based storage for JetStream (non-persistent)
325
      memoryStore:
326
        # Whether to enable memory storage (faster but not persistent)
327
328
        enabled: false

329
330
      # Advanced JetStream configuration
      # For options see: https://docs.nats.io/running-a-nats-service/configuration#jetstream
331
332
333
      merge: {}
      patch: []

334
    # Core NATS server settings
335
    nats:
336
      # Port for NATS client connections
337
      port: 4222
338
339

      # TLS configuration for encrypted connections
340
      tls:
341
        # Whether to enable TLS encryption
342
        enabled: false
343
344
        # Advanced TLS configuration
        # For options see: https://docs.nats.io/running-a-nats-service/configuration/securing_nats/tls
345
346
347
        merge: {}
        patch: []

348
    # Leaf nodes for creating NATS topologies and remote connections
349
    leafnodes:
350
      # Whether to enable leaf node connections
351
352
      enabled: false

353
    # WebSocket support for browser-based NATS clients
354
    websocket:
355
      # Whether to enable WebSocket protocol support
356
357
      enabled: false

358
    # MQTT protocol bridge for IoT device connectivity
359
    mqtt:
360
      # Whether to enable MQTT protocol support
361
362
      enabled: false

363
    # Gateway connections for multi-cluster NATS deployments
364
    gateway:
365
      # Whether to enable gateway connections
366
367
      enabled: false

368
    # HTTP monitoring endpoint for NATS server metrics
369
    monitor:
370
      # Whether to enable HTTP monitoring interface
371
      enabled: true
372
      # Port for monitoring HTTP endpoint
373
      port: 8222
374
375

      # TLS configuration for monitoring endpoint
376
      tls:
377
378
        # Whether to enable HTTPS for monitoring (requires config.nats.tls enabled)
        # When enabled, monitoring port will use HTTPS with the options from config.nats.tls
379
380
        enabled: false

381
    # Go pprof profiling endpoint for performance debugging
382
    profiling:
383
      # Whether to enable profiling endpoint (for debugging only)
384
      enabled: false
385
      # Port for profiling endpoint
386
387
      port: 65432

388
    # Account resolver for multi-tenant NATS deployments
389
    resolver:
390
      # Whether to enable account resolution (for advanced multi-tenancy)
391
392
      enabled: false

393
394
395
    # Server naming configuration
    # Adds a prefix to the server name, which defaults to the pod name
    # Helpful for ensuring server name is unique in a super cluster
396
397
    serverNamePrefix: ""

398
399
400
    # Advanced NATS configuration merging and patching
    # For complete options see: https://docs.nats.io/running-a-nats-service/configuration
    # Special rules apply:
401
402
403
404
405
    #  1. strings that start with << and end with >> will be unquoted
    #     use this for variables and numbers with units
    #  2. keys ending in $include will be switched to include directives
    #     keys are sorted alphabetically, use prefix before $includes to control includes ordering
    #     paths should be relative to /etc/nats-config/nats.conf
406
    # Example:
407
408
409
410
411
412
413
414
    #   merge:
    #     $include: ./my-config.conf
    #     zzz$include: ./my-config-last.conf
    #     server_name: nats
    #     authorization:
    #       token: << $TOKEN >>
    #     jetstream:
    #       max_memory_store: << 1GB >>
415
416
417
    merge:
      # 10MB which allows for larger context size : The default NATS max payload size is 1MB, and 256K tokens (with tokens being int32 - 4 bytes each) tips over that 1MB max.
      max_payload: 10485760
418
419
420
    patch: []

  ############################################################
421
  # NATS container configuration in StatefulSet
422
423
  ############################################################
  container:
424
    # NATS server container image configuration
425
    image:
426
      # Official NATS server repository
427
      repository: nats
428
      # NATS server version (Alpine-based for smaller size)
429
      tag: 2.10.21-alpine
430
      # Image pull policy (leave empty for chart default)
431
      pullPolicy:
432
      # Custom registry URL (leave empty for Docker Hub)
433
434
      registry:

435
436
    # Container port configuration
    # Note: Ports must also be enabled in the config section above
437
438
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#containerport-v1-core
    ports:
439
      # Main NATS client connection port
440
      nats: {}
441
      # Leaf node connection port
442
      leafnodes: {}
443
      # WebSocket connection port
444
      websocket: {}
445
      # MQTT protocol port
446
      mqtt: {}
447
      # Cluster communication port
448
      cluster: {}
449
      # Gateway connection port
450
      gateway: {}
451
      # HTTP monitoring port
452
      monitor: {}
453
      # Go profiling port
454
455
      profiling: {}

456
457
458
    # Environment variables for the NATS container
    # Map with key as env var name, value can be string or map
    # Example:
459
460
461
462
463
464
465
466
467
    #   env:
    #     GOMEMLIMIT: 7GiB
    #     TOKEN:
    #       valueFrom:
    #         secretKeyRef:
    #           name: nats-auth
    #           key: token
    env: {}

468
    # Advanced container configuration merging and patching
469
470
471
472
473
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#container-v1-core
    merge: {}
    patch: []

  ############################################################
474
  # Configuration reloader container for hot config updates
475
476
  ############################################################
  reloader:
477
    # Whether to enable the config reloader sidecar container
478
    enabled: true
479
480

    # Config reloader container image
481
    image:
482
      # Official NATS config reloader repository
483
      repository: natsio/nats-server-config-reloader
484
      # Config reloader version
485
      tag: 0.16.0
486
      # Image pull policy (leave empty for chart default)
487
      pullPolicy:
488
      # Custom registry URL (leave empty for Docker Hub)
489
490
      registry:

491
    # Environment variables for the reloader container
492
493
    env: {}

494
495
    # Volume mount prefixes from NATS container to share with reloader
    # All NATS container volume mounts with these prefixes will be mounted into the reloader
496
497
498
    natsVolumeMountPrefixes:
    - /etc/

499
    # Advanced reloader container configuration
500
501
502
503
504
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#container-v1-core
    merge: {}
    patch: []

  ############################################################
505
  # Prometheus metrics exporter container (optional)
506
  ############################################################
507
  # Note: config.monitor must be enabled for this to work
508
  promExporter:
509
    # Whether to enable Prometheus metrics exporter sidecar
510
511
512
    enabled: false

  ############################################################
513
  # Kubernetes Service for NATS access
514
515
  ############################################################
  service:
516
    # Whether to create a Kubernetes Service for NATS
517
518
    enabled: true

519
520
521
    # Service port configuration
    # Additional boolean field 'enabled' controls whether port is exposed in the service
    # Note: Ports must also be enabled in the config section above
522
523
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#serviceport-v1-core
    ports:
524
      # Main NATS client connection port
525
526
      nats:
        enabled: true
527
      # Leaf node connection port
528
529
      leafnodes:
        enabled: true
530
      # WebSocket connection port
531
532
      websocket:
        enabled: true
533
      # MQTT protocol port
534
535
      mqtt:
        enabled: true
536
      # Cluster communication port (typically internal only)
537
538
      cluster:
        enabled: false
539
      # Gateway connection port (typically internal only)
540
541
      gateway:
        enabled: false
542
      # HTTP monitoring port (typically internal only)
543
544
      monitor:
        enabled: false
545
      # Go profiling port (typically internal only)
546
547
548
      profiling:
        enabled: false

549
    # Advanced service configuration
550
551
552
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#service-v1-core
    merge: {}
    patch: []
553
    # Service name (defaults to "{{ include "nats.fullname" $ }}")
554
555
556
    name:

  ############################################################
557
  # Advanced NATS Kubernetes resource configuration
558
559
  ############################################################

560
  # StatefulSet configuration for NATS server persistence
561
  statefulSet:
562
    # Advanced StatefulSet configuration merging and patching
563
564
565
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#statefulset-v1-apps
    merge: {}
    patch: []
566
    # StatefulSet name (defaults to "{{ include "nats.fullname" $ }}")
567
568
    name:

569
  # Pod template configuration for NATS StatefulSet
570
  podTemplate:
571
572
    # Whether to add a hash of the ConfigMap as a pod annotation
    # This will cause the StatefulSet to roll when the ConfigMap is updated
573
574
    configChecksumAnnotation: true

575
576
577
578
579
580
581
    # Pod topology spread constraints for better distribution across nodes
    # Map of topologyKey: topologySpreadConstraint
    # labelSelector will be added automatically to match StatefulSet pods
    # Example:
    #   topologySpreadConstraints:
    #     kubernetes.io/hostname:
    #       maxSkew: 1
582
583
    topologySpreadConstraints: {}

584
    # Advanced pod template configuration
585
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#pod-v1-core
586
587
    merge:
      spec:
588
        # Node tolerations for NATS pods (allows scheduling on specific nodes)
589
        tolerations: []
590
591
    patch: []

592
  # Headless service for StatefulSet pod discovery
593
  headlessService:
594
    # Advanced headless service configuration
595
596
597
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#service-v1-core
    merge: {}
    patch: []
598
    # Headless service name (defaults to "{{ include "nats.fullname" $ }}-headless")
599
600
    name:

601
  # ConfigMap for NATS server configuration
602
  configMap:
603
    # Advanced ConfigMap configuration
604
605
606
    # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#configmap-v1-core
    merge: {}
    patch: []
607
    # ConfigMap name (defaults to "{{ include "nats.fullname" $ }}-config")
608
609
    name:

610
  # Pod Disruption Budget for controlled rolling updates
611
  podDisruptionBudget:
612
    # Whether to create a PodDisruptionBudget (recommended for production)
613
614
    enabled: true

615
  # Service Account for NATS server pods
616
  serviceAccount:
617
    # Whether to create and use a dedicated service account
618
619
620
    enabled: false

  ############################################################
621
622
  # NATS Box - CLI tools and debugging container
  # NATS Box provides CLI tools for interacting with NATS server
623
624
  ############################################################
  natsBox:
625
    # Whether to deploy NATS Box for CLI access and debugging
626
    enabled: false
627
628

    ############################################################
629
    # NATS client contexts for authentication and connection
630
631
    ############################################################
    contexts:
632
      # Default context configuration
633
      default:
634
        # Credentials-based authentication
635
        creds:
636
          # Inline credentials file contents (base64 encoded)
637
          contents:
638
          # Name of existing secret containing credentials file
639
          secretName:
640
          # Directory to mount credentials (defaults to /etc/nats-creds/<context-name>)
641
          dir:
642
          # Key name in secret for credentials file
643
          key: nats.creds
644
645

        # NKey-based authentication (public/private key pairs)
646
        nkey:
647
          # Inline NKey file contents (base64 encoded)
648
          contents:
649
          # Name of existing secret containing NKey file
650
          secretName:
651
          # Directory to mount NKey (defaults to /etc/nats-nkeys/<context-name>)
652
          dir:
653
          # Key name in secret for NKey file
654
          key: nats.nk
655
656

        # TLS client certificate authentication
657
        tls:
658
          # Name of existing secret containing TLS client certificates
659
          secretName:
660
          # Directory to mount certificates (defaults to /etc/nats-certs/<context-name>)
661
          dir:
662
          # Certificate file name in secret
663
          cert: tls.crt
664
          # Private key file name in secret
665
666
          key: tls.key

667
668
        # Advanced context configuration
        # For options see: https://docs.nats.io/using-nats/nats-tools/nats_cli#nats-contexts
669
670
671
        merge: {}
        patch: []

672
    # Name of context to select by default for NATS CLI operations
673
674
675
    defaultContextName: default

    ############################################################
676
    # NATS Box container configuration
677
678
    ############################################################
    container:
679
      # NATS Box container image
680
      image:
681
        # Official NATS Box repository with CLI tools
682
        repository: natsio/nats-box
683
        # NATS Box version
684
        tag: 0.14.5
685
        # Image pull policy (leave empty for chart default)
686
        pullPolicy:
687
        # Custom registry URL (leave empty for Docker Hub)
688
689
        registry:

690
      # Environment variables for NATS Box container
691
692
      env: {}

693
      # Advanced container configuration
694
695
696
      # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#container-v1-core
      merge: {}
      patch: []
697
698

    # Service Account for NATS Box deployment
699
    serviceAccount:
700
      # Whether to create and use a dedicated service account for NATS Box
701
      enabled: false
702

703
    # Pod template configuration for NATS Box deployment
704
705
706
    podTemplate:
      merge:
        spec:
707
          # Node tolerations for NATS Box pods
708
709
          tolerations: []
      patch: []