Skip to main content
Version: 1.4.0

Customization point: Application Charts

Epinio uses Application charts as templates for the structure of deployed applications, i.e. of the kubernetes resources used to run an application image.

An installation of Epinio provides a single standard application chart.

If custom application charts adapted to the local environment are desired or needed please follow the instructions on How To create custom application Helm charts and How To use custom application Helm charts.

Application charts are expected to create the following resources:

  • A Deployment, StatefulSet, or similar main controller, specifying the Pod and its containers running the application image.

  • A Service to route web requests to the application.

  • An Ingress per specified route to front the Service.

note

Up to version 1 Epinio allowed only Deployment resources as the main controller of applications.

Further Expectations

Application Charts are expected to heed the following contraints to enable their use by Epinio:

  1. It has to support all of the configuration values described in section Configuration below.

  2. Pod resources have to have a number of annotations and labels for Epinio to locate and use them, as described in section Pods below.

note

While a custom chart is free to support more configuration values Epinio will have no knowledge of them, and will not use them.

Configuration​

All configuration fields below are provied in the epinio hierarchy:

NameKindMeaning
appNamestringThe application's name
configurationssequence (string)The names of the configurations to import into the application
envsequence (assignment)The application's environment variables and their values
imageURLstringA reference to the app image in Epinio's registry
ingressstringThe ingress class name to use, if any
replicaCountintegerThe desired number of instances (pods) to deploy
routessequence (route)The routes (= domain+path+id) the app has to be reachable at
stageIDstringId of the stage run which generated the app image
startintegerOptional. The time of deployment, in nanoseconds
tlsIssuerstringThe name of the cert issuer to use for route certs
usernamestringThe name of the user deploying the application

Routes are maps composed of four keys:

NameKindMeaning
domainstringThe domain of the route
idstringA unique id to name route Ingress and Certificate resources with
pathstringThe sub-path of the route, if any
secretstringOptional. Name of a Secret to directly use in securing the Ingress
note

The Routing Secrets reference explains more about the secrets field.

Environment assigment are maps composed of two keys:

NameKindMeaning
namestringThe name of the variable
valuestringThe value of the variable

Pods​

Epinio adds the following annotations to the Pods:

AnnotationMeaning
app.kubernetes.io/nameThe application's name.
epinio.io/startThe time of deployment, in nanoseconds, if provided by Epinio

Epinio adds the following labels to the Pods:

LabelMeaning
app.kubernetes.io/componentFixed: application
app.kubernetes.io/created-byThe name of the user deploying the application
app.kubernetes.io/managed-byFixed: epinio
app.kubernetes.io/nameThe application's name.
app.kubernetes.io/part-ofThe application's namespace
epinio.io/app-containerThe name of the main Pod container, running the app image
epinio.io/stage-idId of the stage run which generated the app image
helm.sh/chartChart name and version used to deploy the application

Related