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