...

Package types

import "sigs.k8s.io/kustomize/api/types"
Overview
Index

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
Variables
func CopyMap(in map[string]string) map[string]string
func IsErrOnlyBuiltinPluginsAllowed(err error) bool
func IsErrUnableToFind(err error) bool
func NewErrOnlyBuiltinPluginsAllowed(n string) *errOnlyBuiltinPluginsAllowed
func NewErrUnableToFind(w string, a []Pair) *errUnableToFind
func SplitHelmParameters(oldArgs []HelmChartArgs) (charts []HelmChart, globals HelmGlobals)
type BuiltinPluginLoadingOptions
    func (i BuiltinPluginLoadingOptions) String() string
type Cloud
type ConfigMapArgs
type FieldOptions
    func (fo *FieldOptions) String() string
type FieldSelector
type FieldSpec
    func (fs FieldSpec) String() string
type FnPluginLoadingOptions
type FsSlice
    func (s FsSlice) DeepCopy() FsSlice
    func (s FsSlice) Len() int
    func (s FsSlice) Less(i, j int) bool
    func (s FsSlice) MergeAll(incoming FsSlice) (result FsSlice, err error)
    func (s FsSlice) MergeOne(x FieldSpec) (FsSlice, error)
    func (s FsSlice) Swap(i, j int)
type GenerationBehavior
    func NewGenerationBehavior(s string) GenerationBehavior
    func (b GenerationBehavior) String() string
type GeneratorArgs
type GeneratorOptions
    func MergeGlobalOptionsIntoLocal(localOpts *GeneratorOptions, globalOpts *GeneratorOptions) *GeneratorOptions
type HelmChart
    func (h HelmChart) AsHelmArgs(absChartHome string) []string
type HelmChartArgs
type HelmConfig
type HelmGlobals
type IAMPolicyGeneratorArgs
type Image
type KubernetesService
type Kustomization
    func (k *Kustomization) CheckDeprecatedFields() *[]string
    func (k *Kustomization) CheckEmpty() error
    func (k *Kustomization) EnforceFields() []string
    func (k *Kustomization) FixKustomization()
    func (k *Kustomization) FixKustomizationPreMarshalling(fSys filesys.FileSystem) error
    func (k *Kustomization) Unmarshal(y []byte) error
type KvPairSources
type Label
type LegacySortOptions
type LoadRestrictions
    func (i LoadRestrictions) String() string
type ObjectMeta
type Pair
type Patch
    func (p *Patch) Equals(o Patch) bool
type PatchStrategicMerge
type PluginConfig
    func DisabledPluginConfig() *PluginConfig
    func EnabledPluginConfig(b BuiltinPluginLoadingOptions) (pc *PluginConfig)
    func MakePluginConfig(pr PluginRestrictions, b BuiltinPluginLoadingOptions) *PluginConfig
type PluginRestrictions
    func (i PluginRestrictions) String() string
type Replacement
type ReplacementField
type Replica
type SecretArgs
type Selector
    func (s *Selector) Copy() Selector
    func (s *Selector) String() string
type SelectorRegex
    func NewSelectorRegex(s *Selector) (*SelectorRegex, error)
    func (s *SelectorRegex) MatchGvk(gvk resid.Gvk) bool
    func (s *SelectorRegex) MatchName(n string) bool
    func (s *SelectorRegex) MatchNamespace(ns string) bool
type ServiceAccount
type SortOptions
type SortOrder
type SourceSelector
    func (s *SourceSelector) String() string
type Target
    func (t *Target) GVK() resid.Gvk
type TargetSelector
type TypeMeta
type Var
    func (v Var) DeepEqual(other Var) bool
    func (v *Var) Defaulting()
type VarSet
    func NewVarSet() VarSet
    func (vs *VarSet) Absorb(v Var) error
    func (vs *VarSet) AbsorbSet(incoming VarSet) error
    func (vs *VarSet) AbsorbSlice(incoming []Var) error
    func (vs *VarSet) AsSlice() []Var
    func (vs *VarSet) Contains(other Var) bool
    func (vs *VarSet) Copy() VarSet
    func (vs *VarSet) Get(name string) *Var
    func (vs *VarSet) Merge(v Var) error
    func (vs *VarSet) MergeSet(incoming VarSet) error
    func (vs *VarSet) MergeSlice(incoming []Var) error

Package files

builtinpluginloadingoptions_string.go configmapargs.go doc.go erronlybuiltinpluginsallowed.go errunabletofind.go fieldspec.go generationbehavior.go generatorargs.go generatoroptions.go helmchartargs.go iampolicygenerator.go image.go kustomization.go kvpairsources.go labels.go loadrestrictions.go loadrestrictions_string.go objectmeta.go pair.go patch.go patchstrategicmerge.go pluginconfig.go pluginrestrictions.go pluginrestrictions_string.go replacement.go replacementfield.go replica.go secretargs.go selector.go sortoptions.go typemeta.go var.go

Constants

const (
    KustomizationVersion        = "kustomize.config.k8s.io/v1beta1"
    KustomizationKind           = "Kustomization"
    ComponentVersion            = "kustomize.config.k8s.io/v1alpha1"
    ComponentKind               = "Component"
    MetadataNamespacePath       = "metadata/namespace"
    MetadataNamespaceApiVersion = "v1"
    MetadataNamePath            = "metadata/name"

    OriginAnnotations      = "originAnnotations"
    TransformerAnnotations = "transformerAnnotations"
    ManagedByLabelOption   = "managedByLabel"
)
const DefaultReplacementFieldPath = "metadata.name"
const HelmDefaultHome = "charts"

Variables

var BuildMetadataOptions = []string{OriginAnnotations, TransformerAnnotations, ManagedByLabelOption}

func CopyMap

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

CopyMap copies a map.

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

func SplitHelmParameters

func SplitHelmParameters(
    oldArgs []HelmChartArgs) (charts []HelmChart, globals HelmGlobals)

SplitHelmParameters splits helm parameters into per-chart params and global chart-independent parameters.

type BuiltinPluginLoadingOptions

BuiltinPluginLoadingOptions distinguish ways in which builtin plugins are used.

type BuiltinPluginLoadingOptions int
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

func (i BuiltinPluginLoadingOptions) String() string

type Cloud

type Cloud string
const GKE Cloud = "gke"

type ConfigMapArgs

ConfigMapArgs contains the metadata of how to generate a configmap.

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

type FieldOptions

FieldOptions refine the interpretation of FieldPaths.

type FieldOptions struct {
    // Used to split/join the field.
    Delimiter string `json:"delimiter,omitempty" yaml:"delimiter,omitempty"`

    // Which position in the split to consider.
    Index int `json:"index,omitempty" yaml:"index,omitempty"`

    // TODO (#3492): Implement use of this option
    // None, Base64, URL, Hex, etc
    Encoding string `json:"encoding,omitempty" yaml:"encoding,omitempty"`

    // If field missing, add it.
    Create bool `json:"create,omitempty" yaml:"create,omitempty"`
}

func (*FieldOptions) String

func (fo *FieldOptions) String() string

type FieldSelector

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

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

type FieldSpec

FieldSpec completely specifies a kustomizable field in 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
}
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"`
}

func (FieldSpec) String

func (fs FieldSpec) String() string

type FnPluginLoadingOptions

FnPluginLoadingOptions set way functions-based plugins are restricted

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
    // Run as uid and gid of the command executor
    AsCurrentUser bool
    // Run in this working directory
    WorkingDir string
}

type FsSlice

type FsSlice []FieldSpec

func (FsSlice) DeepCopy

func (s FsSlice) DeepCopy() FsSlice

DeepCopy returns a new copy of FsSlice

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 GenerationBehavior

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

type GenerationBehavior int
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

GeneratorArgs contains arguments common to ConfigMap and Secret generators.

type GeneratorArgs struct {
    // Namespace for the resource, 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"`
}

type GeneratorOptions

GeneratorOptions modify behavior of all ConfigMap and Secret generators.

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"`

    // Immutable if true add to all generated resources.
    Immutable bool `json:"immutable,omitempty" yaml:"immutable,omitempty"`
}

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 HelmChart

type HelmChart struct {
    // Name is the name of the chart, e.g. 'minecraft'.
    Name string `json:"name,omitempty" yaml:"name,omitempty"`

    // Version is the version of the chart, e.g. '3.1.3'
    Version string `json:"version,omitempty" yaml:"version,omitempty"`

    // Repo is a URL locating the chart on the internet.
    // This is the argument to helm's  `--repo` flag, e.g.
    // `https://itzg.github.io/minecraft-server-charts`.
    Repo string `json:"repo,omitempty" yaml:"repo,omitempty"`

    // ReleaseName replaces RELEASE-NAME in chart template output,
    // making a particular inflation of a chart unique with respect to
    // other inflations of the same chart in a cluster. It's the first
    // argument to the helm `install` and `template` commands, i.e.
    //   helm install {RELEASE-NAME} {chartName}
    //   helm template {RELEASE-NAME} {chartName}
    // If omitted, the flag --generate-name is passed to 'helm template'.
    ReleaseName string `json:"releaseName,omitempty" yaml:"releaseName,omitempty"`

    // Namespace set the target namespace for a release. It is .Release.Namespace
    // in the helm template
    Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`

    // AdditionalValuesFiles are local file paths to values files to be used in
    // addition to either the default values file or the values specified in ValuesFile.
    AdditionalValuesFiles []string `json:"additionalValuesFiles,omitempty" yaml:"additionalValuesFiles,omitempty"`

    // ValuesFile is a local file path to a values file to use _instead of_
    // the default values that accompanied the chart.
    // The default values are in '{ChartHome}/{Name}/values.yaml'.
    ValuesFile string `json:"valuesFile,omitempty" yaml:"valuesFile,omitempty"`

    // ValuesInline holds value mappings specified directly,
    // rather than in a separate file.
    ValuesInline map[string]interface{} `json:"valuesInline,omitempty" yaml:"valuesInline,omitempty"`

    // ValuesMerge specifies how to treat ValuesInline with respect to Values.
    // Legal values: 'merge', 'override', 'replace'.
    // Defaults to 'override'.
    ValuesMerge string `json:"valuesMerge,omitempty" yaml:"valuesMerge,omitempty"`

    // IncludeCRDs specifies if Helm should also generate CustomResourceDefinitions.
    // Defaults to 'false'.
    IncludeCRDs bool `json:"includeCRDs,omitempty" yaml:"includeCRDs,omitempty"` //nolint: tagliatelle

    // SkipHooks sets the --no-hooks flag when calling helm template. This prevents
    // helm from erroneously rendering test templates.
    SkipHooks bool `json:"skipHooks,omitempty" yaml:"skipHooks,omitempty"`

    // ApiVersions is the kubernetes apiversions used for Capabilities.APIVersions
    ApiVersions []string `json:"apiVersions,omitempty" yaml:"apiVersions,omitempty"`

    // KubeVersion is the kubernetes version used by Helm for Capabilities.KubeVersion"
    KubeVersion string `json:"kubeVersion,omitempty" yaml:"kubeVersion,omitempty"`

    // NameTemplate is for specifying the name template used to name the release.
    NameTemplate string `json:"nameTemplate,omitempty" yaml:"nameTemplate,omitempty"`

    // SkipTests skips tests from templated output.
    SkipTests bool `json:"skipTests,omitempty" yaml:"skipTests,omitempty"`
}

func (HelmChart) AsHelmArgs

func (h HelmChart) AsHelmArgs(absChartHome string) []string

type HelmChartArgs

HelmChartArgs contains arguments to helm. Deprecated. Use HelmGlobals and HelmChart instead.

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"`
    ChartRepoName    string                 `json:"chartRepoName,omitempty" yaml:"chartRepoName,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"`
}

type HelmConfig

type HelmConfig struct {
    Enabled     bool
    Command     string
    ApiVersions []string
    KubeVersion string
}

type HelmGlobals

type HelmGlobals struct {
    // ChartHome is a file path, relative to the kustomization root,
    // to a directory containing a subdirectory for each chart to be
    // included in the kustomization.
    // The default value of this field is "charts".
    // So, for example, kustomize looks for the minecraft chart
    // at {kustomizationRoot}/{ChartHome}/minecraft.
    // If the chart is there at build time, kustomize will use it as found,
    // and not check version numbers or dates.
    // If the chart is not there, kustomize will attempt to pull it
    // using the version number specified in the kustomization file,
    // and put it there.  To suppress the pull attempt, simply assure
    // that the chart is already there.
    ChartHome string `json:"chartHome,omitempty" yaml:"chartHome,omitempty"`

    // ConfigHome defines a value that kustomize should pass to helm via
    // the HELM_CONFIG_HOME environment variable.  kustomize doesn't attempt
    // to read or write this directory.
    // If omitted, {tmpDir}/helm is used, where {tmpDir} is some temporary
    // directory created by kustomize for the benefit of helm.
    // Likewise, kustomize sets
    //   HELM_CACHE_HOME={ConfigHome}/.cache
    //   HELM_DATA_HOME={ConfigHome}/.data
    // for the helm subprocess.
    ConfigHome string `json:"configHome,omitempty" yaml:"configHome,omitempty"`
}

type IAMPolicyGeneratorArgs

IAMPolicyGeneratorArgs contains arguments to generate a GKE service account resource.

type IAMPolicyGeneratorArgs struct {
    // which cloud provider to generate for (e.g. "gke")
    Cloud `json:"cloud" yaml:"cloud"`

    // information about the kubernetes cluster for this object
    KubernetesService `json:"kubernetesService" yaml:"kubernetesService"`

    // information about the service account and project
    ServiceAccount `json:"serviceAccount" yaml:"serviceAccount"`
}

type Image

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

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"`

    // TagSuffix is the value used to suffix the original tag
    // If Digest and NewTag is present an error is thrown
    TagSuffix string `json:"tagSuffix,omitempty" yaml:"tagSuffix,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"`
}

type KubernetesService

type KubernetesService struct {
    // the name used for the Kubernetes service account
    Name string `json:"name" yaml:"name"`

    // the name of the Kubernetes namespace for this object
    Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
}

type Kustomization

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

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"`

    // Labels to add to all objects but not selectors.
    Labels []Label `json:"labels,omitempty" yaml:"labels,omitempty"`

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

    // Deprecated: Use the Patches field instead, which provides a superset of the functionality of PatchesStrategicMerge.
    // 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/sig-api-machinery/strategic-merge-patch.md
    // URLs and globs are not supported.
    PatchesStrategicMerge []PatchStrategicMerge `json:"patchesStrategicMerge,omitempty" yaml:"patchesStrategicMerge,omitempty"`

    // Deprecated: Use the Patches field instead, which provides a superset of the functionality of JSONPatches.
    // 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"`

    // Deprecated: Use the Images field instead.
    ImageTags []Image `json:"imageTags,omitempty" yaml:"imageTags,omitempty"`

    // Replacements is a list of replacements, which will copy nodes from a
    // specified source to N specified targets.
    Replacements []ReplacementField `json:"replacements,omitempty" yaml:"replacements,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"`

    // Deprecated: Vars will be removed in future release. Migrate to Replacements instead.
    // 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"`

    // SortOptions change the order that kustomize outputs resources.
    SortOptions *SortOptions `json:"sortOptions,omitempty" yaml:"sortOptions,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"`

    // HelmGlobals contains helm configuration that isn't chart specific.
    HelmGlobals *HelmGlobals `json:"helmGlobals,omitempty" yaml:"helmGlobals,omitempty"`

    // HelmCharts is a list of helm chart configuration instances.
    HelmCharts []HelmChart `json:"helmCharts,omitempty" yaml:"helmCharts,omitempty"`

    // HelmChartInflationGenerator is a list of helm chart configurations.
    // Deprecated.  Auto-converted to HelmGlobals and HelmCharts.
    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"`

    // BuildMetadata is a list of strings used to toggle different build options
    BuildMetadata []string `json:"buildMetadata,omitempty" yaml:"buildMetadata,omitempty"`
}

func (*Kustomization) CheckDeprecatedFields

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

CheckDeprecatedFields check deprecated field is used or not.

func (*Kustomization) CheckEmpty

func (k *Kustomization) CheckEmpty() error

func (*Kustomization) EnforceFields

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

func (*Kustomization) FixKustomization

func (k *Kustomization) FixKustomization()

FixKustomization 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(fSys filesys.FileSystem) error

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

KvPairSources defines places to obtain key value pairs.

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"`

    // Older, singular form of EnvSources.
    // On edits (e.g. `kustomize fix`) this is merged into the plural form
    // for consistency with LiteralSources and FileSources.
    EnvSource string `json:"env,omitempty" yaml:"env,omitempty"`
}

type Label

type Label struct {
    // Pairs contains the key-value pairs for labels to add
    Pairs map[string]string `json:"pairs,omitempty" yaml:"pairs,omitempty"`
    // IncludeSelectors inidicates should transformer include the
    // fieldSpecs for selectors. Custom fieldSpecs specified by
    // FieldSpecs will be merged with builtin fieldSpecs if this
    // is true.
    IncludeSelectors bool `json:"includeSelectors,omitempty" yaml:"includeSelectors,omitempty"`
    // IncludeTemplates inidicates should transformer include the
    // spec/template/metadata fieldSpec. Custom fieldSpecs specified by
    // FieldSpecs will be merged with spec/template/metadata fieldSpec if this
    // is true. If IncludeSelectors is true, IncludeTemplates is not needed.
    IncludeTemplates bool        `json:"includeTemplates,omitempty" yaml:"includeTemplates,omitempty"`
    FieldSpecs       []FieldSpec `json:"fields,omitempty" yaml:"fields,omitempty"`
}

type LegacySortOptions

LegacySortOptions define various options for tweaking the "legacy" ordering strategy.

type LegacySortOptions struct {
    // OrderFirst selects the resource kinds to order first.
    OrderFirst []string `json:"orderFirst" yaml:"orderFirst"`
    // OrderLast selects the resource kinds to order last.
    OrderLast []string `json:"orderLast" yaml:"orderLast"`
}

type LoadRestrictions

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

type LoadRestrictions int
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 ObjectMeta

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

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"`
}

type Pair

Pair is a key value pair.

type Pair struct {
    Key   string
    Value string
}

type Patch

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.

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"`

    // Options is a list of options for the patch
    Options map[string]bool `json:"options,omitempty" yaml:"options,omitempty"`
}

func (*Patch) Equals

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

Equals return true if p equals o.

type PatchStrategicMerge

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 PatchStrategicMerge string

type PluginConfig

PluginConfig holds plugin configuration.

type PluginConfig struct {
    // PluginRestrictions distinguishes plugin restrictions.
    PluginRestrictions PluginRestrictions

    // BpLoadingOptions distinguishes builtin plugin behaviors.
    BpLoadingOptions BuiltinPluginLoadingOptions

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

    // HelmConfig contains metadata needed for allowing and running helm.
    HelmConfig HelmConfig
}

func DisabledPluginConfig

func DisabledPluginConfig() *PluginConfig

func EnabledPluginConfig

func EnabledPluginConfig(b BuiltinPluginLoadingOptions) (pc *PluginConfig)

func MakePluginConfig

func MakePluginConfig(pr PluginRestrictions,
    b BuiltinPluginLoadingOptions) *PluginConfig

type PluginRestrictions

Some plugin classes

type PluginRestrictions int
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 Replacement

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

type Replacement struct {
    // The source of the value.
    Source *SourceSelector `json:"source,omitempty" yaml:"source,omitempty"`

    // The N fields to write the value to.
    Targets []*TargetSelector `json:"targets,omitempty" yaml:"targets,omitempty"`
}

type ReplacementField

type ReplacementField struct {
    Replacement `json:",inline,omitempty" yaml:",inline,omitempty"`
    Path        string `json:"path,omitempty" yaml:"path,omitempty"`
}

type Replica

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 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"`
}

type SecretArgs

SecretArgs contains the metadata of how to generate a secret.

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"`
}

type Selector

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

type Selector struct {
    // ResId refers to a GVKN/Ns of a resource.
    resid.ResId `json:",inline,omitempty" yaml:",inline,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"`
}

func (*Selector) Copy

func (s *Selector) Copy() Selector

func (*Selector) String

func (s *Selector) String() string

type SelectorRegex

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

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

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 ServiceAccount

type ServiceAccount struct {
    // the name of the new cloud provider service account
    Name string `json:"name" yaml:"name"`

    // The ID of the project
    ProjectId string `json:"projectId" yaml:"projectId"`
}

type SortOptions

SortOptions defines the order that kustomize outputs resources.

type SortOptions struct {
    // Order selects the ordering strategy.
    Order SortOrder `json:"order,omitempty" yaml:"order,omitempty"`
    // LegacySortOptions tweaks the sorting for the "legacy" sort ordering
    // strategy.
    LegacySortOptions *LegacySortOptions `json:"legacySortOptions,omitempty" yaml:"legacySortOptions,omitempty"`
}

type SortOrder

SortOrder defines different ordering strategies.

type SortOrder string
const FIFOSortOrder SortOrder = "fifo"
const LegacySortOrder SortOrder = "legacy"

type SourceSelector

SourceSelector is the source of the replacement transformer.

type SourceSelector struct {
    // A specific object to read it from.
    resid.ResId `json:",inline,omitempty" yaml:",inline,omitempty"`

    // Structured field path expected in the allowed object.
    FieldPath string `json:"fieldPath,omitempty" yaml:"fieldPath,omitempty"`

    // Used to refine the interpretation of the field.
    Options *FieldOptions `json:"options,omitempty" yaml:"options,omitempty"`
}

func (*SourceSelector) String

func (s *SourceSelector) String() string

type Target

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

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"`
}

func (*Target) GVK

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

GVK returns the Gvk object in Target

type TargetSelector

TargetSelector specifies fields in one or more objects.

type TargetSelector struct {
    // Include objects that match this.
    Select *Selector `json:"select" yaml:"select"`

    // From the allowed set, remove objects that match this.
    Reject []*Selector `json:"reject,omitempty" yaml:"reject,omitempty"`

    // Structured field paths expected in each allowed object.
    FieldPaths []string `json:"fieldPaths,omitempty" yaml:"fieldPaths,omitempty"`

    // Used to refine the interpretation of the field.
    Options *FieldOptions `json:"options,omitempty" yaml:"options,omitempty"`
}

type TypeMeta

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

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

type Var

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

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"`
}

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

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

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

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.