Documentation
¶
Overview ¶
Package chartutil contains tools for working with charts.
Charts are described in the protocol buffer definition (pkg/proto/charts). This packe provides utilities for serializing and deserializing charts.
A chart can be represented on the file system in one of two ways:
- As a directory that contains a Chart.yaml file and other chart things.
- As a tarred gzipped file containing a directory that then contains a Chart.yaml file.
This package provides utilitites for working with those file formats.
The preferred way of loading a chart is using 'loader.Load`:
chart, err := loader.Load(filename)
This will attempt to discover whether the file at 'filename' is a directory or a chart archive. It will then load accordingly.
For accepting raw compressed tar file data from an io.Reader, the 'loader.LoadArchive()' will read in the data, uncompress it, and unpack it into a Chart.
When creating charts in memory, use the 'k8s.io/helm/pkg/proto/chart' package directly.
Index ¶
- Constants
- Variables
- func CoalesceTables(dst, src map[string]interface{}) map[string]interface{}
- func Create(chartfile *chart.Metadata, dir string) (string, error)
- func CreateFrom(chartfile *chart.Metadata, dest, src string) error
- func Expand(dir string, r io.Reader) error
- func ExpandFile(dest, src string) error
- func FromJSON(str string) map[string]interface{}
- func FromYAML(str string) map[string]interface{}
- func IsChartDir(dirName string) (bool, error)
- func IsChartInstallable(chart *chart.Chart) (bool, error)
- func IsValidChartType(chart *chart.Chart) (bool, error)
- func LoadChartfile(filename string) (*chart.Metadata, error)
- func ProcessDependencies(c *chart.Chart, v Values) error
- func Save(c *chart.Chart, outDir string) (string, error)
- func SaveChartfile(filename string, cf *chart.Metadata) error
- func SaveDir(c *chart.Chart, dest string) error
- func ToJSON(v interface{}) string
- func ToTOML(v interface{}) string
- func ToYAML(v interface{}) string
- type Capabilities
- type ErrNoTable
- type ErrNoValue
- type Files
- type ReleaseOptions
- type Values
- func CoalesceValues(chrt *chart.Chart, vals map[string]interface{}) (Values, error)
- func ReadValues(data []byte) (vals Values, err error)
- func ReadValuesFile(filename string) (Values, error)
- func ToRenderValues(chrt *chart.Chart, chrtVals map[string]interface{}, options ReleaseOptions, ...) (Values, error)
- type VersionSet
Examples ¶
Constants ¶
const ( // ChartfileName is the default Chart file name. ChartfileName = "Chart.yaml" // ValuesfileName is the default values file name. ValuesfileName = "values.yaml" // TemplatesDir is the relative directory name for templates. TemplatesDir = "templates" // ChartsDir is the relative directory name for charts dependencies. ChartsDir = "charts" // IgnorefileName is the name of the Helm ignore file. IgnorefileName = ".helmignore" // IngressFileName is the name of the example ingress file. IngressFileName = "ingress.yaml" // DeploymentName is the name of the example deployment file. DeploymentName = "deployment.yaml" // ServiceName is the name of the example service file. ServiceName = "service.yaml" // NotesName is the name of the example NOTES.txt file. NotesName = "NOTES.txt" // HelpersName is the name of the example NOTES.txt file. HelpersName = "_helpers.tpl" )
const GlobalKey = "global"
GlobalKey is the name of the Values key that is used for storing global vars.
Variables ¶
var ( // DefaultVersionSet is the default version set, which includes only Core V1 ("v1"). DefaultVersionSet = allKnownVersions() // DefaultKubeVersion is the default kubernetes version DefaultKubeVersion = &version.Info{ Major: "1", Minor: "9", GitVersion: "v1.9.0", GoVersion: runtime.Version(), Compiler: runtime.Compiler, Platform: fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), } // DefaultCapabilities is the default set of capabilities. DefaultCapabilities = &Capabilities{ APIVersions: DefaultVersionSet, KubeVersion: DefaultKubeVersion, } )
Functions ¶
func CoalesceTables ¶
CoalesceTables merges a source map into a destination map.
dest is considered authoritative.
func Create ¶
Create creates a new chart in a directory.
Inside of dir, this will create a directory based on the name of chartfile.Name. It will then write the Chart.yaml into this directory and create the (empty) appropriate directories.
The returned string will point to the newly created directory. It will be an absolute path, even if the provided base directory was relative.
If dir does not exist, this will return an error. If Chart.yaml or any directories cannot be created, this will return an error. In such a case, this will attempt to clean up by removing the new chart directory.
func CreateFrom ¶
CreateFrom creates a new chart, but scaffolds it from the src chart.
func ExpandFile ¶
ExpandFile expands the src file into the dest directory.
func FromJSON ¶
FromJSON converts a JSON document into a map[string]interface{}.
This is not a general-purpose JSON parser, and will not parse all valid JSON documents. Additionally, because its intended use is within templates it tolerates errors. It will insert the returned error message string into m["Error"] in the returned map.
func FromYAML ¶
FromYAML converts a YAML document into a map[string]interface{}.
This is not a general-purpose YAML parser, and will not parse all valid YAML documents. Additionally, because its intended use is within templates it tolerates errors. It will insert the returned error message string into m["Error"] in the returned map.
func IsChartInstallable ¶
IsChartInstallable validates if a chart can be installed
Application chart type is only installable
func IsValidChartType ¶
IsValidChartType validates the chart type
Valid types are: application or library
func LoadChartfile ¶
LoadChartfile loads a Chart.yaml file into a *chart.Metadata.
func ProcessDependencies ¶
ProcessDependencies checks through this chart's dependencies, processing accordingly.
func Save ¶
Save creates an archived chart to the given directory.
This takes an existing chart and a destination directory.
If the directory is /foo, and the chart is named bar, with version 1.0.0, this will generate /foo/bar-1.0.0.tgz.
This returns the absolute path to the chart archive file.
func SaveChartfile ¶
SaveChartfile saves the given metadata as a Chart.yaml file at the given path.
'filename' should be the complete path and filename ('foo/Chart.yaml')
func ToJSON ¶
func ToJSON(v interface{}) string
ToJSON takes an interface, marshals it to json, and returns a string. It will always return a string, even on marshal error (empty string).
This is designed to be called from a template.
Types ¶
type Capabilities ¶
type Capabilities struct { // List of all supported API versions APIVersions VersionSet // KubeVerison is the Kubernetes version KubeVersion *version.Info }
Capabilities describes the capabilities of the Kubernetes cluster that Tiller is attached to.
type ErrNoTable ¶
type ErrNoTable string
ErrNoTable indicates that a chart does not have a matching table.
func (ErrNoTable) Error ¶
func (e ErrNoTable) Error() string
type ErrNoValue ¶
type ErrNoValue string
ErrNoValue indicates that Values does not contain a key with a value
func (ErrNoValue) Error ¶
func (e ErrNoValue) Error() string
type Files ¶
Files is a map of files in a chart that can be accessed from a template.
func NewFiles ¶
NewFiles creates a new Files from chart files. Given an []*any.Any (the format for files in a chart.Chart), extract a map of files.
func (Files) AsConfig ¶
AsConfig turns a Files group and flattens it to a YAML map suitable for including in the 'data' section of a Kubernetes ConfigMap definition. Duplicate keys will be overwritten, so be aware that your file names (regardless of path) should be unique.
This is designed to be called from a template, and will return empty string (via ToYAML function) if it cannot be serialized to YAML, or if the Files object is nil.
The output will not be indented, so you will want to pipe this to the 'indent' template function.
data:
{{ .Files.Glob("config/**").AsConfig() | indent 4 }}
func (Files) AsSecrets ¶
AsSecrets returns the base64-encoded value of a Files object suitable for including in the 'data' section of a Kubernetes Secret definition. Duplicate keys will be overwritten, so be aware that your file names (regardless of path) should be unique.
This is designed to be called from a template, and will return empty string (via ToYAML function) if it cannot be serialized to YAML, or if the Files object is nil.
The output will not be indented, so you will want to pipe this to the 'indent' template function.
data:
{{ .Files.Glob("secrets/*").AsSecrets() }}
func (Files) Get ¶
Get returns a string representation of the given file.
Fetch the contents of a file as a string. It is designed to be called in a template.
{{.Files.Get "foo"}}
func (Files) GetBytes ¶
GetBytes gets a file by path.
The returned data is raw. In a template context, this is identical to calling {{index .Files $path}}.
This is intended to be accessed from within a template, so a missed key returns an empty []byte.
type ReleaseOptions ¶
type ReleaseOptions struct { Name string Time time.Time Namespace string IsUpgrade bool IsInstall bool Revision int }
ReleaseOptions represents the additional release options needed for the composition of the final values struct
type Values ¶
type Values map[string]interface{}
Values represents a collection of chart values.
Example ¶
doc := ` title: "Moby Dick" chapter: one: title: "Loomings" two: title: "The Carpet-Bag" three: title: "The Spouter Inn" ` d, err := ReadValues([]byte(doc)) if err != nil { panic(err) } ch1, err := d.Table("chapter.one") if err != nil { panic("could not find chapter one") } fmt.Print(ch1["title"])
Output: Loomings
func CoalesceValues ¶
CoalesceValues coalesces all of the values in a chart (and its subcharts).
Values are coalesced together using the following rules:
- Values in a higher level chart always override values in a lower-level dependency chart
- Scalar values and arrays are replaced, maps are merged
- A chart has access to all of the variables for it, as well as all of the values destined for its dependencies.
func ReadValues ¶
ReadValues will parse YAML byte data into a Values.
func ReadValuesFile ¶
ReadValuesFile will parse a YAML file into a map of values.
func ToRenderValues ¶
func ToRenderValues(chrt *chart.Chart, chrtVals map[string]interface{}, options ReleaseOptions, caps *Capabilities) (Values, error)
ToRenderValues composes the struct from the data coming from the Releases, Charts and Values files
This takes both ReleaseOptions and Capabilities to merge into the render values.
func (Values) AsMap ¶
AsMap is a utility function for converting Values to a map[string]interface{}.
It protects against nil map panics.
func (Values) PathValue ¶
PathValue takes a path that traverses a YAML structure and returns the value at the end of that path. The path starts at the root of the YAML structure and is comprised of YAML keys separated by periods. Given the following YAML data the value at path "chapter.one.title" is "Loomings".
chapter: one: title: "Loomings"
type VersionSet ¶
type VersionSet map[string]struct{}
VersionSet is a set of Kubernetes API versions.
func NewVersionSet ¶
func NewVersionSet(apiVersions ...string) VersionSet
NewVersionSet creates a new version set from a list of strings.
func (VersionSet) Has ¶
func (v VersionSet) Has(apiVersion string) bool
Has returns true if the version string is in the set.
vs.Has("extensions/v1beta1")