types

package
v0.0.0-...-59ba1d5 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2021 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package types holds the definition of the kustomization struct and supporting structs. It's the k8s API conformant object that describes a set of generation and transformation operations to create and/or modify k8s resources. A kustomization file is a serialization of this struct.

Index

Constants

View Source
const (
	KustomizationVersion  = "kustomize.config.k8s.io/v1beta1"
	KustomizationKind     = "Kustomization"
	ComponentVersion      = "kustomize.config.k8s.io/v1alpha1"
	ComponentKind         = "Component"
	MetadataNamespacePath = "metadata/namespace"
)

Variables

This section is empty.

Functions

func CopyMap

func CopyMap(in map[string]string) map[string]string

CopyMap copies a map.

func FixKustomizationPreUnmarshalling

func FixKustomizationPreUnmarshalling(data []byte) ([]byte, error)

FixKustomizationPreUnmarshalling modifies the raw data before marshalling - e.g. changes old field names to new field names.

func IsErrOnlyBuiltinPluginsAllowed

func IsErrOnlyBuiltinPluginsAllowed(err error) bool

func IsErrUnableToFind

func IsErrUnableToFind(err error) bool

func NewErrOnlyBuiltinPluginsAllowed

func NewErrOnlyBuiltinPluginsAllowed(n string) *errOnlyBuiltinPluginsAllowed

func NewErrUnableToFind

func NewErrUnableToFind(w string, a []Pair) *errUnableToFind

Types

type BuiltinPluginLoadingOptions

type BuiltinPluginLoadingOptions int

BuiltinPluginLoadingOptions distinguish ways in which builtin plugins are used.

const (
	BploUndefined BuiltinPluginLoadingOptions = iota

	// Desired in production use for performance.
	BploUseStaticallyLinked

	// Desired in testing and development cycles where it's undesirable
	// to generate static code.
	BploLoadFromFileSys
)

func (BuiltinPluginLoadingOptions) String

type ConfigMapArgs

type ConfigMapArgs struct {
	// GeneratorArgs for the configmap.
	GeneratorArgs `json:",inline,omitempty" yaml:",inline,omitempty"`
}

ConfigMapArgs contains the metadata of how to generate a configmap.

type FieldSelector

type FieldSelector struct {
	FieldPath string `json:"fieldPath,omitempty" yaml:"fieldPath,omitempty"`
}

FieldSelector contains the fieldPath to an object field. This struct is added to keep the backward compatibility of using ObjectFieldSelector for Var.FieldRef

type FieldSpec

type FieldSpec struct {
	resid.Gvk          `json:",inline,omitempty" yaml:",inline,omitempty"`
	Path               string `json:"path,omitempty" yaml:"path,omitempty"`
	CreateIfNotPresent bool   `json:"create,omitempty" yaml:"create,omitempty"`
}

FieldSpec completely specifies a kustomizable field in an unstructured representation of a k8s API object. It helps define the operands of transformations.

For example, a directive to add a common label to objects will need to know that a 'Deployment' object (in API group 'apps', any version) can have labels at field path 'spec/template/metadata/labels', and further that it is OK (or not OK) to add that field path to the object if the field path doesn't exist already.

This would look like

{
  group: apps
  kind: Deployment
  path: spec/template/metadata/labels
  create: true
}

func (FieldSpec) String

func (fs FieldSpec) String() string

type FnPluginLoadingOptions

type FnPluginLoadingOptions struct {
	// Allow to run executables
	EnableExec bool
	// Allow to run starlark
	EnableStar bool
	// Allow container access to network
	Network     bool
	NetworkName string
	// list of mounts
	Mounts []string
	// list of env variables to pass to fn
	Env []string
}

FnPluginLoadingOptions set way functions-based pluing are restricted

type FsSlice

type FsSlice []FieldSpec

func (FsSlice) Len

func (s FsSlice) Len() int

func (FsSlice) Less

func (s FsSlice) Less(i, j int) bool

func (FsSlice) MergeAll

func (s FsSlice) MergeAll(incoming FsSlice) (result FsSlice, err error)

MergeAll merges the argument into this, returning the result. Items already present are ignored. Items that conflict (primary key matches, but remain data differs) result in an error.

func (FsSlice) MergeOne

func (s FsSlice) MergeOne(x FieldSpec) (FsSlice, error)

MergeOne merges the argument into this, returning the result. If the item's primary key is already present, and there are no conflicts, it is ignored (we don't want duplicates). If there is a conflict, the merge fails.

func (FsSlice) Swap

func (s FsSlice) Swap(i, j int)

type GenArgs

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

GenArgs is a facade over GeneratorArgs, exposing a few readonly properties.

func NewGenArgs

func NewGenArgs(args *GeneratorArgs) *GenArgs

NewGenArgs returns a new instance of GenArgs.

func (*GenArgs) Behavior

func (g *GenArgs) Behavior() GenerationBehavior

Behavior returns Behavior field of GeneratorArgs

func (*GenArgs) ShouldAddHashSuffixToName

func (g *GenArgs) ShouldAddHashSuffixToName() bool

ShouldAddHashSuffixToName returns true if a resource content hash should be appended to the name of the resource.

func (*GenArgs) String

func (g *GenArgs) String() string

type GenerationBehavior

type GenerationBehavior int

GenerationBehavior specifies generation behavior of configmaps, secrets and maybe other resources.

const (
	// BehaviorUnspecified is an Unspecified behavior; typically treated as a Create.
	BehaviorUnspecified GenerationBehavior = iota
	// BehaviorCreate makes a new resource.
	BehaviorCreate
	// BehaviorReplace replaces a resource.
	BehaviorReplace
	// BehaviorMerge attempts to merge a new resource with an existing resource.
	BehaviorMerge
)

func NewGenerationBehavior

func NewGenerationBehavior(s string) GenerationBehavior

NewGenerationBehavior converts a string to a GenerationBehavior.

func (GenerationBehavior) String

func (b GenerationBehavior) String() string

String converts a GenerationBehavior to a string.

type GeneratorArgs

type GeneratorArgs struct {
	// Namespace for the configmap, optional
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`

	// Name - actually the partial name - of the generated resource.
	// The full name ends up being something like
	// NamePrefix + this.Name + hash(content of generated resource).
	Name string `json:"name,omitempty" yaml:"name,omitempty"`

	// Behavior of generated resource, must be one of:
	//   'create': create a new one
	//   'replace': replace the existing one
	//   'merge': merge with the existing one
	Behavior string `json:"behavior,omitempty" yaml:"behavior,omitempty"`

	// KvPairSources for the generator.
	KvPairSources `json:",inline,omitempty" yaml:",inline,omitempty"`

	// Local overrides to global generatorOptions field.
	Options *GeneratorOptions `json:"options,omitempty" yaml:"options,omitempty"`
}

GeneratorArgs contains arguments common to ConfigMap and Secret generators.

type GeneratorOptions

type GeneratorOptions struct {
	// Labels to add to all generated resources.
	Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`

	// Annotations to add to all generated resources.
	Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`

	// DisableNameSuffixHash if true disables the default behavior of adding a
	// suffix to the names of generated resources that is a hash of the
	// resource contents.
	DisableNameSuffixHash bool `json:"disableNameSuffixHash,omitempty" yaml:"disableNameSuffixHash,omitempty"`
}

GeneratorOptions modify behavior of all ConfigMap and Secret generators.

func MergeGlobalOptionsIntoLocal

func MergeGlobalOptionsIntoLocal(
	localOpts *GeneratorOptions,
	globalOpts *GeneratorOptions) *GeneratorOptions

MergeGlobalOptionsIntoLocal merges two instances of GeneratorOptions. Values in the first 'local' argument cannot be overridden by the second 'global' argument, except in the case of booleans.

With booleans, there's no way to distinguish an 'intentional' false from 'default' false. So the rule is, if the global value of the value of a boolean is true, i.e. disable, it trumps the local value. If the global value is false, then the local value is respected. Bottom line: a local false cannot override a global true.

boolean fields are always a bad idea; should always use enums instead.

type HelmChartArgs

type HelmChartArgs struct {
	ChartName    string `json:"chartName,omitempty" yaml:"chartName,omitempty"`
	ChartVersion string `json:"chartVersion,omitempty" yaml:"chartVersion,omitempty"`
	ChartRepoURL string `json:"chartRepoUrl,omitempty" yaml:"chartRepoUrl,omitempty"`
	ChartHome    string `json:"chartHome,omitempty" yaml:"chartHome,omitempty"`
	// Use chartRelease to keep compatible with old exec plugin
	ChartRepoName    string                 `json:"chartRelease,omitempty" yaml:"chartRelease,omitempty"`
	HelmBin          string                 `json:"helmBin,omitempty" yaml:"helmBin,omitempty"`
	HelmHome         string                 `json:"helmHome,omitempty" yaml:"helmHome,omitempty"`
	Values           string                 `json:"values,omitempty" yaml:"values,omitempty"`
	ValuesLocal      map[string]interface{} `json:"valuesLocal,omitempty" yaml:"valuesLocal,omitempty"`
	ValuesMerge      string                 `json:"valuesMerge,omitempty" yaml:"valuesMerge,omitempty"`
	ReleaseName      string                 `json:"releaseName,omitempty" yaml:"releaseName,omitempty"`
	ReleaseNamespace string                 `json:"releaseNamespace,omitempty" yaml:"releaseNamespace,omitempty"`
	ExtraArgs        []string               `json:"extraArgs,omitempty" yaml:"extraArgs,omitempty"`
}

HelmChartArgs contains the metadata of how to generate a secret.

type Image

type Image struct {
	// Name is a tag-less image name.
	Name string `json:"name,omitempty" yaml:"name,omitempty"`

	// NewName is the value used to replace the original name.
	NewName string `json:"newName,omitempty" yaml:"newName,omitempty"`

	// NewTag is the value used to replace the original tag.
	NewTag string `json:"newTag,omitempty" yaml:"newTag,omitempty"`

	// Digest is the value used to replace the original image tag.
	// If digest is present NewTag value is ignored.
	Digest string `json:"digest,omitempty" yaml:"digest,omitempty"`
}

Image contains an image name, a new name, a new tag or digest, which will replace the original name and tag.

type Inventory

type Inventory struct {
	Type      string   `json:"type,omitempty" yaml:"type,omitempty"`
	ConfigMap NameArgs `json:"configMap,omitempty" yaml:"configMap,omitempty"`
}

Inventory records all objects touched in a build operation.

type Kustomization

type Kustomization struct {
	TypeMeta `json:",inline" yaml:",inline"`

	// MetaData is a pointer to avoid marshalling empty struct
	MetaData *ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`

	// OpenAPI contains information about what kubernetes schema to use.
	OpenAPI map[string]string `json:"openapi,omitempty" yaml:"openapi,omitempty"`

	// NamePrefix will prefix the names of all resources mentioned in the kustomization
	// file including generated configmaps and secrets.
	NamePrefix string `json:"namePrefix,omitempty" yaml:"namePrefix,omitempty"`

	// NameSuffix will suffix the names of all resources mentioned in the kustomization
	// file including generated configmaps and secrets.
	NameSuffix string `json:"nameSuffix,omitempty" yaml:"nameSuffix,omitempty"`

	// Namespace to add to all objects.
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`

	// CommonLabels to add to all objects and selectors.
	CommonLabels map[string]string `json:"commonLabels,omitempty" yaml:"commonLabels,omitempty"`

	// CommonAnnotations to add to all objects.
	CommonAnnotations map[string]string `json:"commonAnnotations,omitempty" yaml:"commonAnnotations,omitempty"`

	// PatchesStrategicMerge specifies the relative path to a file
	// containing a strategic merge patch.  Format documented at
	// https://github.com/kubernetes/community/blob/master/contributors/devel/strategic-merge-patch.md
	// URLs and globs are not supported.
	PatchesStrategicMerge []PatchStrategicMerge `json:"patchesStrategicMerge,omitempty" yaml:"patchesStrategicMerge,omitempty"`

	// JSONPatches is a list of JSONPatch for applying JSON patch.
	// Format documented at https://tools.ietf.org/html/rfc6902
	// and http://jsonpatch.com
	PatchesJson6902 []Patch `json:"patchesJson6902,omitempty" yaml:"patchesJson6902,omitempty"`

	// Patches is a list of patches, where each one can be either a
	// Strategic Merge Patch or a JSON patch.
	// Each patch can be applied to multiple target objects.
	Patches []Patch `json:"patches,omitempty" yaml:"patches,omitempty"`

	// Images is a list of (image name, new name, new tag or digest)
	// for changing image names, tags or digests. This can also be achieved with a
	// patch, but this operator is simpler to specify.
	Images []Image `json:"images,omitempty" yaml:"images,omitempty"`

	// Replicas is a list of {resourcename, count} that allows for simpler replica
	// specification. This can also be done with a patch.
	Replicas []Replica `json:"replicas,omitempty" yaml:"replicas,omitempty"`

	// Vars allow things modified by kustomize to be injected into a
	// kubernetes object specification. A var is a name (e.g. FOO) associated
	// with a field in a specific resource instance.  The field must
	// contain a value of type string/bool/int/float, and defaults to the name field
	// of the instance.  Any appearance of "$(FOO)" in the object
	// spec will be replaced at kustomize build time, after the final
	// value of the specified field has been determined.
	Vars []Var `json:"vars,omitempty" yaml:"vars,omitempty"`

	// Resources specifies relative paths to files holding YAML representations
	// of kubernetes API objects, or specifications of other kustomizations
	// via relative paths, absolute paths, or URLs.
	Resources []string `json:"resources,omitempty" yaml:"resources,omitempty"`

	// Components specifies relative paths to specifications of other Components
	// via relative paths, absolute paths, or URLs.
	Components []string `json:"components,omitempty" yaml:"components,omitempty"`

	// Crds specifies relative paths to Custom Resource Definition files.
	// This allows custom resources to be recognized as operands, making
	// it possible to add them to the Resources list.
	// CRDs themselves are not modified.
	Crds []string `json:"crds,omitempty" yaml:"crds,omitempty"`

	// Deprecated.
	// Anything that would have been specified here should
	// be specified in the Resources field instead.
	Bases []string `json:"bases,omitempty" yaml:"bases,omitempty"`

	// ConfigMapGenerator is a list of configmaps to generate from
	// local data (one configMap per list item).
	// The resulting resource is a normal operand, subject to
	// name prefixing, patching, etc.  By default, the name of
	// the map will have a suffix hash generated from its contents.
	ConfigMapGenerator []ConfigMapArgs `json:"configMapGenerator,omitempty" yaml:"configMapGenerator,omitempty"`

	// SecretGenerator is a list of secrets to generate from
	// local data (one secret per list item).
	// The resulting resource is a normal operand, subject to
	// name prefixing, patching, etc.  By default, the name of
	// the map will have a suffix hash generated from its contents.
	SecretGenerator []SecretArgs `json:"secretGenerator,omitempty" yaml:"secretGenerator,omitempty"`

	// HelmChartInflationGenerator is a list of helm chart configurations.
	// The resulting resource is a normal operand rendered from
	// a remote chart by `helm template`
	HelmChartInflationGenerator []HelmChartArgs `json:"helmChartInflationGenerator,omitempty" yaml:"helmChartInflationGenerator,omitempty"`

	// GeneratorOptions modify behavior of all ConfigMap and Secret generators.
	GeneratorOptions *GeneratorOptions `json:"generatorOptions,omitempty" yaml:"generatorOptions,omitempty"`

	// Configurations is a list of transformer configuration files
	Configurations []string `json:"configurations,omitempty" yaml:"configurations,omitempty"`

	// Generators is a list of files containing custom generators
	Generators []string `json:"generators,omitempty" yaml:"generators,omitempty"`

	// Transformers is a list of files containing transformers
	Transformers []string `json:"transformers,omitempty" yaml:"transformers,omitempty"`

	// Validators is a list of files containing validators
	Validators []string `json:"validators,omitempty" yaml:"validators,omitempty"`

	// Inventory appends an object that contains the record
	// of all other objects, which can be used in apply, prune and delete
	Inventory *Inventory `json:"inventory,omitempty" yaml:"inventory,omitempty"`
}

Kustomization holds the information needed to generate customized k8s api resources.

func (*Kustomization) EnforceFields

func (k *Kustomization) EnforceFields() []string

func (*Kustomization) FixKustomizationPostUnmarshalling

func (k *Kustomization) FixKustomizationPostUnmarshalling()

FixKustomizationPostUnmarshalling fixes things like empty fields that should not be empty, or moving content of deprecated fields to newer fields.

func (*Kustomization) FixKustomizationPreMarshalling

func (k *Kustomization) FixKustomizationPreMarshalling()

FixKustomizationPreMarshalling fixes things that should occur after the kustomization file has been processed.

func (*Kustomization) Unmarshal

func (k *Kustomization) Unmarshal(y []byte) error

Unmarshal replace k with the content in YAML input y

type KvPairSources

type KvPairSources struct {
	// LiteralSources is a list of literal
	// pair sources. Each literal source should
	// be a key and literal value, e.g. `key=value`
	LiteralSources []string `json:"literals,omitempty" yaml:"literals,omitempty"`

	// FileSources is a list of file "sources" to
	// use in creating a list of key, value pairs.
	// A source takes the form:  [{key}=]{path}
	// If the "key=" part is missing, the key is the
	// path's basename. If they "key=" part is present,
	// it becomes the key (replacing the basename).
	// In either case, the value is the file contents.
	// Specifying a directory will iterate each named
	// file in the directory whose basename is a
	// valid configmap key.
	FileSources []string `json:"files,omitempty" yaml:"files,omitempty"`

	// EnvSources is a list of file paths.
	// The contents of each file should be one
	// key=value pair per line, e.g. a Docker
	// or npm ".env" file or a ".ini" file
	// (wikipedia.org/wiki/INI_file)
	EnvSources []string `json:"envs,omitempty" yaml:"envs,omitempty"`
}

KvPairSources defines places to obtain key value pairs.

type LoadRestrictions

type LoadRestrictions int

Restrictions on what things can be referred to in a kustomization file.

const (
	LoadRestrictionsUnknown LoadRestrictions = iota

	// Files referenced by a kustomization file must be in
	// or under the directory holding the kustomization
	// file itself.
	LoadRestrictionsRootOnly

	// The kustomization file may specify absolute or
	// relative paths to patch or resources files outside
	// its own tree.
	LoadRestrictionsNone
)

func (LoadRestrictions) String

func (i LoadRestrictions) String() string

type NameArgs

type NameArgs struct {
	Name      string `json:"name,omitempty" yaml:"name,omitempty"`
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
}

NameArgs holds both namespace and name.

type ObjectMeta

type ObjectMeta struct {
	Name        string            `json:"name,omitempty" yaml:"name,omitempty"`
	Namespace   string            `json:"namespace,omitempty" yaml:"namespace,omitempty"`
	Labels      map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
	Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
}

ObjectMeta partially copies apimachinery/pkg/apis/meta/v1.ObjectMeta No need for a direct dependence; the fields are stable.

type Pair

type Pair struct {
	Key   string
	Value string
}

Pair is a key value pair.

type Patch

type Patch struct {
	// Path is a relative file path to the patch file.
	Path string `json:"path,omitempty" yaml:"path,omitempty"`

	// Patch is the content of a patch.
	Patch string `json:"patch,omitempty" yaml:"patch,omitempty"`

	// Target points to the resources that the patch is applied to
	Target *Selector `json:"target,omitempty" yaml:"target,omitempty"`
}

Patch represent either a Strategic Merge Patch or a JSON patch and its targets. The content of the patch can either be from a file or from an inline string.

func (*Patch) Equals

func (p *Patch) Equals(o Patch) bool

Equals return true if p equals o.

type PatchStrategicMerge

type PatchStrategicMerge string

PatchStrategicMerge represents a relative path to a stategic merge patch with the format https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md

type PluginConfig

type PluginConfig struct {
	// AbsPluginHome is the home of kustomize plugins.
	// Kustomize plugin configuration files are k8s-style objects
	// containing the fields 'apiVersion' and 'kind', e.g.
	//   apiVersion: apps/v1
	//   kind: Deployment
	// kustomize reads plugin configuration data from a file path
	// specified in the 'generators:' or 'transformers:' field of a
	// kustomization file.  kustomize must then use this data to both
	// locate the plugin and configure it.
	// Every kustomize plugin (its code, its tests, its supporting data
	// files, etc.) must be housed in its own directory at
	//   ${AbsPluginHome}/${pluginApiVersion}/LOWERCASE(${pluginKind})
	// where
	//   - ${AbsPluginHome} is an absolute path, defined below.
	//   - ${pluginApiVersion} is taken from the plugin config file.
	//   - ${pluginKind} is taken from the plugin config file.
	// The value of AbsPluginHome can be any absolute path.
	AbsPluginHome string

	// PluginRestrictions distinguishes plugin restrictions.
	PluginRestrictions PluginRestrictions

	// BpLoadingOptions distinguishes builtin plugin behaviors.
	BpLoadingOptions BuiltinPluginLoadingOptions

	// FnpLoadingOptions sets the way function-based plugin behaviors.
	FnpLoadingOptions FnPluginLoadingOptions
}

PluginConfig holds plugin configuration.

type PluginRestrictions

type PluginRestrictions int

Some plugin classes

  • builtin: plugins defined in the kustomize repo. May be freely used and re-configured.
  • local: plugins that aren't builtin but are locally defined (presumably by the user), meaning the kustomization refers to them via a relative file path, not a URL.
  • remote: require a build-time download to obtain. Unadvised, unless one controls the serving site.
const (
	PluginRestrictionsUnknown PluginRestrictions = iota

	// Non-builtin plugins completely disabled.
	PluginRestrictionsBuiltinsOnly

	// No restrictions, do whatever you want.
	PluginRestrictionsNone
)

func (PluginRestrictions) String

func (i PluginRestrictions) String() string

type ReplSource

type ReplSource struct {
	ObjRef   *Target `json:"objref,omitempty" yaml:"objref,omitempty"`
	FieldRef string  `json:"fieldref,omitempty" yaml:"fiedldref,omitempty"`
	Value    string  `json:"value,omitempty" yaml:"value,omitempty"`
}

ReplSource defines where a substitution is from It can from two different kinds of sources

  • from a field of one resource
  • from a string

type ReplTarget

type ReplTarget struct {
	ObjRef    *Selector `json:"objref,omitempty" yaml:"objref,omitempty"`
	FieldRefs []string  `json:"fieldrefs,omitempty" yaml:"fieldrefs,omitempty"`
}

ReplTarget defines where a substitution is to.

type Replacement

type Replacement struct {
	Source *ReplSource `json:"source" yaml:"source"`
	Target *ReplTarget `json:"target" yaml:"target"`
}

Replacement defines how to perform a substitution where it is from and where it is to.

type Replica

type Replica struct {
	// The name of the resource to change the replica count
	Name string `json:"name,omitempty" yaml:"name,omitempty"`

	// The number of replicas required.
	Count int64 `json:"count" yaml:"count"`
}

Replica specifies a modification to a replica config. The number of replicas of a resource whose name matches will be set to count. This struct is used by the ReplicaCountTransform, and is meant to supplement the existing patch functionality with a simpler syntax for replica configuration.

type SecretArgs

type SecretArgs struct {
	// GeneratorArgs for the secret.
	GeneratorArgs `json:",inline,omitempty" yaml:",inline,omitempty"`

	// Type of the secret.
	//
	// This is the same field as the secret type field in v1/Secret:
	// It can be "Opaque" (default), or "kubernetes.io/tls".
	//
	// If type is "kubernetes.io/tls", then "literals" or "files" must have exactly two
	// keys: "tls.key" and "tls.crt"
	Type string `json:"type,omitempty" yaml:"type,omitempty"`
}

SecretArgs contains the metadata of how to generate a secret.

type Selector

type Selector struct {
	resid.Gvk `json:",inline,omitempty" yaml:",inline,omitempty"`
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
	Name      string `json:"name,omitempty" yaml:"name,omitempty"`

	// AnnotationSelector is a string that follows the label selection expression
	// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
	// It matches with the resource annotations.
	AnnotationSelector string `json:"annotationSelector,omitempty" yaml:"annotationSelector,omitempty"`

	// LabelSelector is a string that follows the label selection expression
	// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
	// It matches with the resource labels.
	LabelSelector string `json:"labelSelector,omitempty" yaml:"labelSelector,omitempty"`
}

Selector specifies a set of resources. Any resource that matches intersection of all conditions is included in this set.

type SelectorRegex

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

SelectorRegex is a Selector with regex in GVK Any resource that matches intersection of all conditions is included in this set.

func NewSelectorRegex

func NewSelectorRegex(s *Selector) (*SelectorRegex, error)

NewSelectorRegex returns a pointer to a new SelectorRegex which uses the same condition as s.

func (*SelectorRegex) MatchGvk

func (s *SelectorRegex) MatchGvk(gvk resid.Gvk) bool

MatchGvk return true if gvk can be matched by s.

func (*SelectorRegex) MatchName

func (s *SelectorRegex) MatchName(n string) bool

MatchName returns true if the name in selector is empty or the n can be matches by the name in selector

func (*SelectorRegex) MatchNamespace

func (s *SelectorRegex) MatchNamespace(ns string) bool

MatchNamespace returns true if the namespace in selector is empty or the ns can be matches by the namespace in selector

type Target

type Target struct {
	APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
	resid.Gvk  `json:",inline,omitempty" yaml:",inline,omitempty"`
	Name       string `json:"name" yaml:"name"`
	Namespace  string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
}

Target refers to a kubernetes object by Group, Version, Kind and Name gvk.Gvk contains Group, Version and Kind APIVersion is added to keep the backward compatibility of using ObjectReference for Var.ObjRef

func (*Target) GVK

func (t *Target) GVK() resid.Gvk

GVK returns the Gvk object in Target

type TypeMeta

type TypeMeta struct {
	Kind       string `json:"kind,omitempty" yaml:"kind,omitempty"`
	APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
}

TypeMeta partially copies apimachinery/pkg/apis/meta/v1.TypeMeta No need for a direct dependence; the fields are stable.

type Var

type Var struct {
	// Value of identifier name e.g. FOO used in container args, annotations
	// Appears in pod template as $(FOO)
	Name string `json:"name" yaml:"name"`

	// ObjRef must refer to a Kubernetes resource under the
	// purview of this kustomization. ObjRef should use the
	// raw name of the object (the name specified in its YAML,
	// before addition of a namePrefix and a nameSuffix).
	ObjRef Target `json:"objref" yaml:"objref"`

	// FieldRef refers to the field of the object referred to by
	// ObjRef whose value will be extracted for use in
	// replacing $(FOO).
	// If unspecified, this defaults to fieldPath: $defaultFieldPath
	FieldRef FieldSelector `json:"fieldref,omitempty" yaml:"fieldref,omitempty"`
}

Var represents a variable whose value will be sourced from a field in a Kubernetes object.

func (Var) DeepEqual

func (v Var) DeepEqual(other Var) bool

DeepEqual returns true if var a and b are Equals. Note 1: The objects are unchanged by the VarEqual Note 2: Should be normalize be FieldPath before doing the DeepEqual. spec.a[b] is supposed to be the same as spec.a.b

func (*Var) Defaulting

func (v *Var) Defaulting()

defaulting sets reference to field used by default.

type VarSet

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

VarSet is a set of Vars where no var.Name is repeated.

func NewVarSet

func NewVarSet() VarSet

NewVarSet returns an initialized VarSet

func (*VarSet) Absorb

func (vs *VarSet) Absorb(v Var) error

Absorb absorbs another Var with error on (name,value) collision. Empty fields in incoming Var is defaulted.

func (*VarSet) AbsorbSet

func (vs *VarSet) AbsorbSet(incoming VarSet) error

AbsorbSet absorbs other vars with error on (name,value) collision.

func (*VarSet) AbsorbSlice

func (vs *VarSet) AbsorbSlice(incoming []Var) error

AbsorbSlice absorbs a Var slice with error on (name,value) collision. Empty fields in incoming vars are defaulted.

func (*VarSet) AsSlice

func (vs *VarSet) AsSlice() []Var

AsSlice returns the vars as a slice.

func (*VarSet) Contains

func (vs *VarSet) Contains(other Var) bool

Contains is true if the set has the other var.

func (*VarSet) Copy

func (vs *VarSet) Copy() VarSet

Copy returns a copy of the var set.

func (*VarSet) Get

func (vs *VarSet) Get(name string) *Var

Get returns the var with the given name, else nil.

func (*VarSet) Merge

func (vs *VarSet) Merge(v Var) error

Merge absorbs another Var with error on name collision. Empty fields in incoming Var is defaulted.

func (*VarSet) MergeSet

func (vs *VarSet) MergeSet(incoming VarSet) error

MergeSet absorbs other vars with error on name collision.

func (*VarSet) MergeSlice

func (vs *VarSet) MergeSlice(incoming []Var) error

MergeSlice absorbs a Var slice with error on name collision. Empty fields in incoming vars are defaulted.

Jump to

Keyboard shortcuts

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