openforms2xxllnc

A Helm chart for running a Frank! on Kubernetes

1.1.1

🔌Frank!Framework Template Chart

This template Helm Chart can be copied as a start point for a new Frank!.

This chart won't be published because it is not in the charts folder.

Usage

Helm must be installed to use the charts. Please refer to Helm's documentation to get started.

Once Helm has been set up correctly, add the repo as follows:

helm repo add frankframework https://frankframework.github.io/charts

If you had already added this repo earlier, run helm repo update to retrieve the latest versions of the packages. You can then run helm search repo frankframework to see the charts.

To install the ff-template chart:

helm install my-ff-template frankframework/ff-template

To uninstall the chart:

helm delete my-ff-template

Parameters

Common parameters

NameDescriptionValue
nameOverrideString to partially override common.names.fullname template (will maintain the release name)""
fullnameOverrideString to fully override common.names.fullname template""

Frank!Framework image parameters

NameDescriptionValue
image.registryFrank!Framework image registrywearefrank
image.repositoryFrank!Framework image repositoryopenforms2xxllnc
image.tagFrank!Framework image tag (immutable tags are recommended)""
image.pullPolicyFrank!Framework image pull policyIfNotPresent
image.pullSecretsFrank!Framework image pull secrets[]

Frank! Configuration parameters

NameDescriptionValue
frank.memory.percentageSet if the values for the memory are in percentagesfalse
frank.memory.minimumSets the initial size of the heap that will be used by the Frank!Framework1G
frank.memory.maximumSets the maximum size of the heap that will be used by the Frank!Framework1G
frank.dtap.stage(Required) Set the DTAP stage. Options: LOC, DEV, TST, ACC, PRD""
frank.dtap.sideSet the DTAP side of where the instance is running""
frank.credentials.secretSet the secret name of the existing secret""
frank.credentials.keySet the key inside the secret that contains the data (e.g. credentials.properties)""
frank.instance.nameSet the name of the Frank! instance (default is the fullname)""
frank.configurations.namesSet the configurations to load. Leave empty to use the default[]
frank.security.certificateStoresDefine certificate (key/trust) stores to mount in the resources folder of the Frank![]
frank.security.certificateStores.secretNameName of the secret where the certificate store is located in""
frank.security.certificateStores.keyThe key in the secret where the certificate store is located in""
frank.security.certificateStores.resourceUrlThe path to the certificate store in the Resource folder, the key will be used as default valueundefined
frank.security.http.authenticationSet http authentication for the Frank!false
frank.security.http.localUsersSet localUsers who can log in on the Frank![]
frank.security.http.localUsers.usernameSet the username of the user""
frank.security.http.localUsers.passwordSet the password of the user""
frank.security.http.localUsers.rolesSet the roles of the user. Options: IbisTester, IbisDataAdmin, IbisAdmin, IbisWebService, IbisObserver[]
frank.security.http.activeDirectory.enabledEnable Active Directory for authenticationfalse
frank.security.http.activeDirectory.urlSet url for Active Directory""
frank.security.http.activeDirectory.baseDnSet baseDn for Active Directory users""
frank.security.http.activeDirectory.roleMapping.testerMap the role for Tester""
frank.security.http.activeDirectory.roleMapping.dataAdminMap the role for DataAdmin""
frank.security.http.activeDirectory.roleMapping.adminMap the role for Admin""
frank.security.http.activeDirectory.roleMapping.webServiceMap the role for WebService""
frank.security.http.activeDirectory.roleMapping.observerMap the role for Observer""
frank.server.transactionManagerSet the transaction manager for Tomcat. Options: NARAYANA, BTM, ``""
frank.propertiesSet Yaml properties for configuring the Frank!Framework or configurations{}
frank.environmentVariablesSet extra environment variables for the Frank!{}
frank.javaOptsAppend custom options to the JAVA_OPTS environment variable for the Frank!""

Frank!Framework Connection parameters

NameDescriptionValue
connections.createCreate a context.xml and possibly overwrite the existing one, to configure the connections/resources.true
connections.jdbcSet multiple database connections. One connection should have an empty name, so it'll get picked up by default (unless jdbc.required=false is set)[]
connections.jdbc.nameName of the connection (leave empty to use default: jdbc/${.Values.instance.name} in lowercase)""
connections.jdbc.typeDBMS type. Options: oracle, mssql, mysql, mariadb, postgresql, db2, mongodb""
connections.jdbc.hostHost of where the database can be reached (like in the same cluster e.g. <service>.<namespace>.svc.cluster.local)""
connections.jdbc.postPort for the database (leave empty for default)""
connections.jdbc.databaseName of the database to use (default is .Values.instance.name)""
connections.jdbc.usernameUsername to connect to the database (or use string template for use with credentials e.g. ${database/username})""
connections.jdbc.passwordPassword to connect to the database (or use string template for use with credentials e.g. ${database/password})""
connections.jdbc.sslSet to true is the connection uses SSL, default is false""
connections.jmsSet multiple message services[]
connections.jms.nameName of the connection (leave empty to use default: jms/${.Values.instance.name} in lowercase)""
connections.jms.typeMQ type. Options: artemis, activemq""
connections.jms.hostHost of where the MQ can be reached (like in the same cluster e.g. <service>.<namespace>.svc.cluster.local)""
connections.jms.postPort for the MQ (leave empty for default)""

Frank!Framework deployment parameters

The startup probe will enable blue-green deployment, which are great for uptime during upgrades and such. It (and the liveness probe) will check if the console is accessible, until a better health endpoint is available. The readiness probe will check if all adapters are running using the server health endpoint

NameDescriptionValue
replicaCountNumber of Frank!Framework replicas to deploy1
startupProbe.initialDelaySecondsInitial delay seconds for startupProbe40
startupProbe.periodSecondsPeriod seconds for startupProbe10
startupProbe.timeoutSecondsTimeout seconds for startupProbe1
startupProbe.failureThresholdFailure threshold for startupProbe12
startupProbe.successThresholdSuccess threshold for startupProbe1
livenessProbe.initialDelaySecondsInitial delay seconds for livenessProbe0
livenessProbe.periodSecondsPeriod seconds for livenessProbe10
livenessProbe.timeoutSecondsTimeout seconds for livenessProbe1
livenessProbe.failureThresholdFailure threshold for livenessProbe12
livenessProbe.successThresholdSuccess threshold for livenessProbe1
readinessProbe.initialDelaySecondsInitial delay seconds for readinessProbe0
readinessProbe.periodSecondsPeriod seconds for readinessProbe5
readinessProbe.timeoutSecondsTimeout seconds for readinessProbe1
readinessProbe.failureThresholdFailure threshold for readinessProbe3
readinessProbe.successThresholdSuccess threshold for readinessProbe1
probesEnabledToggle probes. This should only be used if a Frank! needs to be kept while in a bad state (for debugging purposes){}
probesEnabled.startupProbeToggle startupProbe{}
probesEnabled.livenessProbeToggle livenessProbe{}
probesEnabled.readinessProbeToggle readinessProbe{}
resourcesSet the resources for the Frank!Framework containers{}
resources.limitsThe resources limits for the Frank!Framework containers""
resources.requests.memoryThe requested memory for the Frank!Framework containers""
resources.requests.cpuThe requested cpu for the Frank!Framework containers""
terminationGracePeriodSecondsNumber of seconds after which pods are forcefully killed60
terminationGracePeriodSecondsNote: Lower values may cause running adapters to fail
nodeSelectorNode labels for pod assignment{}
tolerationsSet tolerations for pod assignment[]
affinitySet affinity for pod assignment{}
timeZoneused for database connection and log timestampsEtc/UTC

Traffic Exposure Parameters

NameDescriptionValue
service.typeFrank!Framework service typeClusterIP
service.portFrank!Framework service port80
ingress.enabledEnable ingress record generation for Frank!false
ingress.classNameIngressClass that will be used to implement the Ingress (Kubernetes 1.18+)""
ingress.annotationsAdditional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.{}
ingress.hostsSet hosts for ingress[]
ingress.hosts.hostSet hostname""
ingress.hosts.pathsSet multiple paths[]
ingress.hosts.paths.pathSet path (context url)""
ingress.hosts.paths.pathTypeSet type of path""
ingress.tlsDefine tls secrets for hosts (implementation not done yet)[]

Other Parameters

NameDescriptionValue
serviceAccount.createEnable creation of ServiceAccount for Frank!Framework podtrue
serviceAccount.annotationsAdditional custom annotations for the ServiceAccount{}
serviceAccount.nameThe name of the ServiceAccount to use.""
podAnnotationsAnnotations for Frank!Framework pods{}
podLabelsExtra labels for Frank!Framework pods{}
podSecurityContextSet Frank!Framework pod's Security Context{}
securityContextSet Frank!Framework container's Security Context{}

Persistence

Persistence is used for keeping heap dumps. They can be found at /heap-dumps with persistence enabled. Otherwise, they can be found at /usr/local/tomcat/logs

NameDescriptionValue
persistence.enabledEnable persistence using Persistent Volume Claimsfalse
persistence.storageClassPersistent Volume storage class""
persistence.accessModesPersistent Volume access modes[]
persistence.sizePersistent Volume size5Gi
persistence.dataSourceCustom PVC data source{}
persistence.existingClaimThe name of an existing PVC to use for persistence""
persistence.selectorSelector to match an existing Persistent Volume for the Frank!Framework's data PVC{}
persistence.annotationsPersistent Volume Claim annotations{}

Openforms2xxllnc

Connections

NameDescriptionValue
openforms2xxllnc.connections.beantwoordVraag.endpointEndpoint at which the zs-dms BeantwoordVraag binding is served.""
openforms2xxllnc.connections.beantwoordVraag.timeoutTimeout used zs-dms BeantwoordVraag calls.60000
openforms2xxllnc.connections.beantwoordVraag.authAliasReference to an auth alias to be used as credentials for communication with this endpoint.""
openforms2xxllnc.connections.beantwoordVraag.authHeaderNameName of the HTTP request header to provide authentication credentials in.""
openforms2xxllnc.connections.ontvangAsynchroon.endpointEndpoint at which the zs-dms OntvangAsynchroon binding is served.""
openforms2xxllnc.connections.ontvangAsynchroon.timeoutTimeout used zs-dms OntvangAsynchroon calls.60000
openforms2xxllnc.connections.ontvangAsynchroon.authAliasReference to an auth alias to be used as credentials for communication with this endpoint.""
openforms2xxllnc.connections.ontvangAsynchroon.authHeaderNameName of the HTTP request header to provide authentication credentials in.""
openforms2xxllnc.connections.vrijeBerichten.endpointEndpoint at which the zs-dms VrijBericht binding is served.""
openforms2xxllnc.connections.vrijeBerichten.timeoutTimeout used zs-dms VrijBericht calls.60000
openforms2xxllnc.connections.vrijeBerichten.authAliasAuthAlias used zs-dms VrijBericht calls.zaakdms-api
openforms2xxllnc.connections.vrijeBerichten.authAliasReference to an auth alias to be used as credentials for communication with this endpoint.""
openforms2xxllnc.connections.vrijeBerichten.authHeaderNameName of the HTTP request header to provide authentication credentials in.""
openforms2xxllnc.connections.notificatiesApi.rootUrlRoot url of the 'Notificaties API' that is used to subscribe at.""
openforms2xxllnc.connections.notificatiesApi.timeoutTimeout used in 'Notificaties API' calls.60000
openforms2xxllnc.connections.notificatiesApi.authTypeOptions: 'jwt', 'basic', 'value'. 'value' uses the password field of the given authAlias as Authorization header.""
openforms2xxllnc.connections.notificatiesApi.authAliasReference to an auth alias to be used as credentials for this api.""
openforms2xxllnc.connections.notificatiesApi.subscription.callbackFully qualified url to the notification callback of openforms2xxllnc.""
openforms2xxllnc.connections.notificatiesApi.subscription.authAliasReference to an auth alias to be used as authorization key for calling the callback endpoint.""
openforms2xxllnc.connections.notificatiesApi.subscription.filters.objectTypeUrl of the objecttype to filter the notifications on.""
openforms2xxllnc.connections.documentenApi.timeoutTimeout used in 'Documenten API' calls.60000
openforms2xxllnc.connections.documentenApi.authTypeOptions: 'jwt', 'basic', 'value'. 'value' uses the password field of the given authAlias as Authorization header.""
openforms2xxllnc.connections.documentenApi.authAliasReference to an auth alias to be used as credentials for this api.""
openforms2xxllnc.connections.objectsApi.timeoutTimeout used in 'Objects API' calls.60000
openforms2xxllnc.connections.objectsApi.authTypeOptions: 'jwt', 'basic', 'value'. 'value' uses the password field of the given authAlias as Authorization header.""
openforms2xxllnc.connections.objectsApi.authAliasReference to an auth alias to be used as credentials for this api.""
openforms2xxllnc.connections.noReplySmtp.enabledEnable connecting to the configured SMTP server/replay.false
openforms2xxllnc.connections.noReplySmtp.hostHost of the SMTP server/relay.""
openforms2xxllnc.connections.noReplySmtp.portPort of the SMTP server/relay.587
openforms2xxllnc.connections.noReplySmtp.useSslConnect securely to the SMTP server/relay with SSL.true
openforms2xxllnc.connections.noReplySmtp.authAliasReference to an auth alias to be used as credentials for authorizing with the SMTP server/relay.""
openforms2xxllnc.connections.noReplySmtp.defaultFromNameThe default no-reply sender's name that is shown with the no-reply sender's e-mail address.""
openforms2xxllnc.connections.noReplySmtp.defaultFromAddressThe default no-reply sender's e-mail address that used when sending e-mails.""
openforms2xxllnc.connections.noReplySmtp.signatureFromNameThe no-reply sender's name used in the signature of the e-mail body.""
openforms2xxllnc.connections.noReplySmtp.timeoutTimeout used when sending emails.60000
openforms2xxllnc.connections.noReplySmtp.authTypeOptions: 'jwt', 'basic', 'value'. 'value' uses the password field of the given authAlias as Authorization header.""

Mail Templates

NameDescriptionValue
openforms2xxllnc.mailTemplates.existingConfigMapThe name of the configmap containing the mail templates.""
openforms2xxllnc.mailTemplates.templatesMail templates that can be referenced by name on a variety of functional error scenario's.[]
openforms2xxllnc.mailTemplates.templates.nameName of the mail template that can be referenced.""
openforms2xxllnc.mailTemplates.templates.subjectMail subject text.""
openforms2xxllnc.mailTemplates.templates.messageTypeContentType of the message. Options: 'text/plain', 'text/html'.""
openforms2xxllnc.mailTemplates.templates.messageMail message body. A limit degree of variable substitution is available.""

Workflows

NameDescriptionValue
openforms2xxllnc.workflows.stuurgegevens.zender.organisatieGemeentecode of the gemeente sending the zs-dms requests.""
openforms2xxllnc.workflows.stuurgegevens.zender.applicatieApplication name used when sending the zs-dms requests.""
openforms2xxllnc.workflows.stuurgegevens.ontvanger.organisatieGemeentecode of the gemeente receiving the zs-dms requests.""
openforms2xxllnc.workflows.stuurgegevens.ontvanger.applicatieApplication name of the receiving zs-dms application.""
openforms2xxllnc.workflows.autoRetries.enabledEnable automatic retries. For all workflows(unless overriden).true
openforms2xxllnc.workflows.autoRetries.cronExpressionCron expression used for retry interval/schedule. For all workflows(unless overriden).""
openforms2xxllnc.workflows.autoRetries.maxRetriesMaximum amount an errorstore item is retried. For all workflows(unless overriden).5
openforms2xxllnc.workflows.autoRetries.workflowSelector.enabledEnable automatic retries. Override for this specific workflow.true
openforms2xxllnc.workflows.autoRetries.workflowSelector.cronExpressionCron expression used for retry interval/schedule. Override for this specific workflow.""
openforms2xxllnc.workflows.autoRetries.workflowSelector.maxRetriesMaximum amount an errorstore item is retried. Override for this specific workflow.5
openforms2xxllnc.workflows.autoRetries.addDocumentsToCase.enabledEnable automatic retries. Override for this specific workflow.true
openforms2xxllnc.workflows.autoRetries.addDocumentsToCase.cronExpressionCron expression used for retry interval/schedule. Override for this specific workflow.""
openforms2xxllnc.workflows.autoRetries.addDocumentsToCase.maxRetriesMaximum amount an errorstore item is retried. Override for this specific workflow.5
openforms2xxllnc.workflows.autoRetries.sendNoReplyUserEmail.enabledEnable automatic retries. Override for this specific workflow.true
openforms2xxllnc.workflows.autoRetries.sendNoReplyUserEmail.cronExpressionCron expression used for retry interval/schedule. Override for this specific workflow.""
openforms2xxllnc.workflows.autoRetries.sendNoReplyUserEmail.maxRetriesMaximum amount an errorstore item is retried. Override for this specific workflow.5
openforms2xxllnc.workflows.scheduledStartReceiver.workflowSelector.enabledEnable scheduled start the receiver of this specific workflow.false
openforms2xxllnc.workflows.scheduledStartReceiver.workflowSelector.cronExpressionCron expression used to schedule starting the receiver of this specific workflow.""
openforms2xxllnc.workflows.scheduledStopReceiver.workflowSelector.enabledEnable scheduled stop the receiver of this specific workflow.false
openforms2xxllnc.workflows.scheduledStopReceiver.workflowSelector.cronExpressionCron expression used to schedule stopping the receiver of this specific workflow.""
openforms2xxllnc.workflows.onErrorActions.onCaseNotFound.sendMailEnable sending a mail to the form initiator when this specific error occurs.false
openforms2xxllnc.workflows.onErrorActions.onCaseNotFound.templateNameName of the mail template to be used when this specific error occurs.""
openforms2xxllnc.workflows.onErrorActions.onSubjectNotEqualsCaseSubject.sendMailEnable sending a mail to the form initiator when this specific error occurs.false
openforms2xxllnc.workflows.onErrorActions.onSubjectNotEqualsCaseSubject.templateNameName of the mail template to be used when this specific error occurs.""
openforms2xxllnc.workflows.onErrorActions.onCaseClosed.sendMailEnable sending a mail to the form initiator when this specific error occurs.false
openforms2xxllnc.workflows.onErrorActions.onCaseClosed.templateNameName of the mail template to be used when this specific error occurs.""

Configuration and installation details

DTAP Stage

The Frank!Framework will start with different settings enabled, depending on what DTAP stage is configured.

For more information about DTAP stages read: https://frank-manual.readthedocs.io/en/latest/deploying/dtapAndProperties.html

Notable changes

0.1.5

The .Values.frank.memory notation has been changed. It is now possible to define a minimum and a maximum, and to set percentages.

0.1.4

The .Values.frank.dtap.stage and .Values.frank.dtap.side are now empty by default.

  • .Values.frank.dtap.stage is now required and should be set to the right stage. Read more in the Installation details
  • .Values.frank.dtap.side will default to the release namespace deployed in.

Application Version

1.2.4

Chart Versions

1.1.1 - 29/10/2024
1.1.0 - 13/09/2024
1.0.1 - 13/09/2024
1.0.0 - 05/08/2024