# Default values for beszel-agent.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

# To add the Helm repository:
# helm repo add beszel https://henrygd.github.io/beszel
# helm repo update

# This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
replicaCount: 1

# This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/
image:
  # Use 'henrygd/beszel-agent' for standard, 'henrygd/beszel-agent-nvidia' for GPU support
  repository: henrygd/beszel-agent
  # This sets the pull policy for images.
  pullPolicy: IfNotPresent
  # Overrides the image tag whose default is the chart appVersion.
  tag: ""

# This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
imagePullSecrets: []
# This is to override the chart name.
nameOverride: ""
fullnameOverride: ""

# This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/
serviceAccount:
  # Specifies whether a service account should be created
  create: true
  # Automatically mount a ServiceAccount's API credentials?
  automount: true
  # Annotations to add to the service account
  annotations: {}
  # The name of the service account to use.
  # If not set and create is true, a name is generated using the fullname template
  name: ""

# This is for setting Kubernetes Annotations to a Pod.
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
podAnnotations: {}
# This is for setting Kubernetes Labels to a Pod.
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
podLabels: {}

podSecurityContext: {}
  # fsGroup: 2000

securityContext: {}
  # capabilities:
  #   drop:
  #   - ALL
  # readOnlyRootFilesystem: true
  # runAsNonRoot: true
  # runAsUser: 1000

# This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/
service:
  # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
  type: ClusterIP
  # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports
  port: 45876
  # -- Expose agent port to host network
  hostPort: null

# This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/
ingress:
  enabled: false
  className: ""
  annotations: {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  hosts:
    - host: chart-example.local
      paths:
        - path: /
          pathType: ImplementationSpecific
  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local

# -- Expose the service via gateway-api HTTPRoute
# Requires Gateway API resources and suitable controller installed within the cluster
# (see: https://gateway-api.sigs.k8s.io/guides/)
httpRoute:
  # HTTPRoute enabled.
  enabled: false
  # HTTPRoute annotations.
  annotations: {}
  # Which Gateways this Route is attached to.
  parentRefs:
  - name: gateway
    sectionName: http
    # namespace: default
  # Hostnames matching HTTP header.
  hostnames:
  - chart-example.local
  # List of rules and filters applied.
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /headers
  #   filters:
  #   - type: RequestHeaderModifier
  #     requestHeaderModifier:
  #       set:
  #       - name: My-Overwrite-Header
  #         value: this-is-the-only-value
  #       remove:
  #       - User-Agent
  # - matches:
  #   - path:
  #       type: PathPrefix
  #       value: /echo
  #     headers:
  #     - name: version
  #       value: v2

resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  # limits:
  #   cpu: 100m
  #   memory: 128Mi
  # requests:
  #   cpu: 100m
  #   memory: 128Mi

# This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
livenessProbe: {}
readinessProbe: {}

# This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/
autoscaling:
  enabled: false
  minReplicas: 1
  maxReplicas: 100
  targetCPUUtilizationPercentage: 80
  # targetMemoryUtilizationPercentage: 80

# Additional volumes on the output Deployment definition.
volumes: []
  # Uncomment to monitor additional filesystems
  # - name: extra-filesystems
  #   hostPath:
  #     path: /mnt/disk/.beszel
  #     type: DirectoryOrCreate

# Additional volumeMounts on the output Deployment definition.
volumeMounts: []
  # Uncomment to monitor additional filesystems
  # - name: extra-filesystems
  #   mountPath: /extra-filesystems
  #   readOnly: true

# -- Environment variables for the agent
env:
  PORT: "45876"
  # Hub URL - OPTIONAL (e.g., http://beszel-hub:8090)
  HUB_URL: ""
  # SSH public key for agent authentication - REQUIRED (unless using existingSecret)
  KEY: ""
  # Authentication token - OPTIONAL (unless using existingSecret)
  TOKEN: ""
  # Agent name in the Hub - OPTIONAL (defaults to node name)
  SYSTEM_NAME: ""
  # For GPU support (henrygd/beszel-agent-nvidia only)
  # NVIDIA_VISIBLE_DEVICES: "all"
  # NVIDIA_DRIVER_CAPABILITIES: "compute,video,utility"

# -- Secret configuration for sensitive data
secret:
  # Name of an existing Kubernetes Secret to use
  # When set, the chart will not create a Secret and will use this existing one instead
  # The secret should contain keys specified by sshKey and tokenKey below
  existingSecret: ""
  # Key name in the secret for the SSH public key
  sshKey: "ssh-key"
  # Key name in the secret for the authentication token
  tokenKey: "token"

# -- Use host network to allow network monitoring
hostNetwork: false

# -- GPU runtime configuration (for NVIDIA GPU support)
# Set to 'nvidia' when using henrygd/beszel-agent-nvidia
gpuRuntime: null

nodeSelector: {}

tolerations:
  - operator: Exists
    effect: NoSchedule
  - operator: Exists
    effect: NoExecute

affinity: {}

# -- DaemonSet mode - deploy one agent per node
daemonset:
  enabled: true
