Skip to main content

Config

Description

Config encapsulates the configuration settings for a particular Element. Since this structure is used to generate the configuration for the Manager, each field is double-tagged. The json tags are used by the Kubernetes API machinery to generate the CRD and the yaml tags are used by Athena to generate the configuration file for the Manager. No validation is performed before passing the values to the Manager, hence the Manager might panic if the values are not proper. Despite the defined immutability, for the current version, the Manager might not always properly handle all the day-2 scenarios.


App field of tag app

App name to be configured by the Manager. The names would be included in the meta configuration file in the shared volume of the pod to allow the Workload Application properly group the configurations.

Kind: NameTag
Tag: app
Manager Tag: app
Data Type: string
Optional: False


Base field of tag base

The Base configuration used to generate the final configuration for the workload application. The path could be a fully-qualified URL, otherwise it would be considered as a Unix path local to the Manager (not to the Workload). Hashicorp go-getter package is used to resolve and download the configurations. Athena officially supports file, http, https, git, ssh, and oci protocols. Zip, tar, and gzip compression formats could be used for the files or directories.

Kind: string
Tag: base
Manager Tag: base
Data Type: string
Optional: False


Path field of tag path

The final path for the configuration to be placed. It could be a relative or an absolute path. The relative paths are Path the perspective of the shared volume. In most cases the absolute paths should be avoided because they probably end up outside the filesystem domain of the workload. Any required directory in the path would be created automatically.

Kind: string
Tag: path
Manager Tag: path
Data Type: string
Optional: False


Format field of tag format

The Format of the configuration is passed down to the Manager and from there to the configurator plugins to determine how the configuration should be performed. The workload application would also find the information in the meta configuration file, since in Unix the file extension does not necessarily indicate the format. Beside the two general formats of text and binary, the specialized formats for YAML, JSON, INI, XML, etc. are supported. The symlink format is meant to create symbolic links to base in the path. The shell format marks the output with executable flags, otherwise the files are not executable, even if the Base is executable, for security reasons.

Kind: string
Tag: format
Manager Tag: format
Data Type: string
Enumeration: text, binary, libconfig, json, yaml, ini, env, amr, sql, log, sys, xml, jvm, shell, symlink
Optional: False


Plugin field of tag plugin

The Plugin used by the Manager to perform the configuration and reconfiguration. Currently, a limited set of plugins are shipped with the Manager. Support for defining custom plugins would be included in the future releases. The Go Text Templating (gtt) plugin is able to practically deliver any templating. The passthrough plugin simply passes down the configuration without modification.

Kind: string
Tag: plugin
Manager Tag: plugin
Data Type: string
Enumeration: passthrough, gtt, amr, oai, srs
Optional: False