Skip to content

Approver Policy Helm values

Approver Policy is an cert-manager approver that approves or denies certificate requests based on policies defined in the certificate request policy custom resource.

The following Approver Policy Helm values are supported by the Venafi Kubernetes Manifest tool.

nameOverride

Property nameOverride
Type string
Default

nameOverride replaces the name of the chart in the Chart.yaml file, when this is used to construct Kubernetes object names.

http_proxy

Property http_proxy
Type string
Default

Configures the HTTP_PROXY environment variable where a HTTP proxy is required.

https_proxy

Property https_proxy
Type string
Default

Configures the HTTPS_PROXY environment variable where a HTTP proxy is required.

no_proxy

Property no_proxy
Type string
Default

Configures the NO_PROXY environment variable where a HTTP proxy is required, but certain domains should be excluded.

crds.enabled

Property crds.enabled
Type bool
Default
true

This option decides if the CRDs should be installed as part of the Helm installation.

crds.keep

Property crds.keep
Type bool
Default
true

This option makes it so that the helm.sh/resource-policy: keep annotation is added to the CRD. This will prevent Helm from uninstalling the CRD when the Helm release is uninstalled.

Warning

When the CRDs are removed, all cert-manager-approver-policy custom resources (CertificateRequestPolicy) will be removed too by the garbage collector.

replicaCount

Property replicaCount
Type number,string,null
Default
1

Number of replicas of approver-policy to run.

For example:
Use integer to set a fixed number of replicas

replicaCount: 2

Use null, if you want to omit the replicas field and use the Kubernetes default value.

replicaCount: null

Use a string if you want to insert a variable for post-processing of the rendered template.

replicaCount: ${REPLICAS_OVERRIDE:=3}

image.registry

Property image.registry
Type string
Default

Target image registry. This value is prepended to the target image repository, if set.
For example:

registry: quay.io
repository: jetstack/cert-manager-approver-policy

image.repository

Property image.repository
Type string
Default
quay.io/jetstack/cert-manager-approver-policy

Target image repository.

image.tag

Property image.tag
Type string
Default

Override the image tag to deploy by setting this variable. If no value is set, the chart's appVersion is used.

image.digest

Property image.digest
Type string
Default

Target image digest. Override any tag, if set.
For example:

digest: sha256:0e072dddd1f7f8fc8909a2ca6f65e76c5f0d2fcfb8be47935ae3457e8bbceb20

image.pullPolicy

Property image.pullPolicy
Type string
Default
IfNotPresent

Kubernetes imagePullPolicy on Deployment.

imagePullSecrets

Property imagePullSecrets
Type array
Default
[]

Optional secrets used for pulling the approver-policy container image.

app.logLevel

Property app.logLevel
Type number
Default
1

Verbosity of approver-policy logging. This is a value from 1 to 5.

app.extraArgs

Property app.extraArgs
Type array
Default
[]

Extra CLI arguments that will be passed to the approver-policy process.

app.approveSignerNames

Property app.approveSignerNames
Type array
Default
- issuers.cert-manager.io/*
- clusterissuers.cert-manager.io/*

List if signer names that approver-policy will be given permission to approve and deny. CertificateRequests referencing these signer names can be processed by approver-policy. For more information, see cert-manager documentation.

app.metrics.port

Property app.metrics.port
Type number
Default
9402

Port for exposing Prometheus metrics on 0.0.0.0 on path /metrics.

app.metrics.service.servicemonitor

Property app.metrics.service.servicemonitor
Type bool
Default
true

Create a Service resource to expose metrics endpoint.

app.metrics.service.servicemonitor

Property app.metrics.service.servicemonitor
Type string
Default
ClusterIP

The service type to expose metrics.

app.metrics.service.servicemonitor.enabled

Property app.metrics.service.servicemonitor.enabled
Type bool
Default
false

Create Prometheus ServiceMonitor resource for approver-policy.

app.metrics.service.servicemonitor.prometheusInstance

Property app.metrics.service.servicemonitor.prometheusInstance
Type string
Default
default

The value for the "prometheus" label on the ServiceMonitor. This allows for multiple Prometheus instances selecting difference ServiceMonitors using label selectors.

app.metrics.service.servicemonitor.interval

Property app.metrics.service.servicemonitor.interval
Type string
Default
10s

The interval that the Prometheus will scrape for metrics.

app.metrics.service.servicemonitor.scrapeTimeout

Property app.metrics.service.servicemonitor.scrapeTimeout
Type string
Default
5s

The timeout on each metric probe request.

app.metrics.service.servicemonitor.labels

Property app.metrics.service.servicemonitor.labels
Type object
Default
{}

Additional labels to give the ServiceMonitor resource.

app.readinessProbe.port

Property app.readinessProbe.port
Type number
Default
6060

The container port to expose Approver Policy HTTP readiness probe on default network interface.

app.webhook.host

Property app.webhook.host
Type string
Default
0.0.0.0

The host that the webhook listens on.

app.webhook.port

Property app.webhook.port
Type number
Default
10250

The port that the webhook listens on.

app.webhook.timeoutSeconds

Property app.webhook.timeoutSeconds
Type number
Default
5

The timeout of webhook HTTP request.

app.webhook.hostNetwork

Property app.webhook.hostNetwork
Type bool
Default

Deprecated. Use .hostNetwork instead.

app.webhook.dnsPolicy

Property app.webhook.dnsPolicy
Type string
Default

Deprecated. Use .dnsPolicy instead.

app.webhook.affinity

Property app.webhook.affinity
Type object
Default

Deprecated. Use .affinity instead.

app.webhook.nodeSelector

Property app.webhook.nodeSelector
Type object
Default

Deprecated. Use .nodeSelector instead.

app.webhook.tolerations

Property app.webhook.tolerations
Type array
Default

Deprecated. Use .tolerations instead.

app.webhook.service.type

Property app.webhook.service.type
Type string
Default
ClusterIP

The type of Kubernetes Service used by the webhook.

app.webhook.service.nodePort

Property app.webhook.service.nodePort
Type number
Default

The nodePort set on the Service used by the webhook.

hostNetwork

Property hostNetwork
Type bool
Default
false

Boolean value, expose pod on hostNetwork.
Required when running a custom CNI in managed providers such as AWS EKS.

For more information, see AWS EKS.

dnsPolicy

Property dnsPolicy
Type string
Default
ClusterFirst

This value may need to be changed if hostNetwork: true

priorityClassName

Property priorityClassName
Type string
Default
""

Configure the priority class of the Pod.

For more information, see:
- Guaranteed Scheduling For Critical Add-On Pods
- Protect Your Mission-Critical Pods From Eviction With PriorityClass

For example:

priorityClassName: system-cluster-critical

affinity

Property affinity
Type object
Default
{}

A Kubernetes Affinity, if required. For more information, see Affinity v1 core.

For example:

affinity:
  nodeAffinity:
   requiredDuringSchedulingIgnoredDuringExecution:
     nodeSelectorTerms:
     - matchExpressions:
       - key: foo.bar.com/role
         operator: In
         values:
         - master

nodeSelector

Property nodeSelector
Type object
Default
{}

The nodeSelector on Pods tells Kubernetes to schedule Pods on the nodes with matching labels. For more information, see Assigning Pods to Nodes.

tolerations

Property tolerations
Type array
Default
[]

A list of Kubernetes Tolerations, if required. For more information, see Toleration v1 core.

For example:

tolerations:
- key: foo.bar.com/role
  operator: Equal
  value: master
  effect: NoSchedule

topologySpreadConstraints

Property topologySpreadConstraints
Type array
Default
[]

List of Kubernetes TopologySpreadConstraints. For more information, see:
Pod Topology Spread Constraints.

For example:

topologySpreadConstraints:
- maxSkew: 2
  topologyKey: topology.kubernetes.io/zone
  whenUnsatisfiable: ScheduleAnyway
  labelSelector:
    matchLabels:
      app.kubernetes.io/name: cert-manager-approver-policy
      app.kubernetes.io/instance: cert-manager-approver-policy

podDisruptionBudget.enabled

Property podDisruptionBudget.enabled
Type bool
Default
false

Enable or disable the PodDisruptionBudget resource.

This prevents downtime during voluntary disruptions such as during a Node upgrade. For example, the PodDisruptionBudget blocks kubectl drain if it is used on the Node where the only remaining approver-policy
Pod is currently running.

podDisruptionBudget.minAvailable

Property podDisruptionBudget.minAvailable
Type number
Default

Configures the minimum available pods for disruptions.
Cannot be used if maxUnavailable is set.

podDisruptionBudget.maxUnavailable

Property podDisruptionBudget.maxUnavailable
Type number
Default

Configures the maximum unavailable pods for disruptions.
Cannot be used if minAvailable is set.

volumeMounts

Property volumeMounts
Type array
Default
[]

Optional extra volume mounts. Useful for mounting custom root CAs.

For example:

volumeMounts:
- name: my-volume-mount
  mountPath: /etc/approver-policy/secrets

volumes

Property volumes
Type array
Default
[]

Optional extra volumes.

For example:

volumes:
- name: my-volume
  secret:
    secretName: my-secret

resources

Property resources
Type object
Default
{}

Kubernetes pod resources.
For more information, see Resource Management for Pods and Containers.

For example:

resources:
  limits:
    cpu: 100m
    memory: 128Mi
  requests:
    cpu: 100m
    memory: 128Mi

commonLabels

Property commonLabels
Type object
Default
{}

Allow custom labels to be placed on resources - optional.

podAnnotations

Property podAnnotations
Type object
Default
{}

Allow custom annotations to be placed on cert-manager-approver pod - optional.

strategy

Property strategy
Type object
Default
{}

Deployment update strategy for the Approver Policy Deployment.

This could be needed when deploying Approver Policy on each control-plane node and setting anti-affinities to forbid two pods on the same node. In this situation, default values of maxSurge (25% round up to next integer = 1) and maxUnavailable (25% round down to next integer = 0) block the rolling update as the new surge pod can't be scheduled on a control-plane node due to anti-affinities. Setting maxSurge to 0 and maxUnavailable to 1 would solve the problem.

For example:

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 0
    maxUnavailable: 1

For more information, see the Kubernetes documentation.