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

replicaCount: 2

debug: false

certificate:
  useCertManager: false
  servingCertificate: null
  generate: true
  server:
    tls:
      crt:
      key:
  ca:
    crt:
  extraAltNames: []
  # use extra names if you want use the webhook via an ingress or a loadbalancer

image:
  repository: ghcr.io/banzaicloud/vault-secrets-webhook
  # tag: ""
  pullPolicy: IfNotPresent
  imagePullSecrets: []

service:
  name: vault-secrets-webhook
  type: ClusterIP
  externalPort: 443
  internalPort: 8443
  annotations: {}
  # Annotate service
  # This can be used for example if type is AWS LoadBalancer and you want to add security groups

ingress:
  enabled: false
  annotations: {}
  # dns of ingress for vault-webhook
  # host: example.com

webhookClientConfig:
  # By default the mutating webhook uses the service of the webhook directly to contact webhook
  # Use url if webhook should be contacted over loadbalancer or ingress instead of service object
  useUrl: false
  # set the url how the webhook should be contacted (including protocol https://)
  # url: https://example.com

vaultEnv:
  repository: ghcr.io/banzaicloud/vault-env
  # tag: ""

env:
  VAULT_IMAGE: vault:1.6.2
  # VAULT_CAPATH: /vault/tls
  # # Used when the pod that should get secret injected does not
  # # specify an imagePullSecret
  # DEFAULT_IMAGE_PULL_SECRET:
  # DEFAULT_IMAGE_PULL_SECRET_NAMESPACE:
  # DEFAULT_IMAGE_PULL_SECRET_SERVICE_ACCOUNT
  # VAULT_CLIENT_TIMEOUT: 10s
  # # define the webhook's role in Vault used for authentication,
  # # if not defined individually in resources by annotations.
  # VAULT_ROLE: vault-secrets-webhook
  # Resource requests and limits for init containers
  # VAULT_ENV_CPU_REQUEST:
  # VAULT_ENV_MEMORY_REQUEST:
  # VAULT_ENV_CPU_LIMIT:
  # VAULT_ENV_MEMORY_LIMIT
  # VAULT_ENV_LOG_SERVER:

initContainers: []
  ## Containers, which are run before the app containers are started.
  # - name: init-myservice
  #   image: busybox
  #   command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']

metrics:
  enabled: true
  port: 8443
  serviceMonitor:
    enabled: true
    scheme: https
    tlsConfig:
      insecureSkipVerify: true

securityContext:
  runAsUser: 65534
  allowPrivilegeEscalation: false

podSecurityContext: {}

volumes: []
# - name: vault-tls
#   secret:
#     secretName: vault-tls

volumeMounts: []
# - name: vault-tls
#   mountPath: /vault/tls

podAnnotations: {}

labels: {}
  #  team: banzai

resources: {}

nodeSelector: {}

tolerations: []

affinity: {}

topologySpreadConstraints: {}

## Assign a PriorityClassName to pods if set
priorityClassName: ""

rbac:
  psp:
    enabled: false
  authDelegatorRole:
    enabled: false

serviceAccount:
  # Specifies whether a service account should be created
  create: true
  # Labels to add to the service account
  labels: {}
  # Annotations to add to the service account
  annotations: {}
  # Enables GKE workload identity
  #  iam.gke.io/gcp-service-account: gsa@project.iam.gserviceaccount.com
  # The name of the service account to use.
  # If not set and create is true, a name is generated using the fullname template
  name: ""

deployment:
  # Strategy for the deployment
  strategy: {}

# A list of Kubernetes resource types to mutate as well:
# Example: ["ingresses", "servicemonitors"]
customResourceMutations: []

customResourcesFailurePolicy: Ignore

# This can cause issues when used with Helm, so it is not enabled by default
configMapMutation: false

# Whether to mutate Secrets with values from Vault. Set to false in order to prevent secret values from being persisted in Kubernetes.
secretsMutation: true

configMapFailurePolicy: Ignore

podsFailurePolicy: Ignore

secretsFailurePolicy: Ignore

apiSideEffectValue: NoneOnDryRun

namespaceSelector:
  matchExpressions:
    - key: name
      operator: NotIn
      values:
        - kube-system
    # https://kubernetes.io/docs/reference/labels-annotations-taints/#kubernetes-io-metadata-name
    - key: kubernetes.io/metadata.name
      operator: NotIn
      values:
        - kube-system
  # matchLabels:
  #   vault-injection: enabled

# In case of the K8s cluster version is above 1.15 objectSelector is usable
objectSelector: {}
  # matchExpressions:
  # - key: security.banzaicloud.io/mutate
  #   operator: NotIn
  #   values:
  #   - skip
  # matchLabels:
  #   vault-injection: enabled

# objectSelector & namespaceSelector for secrets resource (overrides `objectSelector`); Requires K8s 1.15+
secrets:
  objectSelector: {}
  namespaceSelector: {}

# objectSelector & namespaceSelector for pods resource (overrides `objectSelector`); Requires K8s 1.15+
pods:
  objectSelector: {}
  namespaceSelector: {}

# objectSelector & namespaceSelector for configmap resource (overrides `objectSelector`); Requires K8s 1.15+
configMaps:
  objectSelector: {}
  namespaceSelector: {}

# objectSelector & namespaceSelector for customResource resource (overrides `objectSelector`); Requires K8s 1.15+
customResources:
  objectSelector: {}
  namespaceSelector: {}

podDisruptionBudget:
  enabled: true
  minAvailable: 1
  # maxUnavailable: 1

timeoutSeconds: false

hostNetwork: false

# If you're using celium (CNI) and you are required to set hostNetwork to true
# then pods with webhooks must set the dnsPolicy to "ClusterFirstWithHostNet"
dnsPolicy: ""

# Override cluster version
kubeVersion: ""
