Chart reference
The Helm chart aims to offer easy config settings through values for most used Kubernetes or Horizon features. If something you need is not yet covered, you can also use:
-
extraConfigto directly edit Horizon config; -
extraObjectsto add related Kubernetes resources.
The chart source is also freely available to investigate unwanted behaviors.
global
Global Docker image parameters. Please note that this will override the image parameters, including dependencies, configured to use the global value.
image
By default, we fetch the Horizon image from the Evertrust registry. If the tag is null or unset, the default value will be set to the chart appVersion. As the official Evertrust registry is not in open-access, you should specify an image pull secret that has access to Horizon images.
updateStrategy
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
extraVolumes
Optionally specify extra list of additional volumes for Horizon pods
extraVolumes: []
extraVolumes:
- name: extra-volume-name
configMap:
name: example-configmap
extraVolumeMounts
Optionally specify extra list of additional volumeMounts for Horizon container(s)
extraVolumeMounts: []
extraVolumeMounts:
- name: extra-volume-name
mountPath: /mnt/extra-volume
sidecars
Add additional sidecar containers to the Horizon pod
sidecars: []
sidecars:
- name: your-image-name
image: your-image
imagePullPolicy: Always
ports:
- name: portname
containerPort: 1234
podAffinityPreset
Pod affinity preset. Ignored if affinity is set. Allowed values: soft or hard
podAffinityPreset: ""
podAntiAffinityPreset
Pod anti-affinity preset. Ignored if affinity is set. Allowed values: soft or hard
podAntiAffinityPreset: "soft"
nodeAffinityPreset
affinity
Affinity for pod assignment
| podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it’s set. |
affinity: {}
topologySpreadConstraints
Spread Constraints for pod assignment
topologySpreadConstraints: []
topologySpreadConstraints:
- maxSkew: 1
topologyKey: node
whenUnsatisfiable: DoNotSchedule
resources
Horizon containers' resource requests and limits. The JVM will automatically adapt the memory allocation pool to the container allocated resources.
containerSecurityContext
startupProbe
disruptionBudget
environment
Configure environment variable injections into Horizon’s pods. This is the way you should inject secrets into the app if you wish to use the Kubernetes secrets implementation.
environment: []
environment:
- name: KEY
value: VALUE
dnsConfig
This value is useful if you need to resolve your custom domain for ACME challenges.
dnsConfig: {}
nameservers:
- 1.2.3.4
searches:
- ns1.svc.cluster-domain.example
- my.dns.search.suffix
options:
- name: ndots
value: "2"
service
Service configuration
loadBalancerIP
Load balancer IP for the Horizon Service (optional, cloud specific)
service.loadBalancerIP: ""
loadBalancerSourceRanges
Address that are allowed when service is LoadBalancer
service.loadBalancerSourceRanges: []
loadBalancerSourceRanges:
- 10.10.10.0/24
ingress
Ingress configuration
type
Ingress type
Automatically configure your ingress for an ingress controller. Accepted values are nginx, traefik. This will override the clientCertificateHeader if set, and generate annotations, resources, and ingresses resources to ensure Horizon works correctly.
ingress.type: ""
clientCertificateAuth
Client certificate authentication
When ingress.type is set, determines whether the ingress controller should request client certificates.
ingress.clientCertificateAuth: false
clientCertificateCASecrets
Client certificate CA secrets
If set, the ingress controller will only request client certificates signed by these CAs. Each secret should contain a ca.crt key containing the PEM-encoded AC certificate.
ingress.clientCertificateCASecrets: []
scepCompatibilityMode
SCEP compatibility mode
Adds a secondary ingress for SCEP support over HTTP.
ingress.scepCompatibilityMode: false
ingressClassName
IngressClass that will be used to implement the Ingress (Kubernetes 1.18+)
ingress.ingressClassName: ""
hostname
Default host for the ingress resource
ingress.hostname: ""
hostname: "horizon.local"
path
Default path for the ingress record
| You may need to set this to '/*' in order to use this with ALB ingress controllers. |
ingress.path: "/"
annotations
Additional annotations for the Ingress resource
To enable certificate autogeneration, place here your cert-manager annotations.
ingress.annotations: {}
annotations:
cert-manager.io/cluster-issuer: cluster-issuer-name
tls
Enable TLS configuration for the hostname defined at ingress.hostname parameter
TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.ingress.hostname }} You can use the ingress.secrets parameter to create this TLS secret, relay on cert-manager to create it, or let the chart create self-signed certificates for you.
ingress.tls: false
extraHosts
The list of additional hostnames to be covered with this ingress record
Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array.
ingress.extraHosts: []
extraHosts:
- name: horizon.local
path: /
extraPaths
An array with additional arbitrary paths that may need to be added to the ingress under the main host
ingress.extraPaths: []
extraPaths:
- path: /*
backend:
serviceName: ssl-redirect
servicePort: use-annotation
extraTls
The tls configuration for additional hostnames to be covered with this ingress record
ingress.extraTls: []
extraTls:
- hosts:
- horizon.local
secretName: horizon.local-tls
appSecret
Configure the Play secret for the Horizon instance. As this is used for cryptographic purposes, it should be fetched from the environment.
appSecret: {}
appSecret:
valueFrom:
secretKeyRef:
name: horizon-secret
key: appSecret
license
A valid Horizon license is required for the software to run. You should store it (base64-encoded) in a Kubernetes secret and specify the secret details here.
README.md[README.md]
initialAdminHashPassword
legacySsvPassword
Horizon legacy SSV password (Optional). Should be set if upgrading from Horizon 2.7 or earlier to Horizon 2.8 or later.
legacySsvPassword: {}
legacySsvPassword:
secretName: horizon-legacy-ssv-password
secretKey: legacySsvPassword
allowedHosts
Additional allowed hosts that are whitelisted to access the Horizon UI. Configured ingresses will automatically be added to the list, this should only be used when port forwarding or when an ingress is created manually.
allowedHosts:
- localhost:9000
allowedHosts:
- localhost:9000
- demo.example.org
trustedProxies
Depending on your Kubernetes environment, Ingress IPs may be unpredictable. In that case, you should whitelist every IP in your local addressing space.
trustedProxies:
- 0.0.0.0/0
- '::/0'
trustedProxies:
- 0.0.0.0/0
- ::/0
events
Configuration for Horizon events
chainsign
Whether Horizon events should be signed and chained using the event seal secret
events.chainsign: true
logFormat
Format in which logs will be outputted. Can be set either to "console" or "json" for structured logging.
logFormat: "console"
mailer
Configuration for the Horizon mailer. You should configure this if you want your Horizon instance to be able to send emails. You should fetch credentials from the environment if they are required.
logback
Configure the logger for this Horizon instance. Sensible defaults are set, but you may need a more verbose logging experience when debugging the application.
pattern
Log messages pattern
logback.pattern: "%date{yyyy-MM-dd HH:mm:ss} - [%logger] - [%traceID] - [%level] - %message%n%xException{full}"
loggers
Logging level overrides for specific loggers
logback.loggers:
- name: events
level: warn
- name: json_events
level: info
loggers:
- name: actors
level: debug
- name: actions
level: debug
- name: controllers
level: debug
- name: filters
level: debug
- name: models
level: debug
- name: modules
level: debug
- name: pki-connectors
level: debug
- name: racs-connectors
level: debug
serviceAccount
name
Name of the created ServiceAccount
If not set and create is true, a name is generated using the horizon.fullname template.
serviceAccount.name: ""
clientCertificateHeader
Indicates to Horizon in which header the client certificate will be passed. Will be automatically set by the ingress.clientCertificateAuth value if set.
clientCertificateHeader: ""
podsDirectConnect
Whether Horizon pods should connect to each other directly via IP, or through a DNS record generated by a Kubernetes DNS server. Useful if the kube-dns server is configured with "pods disabled" or if you use GKE Cloud DNS. NOTE: This is not supported by Istio.
podsDirectConnect: false
extraConfig
Additional configuration for Horizon. Injecting arbitrary config could result in unexpected behavior. Proceed with caution.
extraConfig: ""
extraConfig: |
horizon {
notification.mail.attachment.extension.der = "der"
}
upgrade
Upgrade job
enabled
If true, an upgrade job will be run when upgrading the release, modifying your database schema. This works even if mongodb.enabled is set to false.
upgrade.enabled: true
force
If true, an upgrade job will be run every time the Chart is installed or upgraded.
upgrade.force: false
annotations
Extra annotations to add to the upgrade job
upgrade.annotations:
helm.sh/hook: post-upgrade
helm.sh/hook-delete-policy: before-hook-creation
helm.sh/hook-weight: '0'
resources
horizon-migration container resources
upgrade.resources:
limits:
memory: 512Mi
cpu: 500m
requests:
memory: 512Mi
cpu: 500m
from
Sets the version you’re upgrading from. If empty, the chart will try to infer the version from the database.
upgrade.from: ""
to
Sets the version you’re upgrading to. If empty, the chart will use Chart.AppVersion.
upgrade.to: ""
containerSecurityContext
Configure Container Security Context
extraVolumes
Optionally specify extra list of additional volumes for the upgrade pod
upgrade.extraVolumes: []
extraVolumes:
- name: extra-volume-name
configMap:
name: example-configmap
externalDatabase
Configuration for an Horizon external database
Refer to the Horizon installation guide to configure the installation correctly.
extraObjects
Create dynamic manifests via values
extraObjects: []
extraObjects:
- apiVersion: "kubernetes-client.io/v1"
kind: ExternalSecret
metadata:
name: horizon-secrets
spec:
backendType: gcpSecretsManager
data:
- key: horizon-secret-key
name: horizon-secret-name
analytics
Enable analytics engine
Refer to the Horizon installation guide to configure the installation correctly.