helmclient

package module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2020 License: MIT Imports: 30 Imported by: 64

README

Go Helm Client

Go client library for accessing Helm, enabling the user to programmatically change helm charts and releases.

This library is build upon helm/v3.1.2 and available under the MIT License.

GitHub license Go Report Card Documentation

Installation

Install this library using go get:

$ go get github.com/mittwald/go-helm-client

Usage

Example usage of the client can be found in the package examples.

Private chart repository

When working with private repositories, you can utilize the Username and Password parameters of a chart entry to specify credentials.

An example of this can be found in the corresponding example.

Mock Client

This library includes a mock client mock/interface_mock.go which is generated by mockgen.

Example usage of the mocked client can be found in mock/mock_test.go.

If you made changes to interface.go, you should issue the go generate ./... command to trigger code generation.

Documentation

For more specific documentation, please refer to the godoc of this library.

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChartSpec

type ChartSpec struct {
	ReleaseName string `json:"release"`
	ChartName   string `json:"chart"`
	Namespace   string `json:"namespace"`

	// use string instead of map[string]interface{}
	// https://github.com/kubernetes-sigs/kubebuilder/issues/528#issuecomment-466449483
	// and https://github.com/kubernetes-sigs/controller-tools/pull/317
	// +optional
	ValuesYaml string `json:"valuesYaml,omitempty"`

	// +optional
	Version string `json:"version,omitempty"`

	// +optional
	DisableHooks bool `json:"disableHooks,omitempty"`

	// +optional
	Replace bool `json:"replace,omitempty"`

	// +optional
	Wait bool `json:"wait,omitempty"`

	// +optional
	DependencyUpdate bool `json:"dependencyUpdate,omitempty"`

	// +optional
	Timeout time.Duration `json:"timeout,omitempty"`

	// +optional
	GenerateName bool `json:"generateName,omitempty"`

	// +optional
	NameTemplate string `json:"NameTemplate,omitempty"`

	// +optional
	Atomic bool `json:"atomic,omitempty"`

	// +optional
	SkipCRDs bool `json:"skipCRDs,omitempty"`

	// +optional
	UpgradeCRDs bool `json:"upgradeCRDs,omitempty"`

	// +optional
	SubNotes bool `json:"subNotes,omitempty"`

	// +optional
	Force bool `json:"force,omitempty"`

	// +optional
	ResetValues bool `json:"resetValues,omitempty"`

	// +optional
	ReuseValues bool `json:"reuseValues,omitempty"`

	// +optional
	Recreate bool `json:"recreate,omitempty"`

	// +optional
	MaxHistory int `json:"maxHistory,omitempty"`

	// +optional
	CleanupOnFail bool `json:"cleanupOnFail,omitempty"`
}

ChartSpec defines the values of a helm chart

func (*ChartSpec) GetValuesMap

func (spec *ChartSpec) GetValuesMap() (map[string]interface{}, error)

GetValuesMap returns the mapped out values of a chart

type Client

type Client interface {
	AddOrUpdateChartRepo(entry repo.Entry) error
	UpdateChartRepos() error
	InstallOrUpgradeChart(ctx context.Context, spec *ChartSpec) error
	DeleteChartFromCache(spec *ChartSpec) error
	UninstallRelease(spec *ChartSpec) error
	TemplateChart(spec *ChartSpec) ([]byte, error)
	LintChart(spec *ChartSpec) error
}

func New

func New(options *Options) (Client, error)

New returns a new Helm client with the provided options

Example
opt := &Options{
	RepositoryCache:  "/tmp/.helmcache",
	RepositoryConfig: "/tmp/.helmrepo",
	Debug:            true,
	Linting:          true,
}

helmClient, err := New(opt)
if err != nil {
	panic(err)
}
_ = helmClient
Output:

func NewClientFromKubeConf

func NewClientFromKubeConf(options *KubeConfClientOptions) (Client, error)

NewClientFromKubeConf returns a new Helm client constructed with the provided kubeconfig options

Example
opt := &KubeConfClientOptions{
	Options: &Options{
		RepositoryCache:  "/tmp/.helmcache",
		RepositoryConfig: "/tmp/.helmrepo",
		Debug:            true,
		Linting:          true,
	},
	KubeContext: "",
	KubeConfig:  []byte{},
}

helmClient, err := NewClientFromKubeConf(opt)
if err != nil {
	panic(err)
}
_ = helmClient
Output:

func NewClientFromRestConf

func NewClientFromRestConf(options *RestConfClientOptions) (Client, error)

NewClientFromRestConf returns a new Helm client constructed with the provided REST config options

Example
opt := &RestConfClientOptions{
	Options: &Options{
		RepositoryCache:  "/tmp/.helmcache",
		RepositoryConfig: "/tmp/.helmrepo",
		Debug:            true,
		Linting:          true,
	},
	RestConfig: &rest.Config{},
}

helmClient, err := NewClientFromRestConf(opt)
if err != nil {
	panic(err)
}
_ = helmClient
Output:

type HelmClient added in v0.1.1

type HelmClient struct {
	Settings  *cli.EnvSettings
	Providers getter.Providers

	ActionConfig *action.Configuration
	// contains filtered or unexported fields
}

Client defines the values of a helm client

func (*HelmClient) AddOrUpdateChartRepo added in v0.1.1

func (c *HelmClient) AddOrUpdateChartRepo(entry repo.Entry) error

AddOrUpdateChartRepo adds or updates the provided helm chart repository

Example (Private)
// Define a private chart repository
chartRepo := repo.Entry{
	Name:     "stable",
	URL:      "https://private-chartrepo.somedomain.com",
	Username: "foo",
	Password: "bar",
}

// Add a chart-repository to the client
if err := helmClient.AddOrUpdateChartRepo(chartRepo); err != nil {
	panic(err)
}
Output:

Example (Public)
// Define a public chart repository
chartRepo := repo.Entry{
	Name: "stable",
	URL:  "https://kubernetes-charts.storage.googleapis.com",
}

// Add a chart-repository to the client
if err := helmClient.AddOrUpdateChartRepo(chartRepo); err != nil {
	panic(err)
}
Output:

func (*HelmClient) DeleteChartFromCache added in v0.1.1

func (c *HelmClient) DeleteChartFromCache(spec *ChartSpec) error

DeleteChartFromCache deletes the provided chart from the client's cache

Example
// Define the chart to be deleted from the client's cache
chartSpec := ChartSpec{
	ReleaseName: "etcd-operator",
	ChartName:   "stable/etcd-operator",
	Namespace:   "default",
	UpgradeCRDs: true,
	Wait:        true,
}

if err := helmClient.DeleteChartFromCache(&chartSpec); err != nil {
	panic(err)
}
Output:

func (*HelmClient) InstallOrUpgradeChart added in v0.1.1

func (c *HelmClient) InstallOrUpgradeChart(ctx context.Context, spec *ChartSpec) error

InstallOrUpgradeChart triggers the installation of the provided chart. If the chart is already installed, trigger an upgrade instead

Example
// Define the chart to be installed
chartSpec := ChartSpec{
	ReleaseName: "etcd-operator",
	ChartName:   "stable/etcd-operator",
	Namespace:   "default",
	UpgradeCRDs: true,
	Wait:        true,
}

if err := helmClient.InstallOrUpgradeChart(context.Background(), &chartSpec); err != nil {
	panic(err)
}
Output:

func (*HelmClient) LintChart added in v0.4.0

func (c *HelmClient) LintChart(spec *ChartSpec) error

func (*HelmClient) TemplateChart added in v0.4.0

func (c *HelmClient) TemplateChart(spec *ChartSpec) ([]byte, error)

func (*HelmClient) UninstallRelease added in v0.1.1

func (c *HelmClient) UninstallRelease(spec *ChartSpec) error

UninstallRelease uninstalls the provided release

Example
// Define the released chart to be installed
chartSpec := ChartSpec{
	ReleaseName: "etcd-operator",
	ChartName:   "stable/etcd-operator",
	Namespace:   "default",
	UpgradeCRDs: true,
	Wait:        true,
}

if err := helmClient.UninstallRelease(&chartSpec); err != nil {
	panic(err)
}
Output:

func (*HelmClient) UpdateChartRepos added in v0.1.1

func (c *HelmClient) UpdateChartRepos() error

UpdateChartRepos updates the list of chart repositories stored in the client's cache

Example
if err := helmClient.UpdateChartRepos(); err != nil {
	panic(err)
}
Output:

type KubeConfClientOptions

type KubeConfClientOptions struct {
	*Options
	KubeContext string
	KubeConfig  []byte
}

KubeConfClientOptions defines the options used for constructing a client via kubeconfig

type Options

type Options struct {
	Namespace        string
	RepositoryConfig string
	RepositoryCache  string
	Debug            bool
	Linting          bool
}

Options defines the options of a client

type RESTClientGetter

type RESTClientGetter struct {
	// contains filtered or unexported fields
}

RESTClientGetter defines the values of a helm REST client

func NewRESTClientGetter

func NewRESTClientGetter(namespace string, kubeConfig []byte, restConfig *rest.Config) *RESTClientGetter

NewRESTClientGetter

source: https://github.com/helm/helm/issues/6910#issuecomment-601277026

func (*RESTClientGetter) ToDiscoveryClient

func (c *RESTClientGetter) ToDiscoveryClient() (discovery.CachedDiscoveryInterface, error)

func (*RESTClientGetter) ToRESTConfig

func (c *RESTClientGetter) ToRESTConfig() (*rest.Config, error)

ToRESTConfig returns a REST config build from a given kubeconfig

func (*RESTClientGetter) ToRESTMapper

func (c *RESTClientGetter) ToRESTMapper() (meta.RESTMapper, error)

func (*RESTClientGetter) ToRawKubeConfigLoader

func (c *RESTClientGetter) ToRawKubeConfigLoader() clientcmd.ClientConfig

type RestConfClientOptions

type RestConfClientOptions struct {
	*Options
	RestConfig *rest.Config
}

RestConfClientOptions defines the options used for constructing a client via REST config

Directories

Path Synopsis
Package mockhelmclient is a generated GoMock package.
Package mockhelmclient is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL