package namespace

import "sigs.k8s.io/kustomize/api/filters/namespace"

Package namespace contains a kio.Filter implementation of the kustomize namespace transformer.

Special cases for known Kubernetes resources have been hardcoded in addition to those defined by the FsSlice.

Index

Examples

Types

type Filter

type Filter struct {
	// Namespace is the namespace to apply to the inputs
	Namespace string `yaml:"namespace,omitempty"`

	// FsSlice contains the FieldSpecs to locate the namespace field
	FsSlice types.FsSlice `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`

	// UnsetOnly means only blank namespace fields will be set
	UnsetOnly bool `json:"unsetOnly" yaml:"unsetOnly"`

	// SetRoleBindingSubjects determines which subject fields in RoleBinding and ClusterRoleBinding
	// objects will have their namespace fields set. Overrides field specs provided for these types, if any.
	// - defaultOnly (default): namespace will be set only on subjects named "default".
	// - allServiceAccounts: namespace will be set on all subjects with "kind: ServiceAccount"
	// - none: all subjects will be skipped.
	SetRoleBindingSubjects RoleBindingSubjectMode `json:"setRoleBindingSubjects" yaml:"setRoleBindingSubjects"`
	// contains filtered or unexported fields
}
Example

Code:play 

package main

import (
	"bytes"
	"log"
	"os"

	"sigs.k8s.io/kustomize/api/filters/namespace"
	"sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig"
	"sigs.k8s.io/kustomize/kyaml/kio"
)

func main() {
	fss := builtinconfig.MakeDefaultConfig().NameSpace
	err := kio.Pipeline{
		Inputs: []kio.Reader{&kio.ByteReader{Reader: bytes.NewBufferString(`
apiVersion: example.com/v1
kind: Foo
metadata:
  name: instance
---
apiVersion: example.com/v1
kind: Bar
metadata:
  name: instance
  namespace: bar
`)}},
		Filters: []kio.Filter{namespace.Filter{Namespace: "app", FsSlice: fss}},
		Outputs: []kio.Writer{kio.ByteWriter{Writer: os.Stdout}},
	}.Execute()
	if err != nil {
		log.Fatal(err)
	}

}

Output:

apiVersion: example.com/v1
kind: Foo
metadata:
  name: instance
  namespace: app
---
apiVersion: example.com/v1
kind: Bar
metadata:
  name: instance
  namespace: app

func (Filter) Filter

func (ns Filter) Filter(nodes []*yaml.RNode) ([]*yaml.RNode, error)

func (*Filter) WithMutationTracker

func (ns *Filter) WithMutationTracker(callback func(key, value, tag string, node *yaml.RNode))

WithMutationTracker registers a callback which will be invoked each time a field is mutated

type RoleBindingSubjectMode

type RoleBindingSubjectMode string
const (
	DefaultSubjectsOnly       RoleBindingSubjectMode = "defaultOnly"
	SubjectModeUnspecified    RoleBindingSubjectMode = ""
	AllServiceAccountSubjects RoleBindingSubjectMode = "allServiceAccounts"
	NoSubjects                RoleBindingSubjectMode = "none"
)

Source Files

doc.go namespace.go

Version
v0.20.1 (latest)
Published
Jul 23, 2025
Platform
linux/amd64
Imports
7 packages
Last checked
26 minutes ago

Tools for package owners.