ff-common

ff-common chart building components and helpers for the Frank!Framework

0.1.24 deprecated library

🔌Frank!Framework Common Library Chart

This Helm Library Chart is designed to make it easy create your own Frank!Framework Chart. A lot of the common configuration work has been done already, making it quicker to develop. It also has the added benefit that additions can easily be distributed across all FF! Charts.

Usage

Getting Started

The best way to start is to copy the template chart. This contains a copy of the values.yaml and implements all needed manifests. It is recommended to implement as many manifests as possible, some can be disabled and enabled in the values.yaml instead. This opens up the possibility for the user to use the manifest if they desire to.

Extending the Chart

One of the main reasons this is a library and not a sub-chart is because it enables extendability. Whereas the sub-chart can only be used "as is", the library can be modified in your own chart.

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 registrynexus.frankframework.org
image.repositoryFrank!Framework image repositoryfrankframework
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!Framework4G
frank.memory.maximumSets the maximum size of the heap that will be used by the Frank!Framework4G
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{}

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.15

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.14

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

8.0

Chart Versions

0.1.24 - 21/10/2024
0.1.23 - 13/02/2024
0.1.22 - 16/01/2024
0.1.21 - 16/01/2024
0.1.20 - 11/01/2024
0.1.19 - 09/01/2024
0.1.18 - 15/12/2023
0.1.17 - 23/11/2023
0.1.16 - 15/11/2023
0.1.15 - 03/10/2023
+ Show all releases