# Default values for zot.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
  repository: ghcr.io/project-zot/zot-linux-amd64
  pullPolicy: IfNotPresent
  # Overrides the image tag whose default is the chart appVersion.
  tag: "v2.0.3"
serviceAccount:
  # Specifies whether a service account should be created
  create: 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: ""
service:
  type: NodePort
  port: 5000
  nodePort: null  # Set to a specific port if type is NodePort
  # Annotations to add to the service
  annotations: {}
  # Set to a static IP if a static IP is desired, only works when
  # type: ClusterIP
  clusterIP: null
# Enabling this will publicly expose your zot server
# Only enable this if you have security enabled on your cluster
ingress:
  enabled: false
  annotations: {}
  # kubernetes.io/ingress.class: nginx
  # kubernetes.io/tls-acme: "true"
  # If using nginx, disable body limits and increase read and write timeouts
  # nginx.ingress.kubernetes.io/proxy-body-size: "0"
  # nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
  # nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
  className: "nginx"
  pathtype: ImplementationSpecific
  hosts:
    - host: chart-example.local
      paths:
        - path: /
  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local
# By default, Kubernetes HTTP probes use HTTP 'scheme'. So if TLS is enabled
# in configuration, to prevent failures, the scheme must be set to 'HTTPS'.
httpGet:
  scheme: HTTP
# By default, Kubernetes considers a Pod healthy if the liveness probe returns
# successfully. However, sometimes applications need additional startup time on
# their first initialization. By defining a startupProbe, we can allow the
# application to take extra time for initialization without compromising fast
# response to deadlocks.
startupProbe:
  initialDelaySeconds: 5
  periodSeconds: 10
  failureThreshold: 3
# If mountConfig is true the configMap named $CHART_RELEASE-config is mounted
# on the pod's '/etc/zot' directory
mountConfig: false
# If mountConfig is true the chart creates the '$CHART_RELEASE-config', if it
# does not exist the user is in charge of managing it (as this file includes a
# sample file you have to add it empty to handle it externally) ... note that
# the service does not reload the configFiles once mounted, so you need to
# delete the pods to create new ones to use the new values.
configFiles:
  config.json: |-
    {
      "storage": { "rootDirectory": "/var/lib/registry" },
      "http": { "address": "0.0.0.0", "port": "5000" },
      "log": { "level": "debug" }
    }
# Alternatively, the configuration can include authentication and acessControl
# data and we can use mountSecret option for the passwords.
#
#  config.json: |-
#    {
#      "storage": { "rootDirectory": "/var/lib/registry" },
#      "http": {
#        "address": "0.0.0.0",
#        "port": "5000",
#        "auth": { "htpasswd": { "path": "/secret/htpasswd" } },
#        "accessControl": {
#          "repositories": {
#            "**": {
#              "policies": [{
#                "users": ["user"],
#                "actions": ["read"]
#              }],
#              "defaultPolicy": []
#            }
#          },
#          "adminPolicy": {
#            "users": ["admin"],
#            "actions": ["read", "create", "update", "delete"]
#          }
#        }
#      },
#      "log": { "level": "debug" }
#    }

# externalSecrets allows to mount external (meaning not managed by this chart)
# Kubernetes secrets within the Zot container.
# The secret is identified by its name (property "secretName") and should be
# present in the same namespace. The property "mountPath" specifies the path
# within the container filesystem where the secret is mounted.
#
# Below is an example:
#
#  externalSecrets:
#  - secretName: "secret1"
#    mountPath: "/secrets/s1"
#  - secretName: "secret2"
#    mountPath: "/secrets/s2"
externalSecrets: []
# If mountSecret is true, the Secret named $CHART_RELEASE-secret is mounted on
# the pod's '/secret' directory (it is used to keep files with passwords, like
# a `htpasswd` file)
mountSecret: false
# If secretFiles does not exist the user is in charge of managing it, again, if
# you want to manage it the value has to be added empty to avoid using this one
secretFiles:
  # Example htpasswd with 'admin:admin' & 'user:user' user:pass pairs
  htpasswd: |-
    admin:$2y$05$vmiurPmJvHylk78HHFWuruFFVePlit9rZWGA/FbZfTEmNRneGJtha
    user:$2y$05$L86zqQDfH5y445dcMlwu6uHv.oXFgT6AiJCwpv3ehr7idc0rI3S2G
# Authentication string for Kubernetes probes, which is needed when `htpasswd`
# authentication is enabled, but the anonymous access policy is not.
# It contains a `user:password` string encoded in base64. The example value is
# from running `echo -n "foo:var" | base64`
# authHeader: "Zm9vOmJhcg=="

# If persistence is 'true' the service uses a persistentVolumeClaim to mount a
# volume for zot on '/var/lib/registry'; by default the pvc used is named
# '$CHART_RELEASE-pvc', but the name can be changed below
persistence: false
# PVC data, only used if persistence is 'true'
pvc:
  # Make the chart create the PVC, this option is used with storageClasses that
  # can create volumes dynamically, if that is not the case is better to do it
  # manually and set create to false
  create: false
  # Name of the PVC to use or create if persistence is enabled, if not set the
  # value '$CHART_RELEASE-pvc' is used
  name: null
  # Volume access mode, if using more than one replica we need
  accessMode: "ReadWriteOnce"
  # Size of the volume requested
  storage: 8Gi
  # Name of the storage class to use if it is different than the default one
  storageClassName: null
# List of environment variables to set on the container
env:
# - name: "TEST"
#  value: "ME"
# - name: SECRET_NAME
#  valueFrom:
#    secretKeyRef:
#      name: mysecret
#      key: username

# Extra Volume Mounts
extraVolumeMounts: []
# - name: data
#   mountPath: /var/lib/registry

# Extra Volumes
extraVolumes: []
# - name: data
#   emptyDir: {}

# Deployment strategy type
strategy:
  type: RollingUpdate
#  rollingUpdate:
#    maxUnavailable: 25%

podAnnotations: {}
