config

package
v0.24.0-alpha Latest Latest
Warning

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

Go to latest
Published: May 14, 2024 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package config implements the current apiVersion of the `kind` Config along with some common abstractions

+k8s:deepcopy-gen=package +k8s:conversion-gen=sigs.k8s.io/kind/pkg/internal/apis/config +k8s:defaulter-gen=TypeMeta

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ClusterHasIPv6 added in v0.12.0

func ClusterHasIPv6(c *Cluster) bool

ClusterHasIPv6 returns true if the cluster should have IPv6 enabled due to either being IPv6 cluster family or Dual Stack

func ClusterHasImplicitLoadBalancer added in v0.12.0

func ClusterHasImplicitLoadBalancer(c *Cluster) bool

ClusterHasImplicitLoadBalancer returns true if this cluster has an implicit api-server LoadBalancer

func SetDefaultsCluster added in v0.6.0

func SetDefaultsCluster(obj *Cluster)

SetDefaultsCluster sets uninitialized fields to their default value.

func SetDefaultsNode added in v0.6.0

func SetDefaultsNode(obj *Node)

SetDefaultsNode sets uninitialized fields to their default value.

Types

type Cluster

type Cluster struct {
	// The cluster name.
	// Optional, this will be overridden by --name / KIND_CLUSTER_NAME
	Name string

	// Nodes contains the list of nodes defined in the `kind` Cluster
	// If unset this will default to a single control-plane node
	// Note that if more than one control plane is specified, an external
	// control plane load balancer will be provisioned implicitly
	Nodes []Node

	// Networking contains cluster wide network settings
	Networking Networking

	// FeatureGates contains a map of Kubernetes feature gates to whether they
	// are enabled. The feature gates specified here are passed to all Kubernetes components as flags or in config.
	//
	// https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/
	FeatureGates map[string]bool

	// RuntimeConfig Keys and values are translated into --runtime-config values for kube-apiserver, separated by commas.
	//
	// Use this to enable alpha APIs.
	RuntimeConfig map[string]string

	// KubeadmConfigPatches are applied to the generated kubeadm config as
	// strategic merge patches to `kustomize build` internally
	// https://github.com/kubernetes/community/blob/a9cf5c8f3380bb52ebe57b1e2dbdec136d8dd484/contributors/devel/sig-api-machinery/strategic-merge-patch.md
	// This should be an inline yaml blob-string
	KubeadmConfigPatches []string

	// KubeadmConfigPatchesJSON6902 are applied to the generated kubeadm config
	// as patchesJson6902 to `kustomize build`
	KubeadmConfigPatchesJSON6902 []PatchJSON6902

	// ContainerdConfigPatches are applied to every node's containerd config
	// in the order listed.
	// These should be toml stringsto be applied as merge patches
	ContainerdConfigPatches []string

	// ContainerdConfigPatchesJSON6902 are applied to every node's containerd config
	// in the order listed.
	// These should be YAML or JSON formatting RFC 6902 JSON patches
	ContainerdConfigPatchesJSON6902 []string
}

Cluster contains kind cluster configuration

func Convertv1alpha4 added in v0.6.0

func Convertv1alpha4(in *v1alpha4.Cluster) *Cluster

Convertv1alpha4 converts a v1alpha4 cluster to a cluster at the internal API version

func (*Cluster) DeepCopy

func (in *Cluster) DeepCopy() *Cluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.

func (*Cluster) DeepCopyInto

func (in *Cluster) DeepCopyInto(out *Cluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Cluster) Validate

func (c *Cluster) Validate() error

Validate returns a ConfigErrors with an entry for each problem with the config, or nil if there are none

type ClusterIPFamily

type ClusterIPFamily string

ClusterIPFamily defines cluster network IP family

const (
	// IPv4Family sets ClusterIPFamily to ipv4
	IPv4Family ClusterIPFamily = "ipv4"
	// IPv6Family sets ClusterIPFamily to ipv6
	IPv6Family ClusterIPFamily = "ipv6"
	// DualStackFamily sets ClusterIPFamily to dual
	DualStackFamily ClusterIPFamily = "dual"
)

type Mount added in v0.6.0

type Mount struct {
	// Path of the mount within the container.
	ContainerPath string
	// Path of the mount on the host. If the hostPath doesn't exist, then runtimes
	// should report error. If the hostpath is a symbolic link, runtimes should
	// follow the symlink and mount the real destination to container.
	HostPath string
	// If set, the mount is read-only.
	Readonly bool
	// If set, the mount needs SELinux relabeling.
	SelinuxRelabel bool
	// Requested propagation mode.
	Propagation MountPropagation
}

Mount specifies a host volume to mount into a container. This is a close copy of the upstream cri Mount type see: k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2 It additionally serializes the "propagation" field with the string enum names on disk as opposed to the int32 values, and the serialized field names have been made closer to core/v1 VolumeMount field names In yaml this looks like:

containerPath: /foo
hostPath: /bar
readOnly: true
selinuxRelabel: false
propagation: None

Propagation may be one of: None, HostToContainer, Bidirectional

func (*Mount) DeepCopy added in v0.6.0

func (in *Mount) DeepCopy() *Mount

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Mount.

func (*Mount) DeepCopyInto added in v0.6.0

func (in *Mount) DeepCopyInto(out *Mount)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MountPropagation added in v0.6.0

type MountPropagation string

MountPropagation represents an "enum" for mount propagation options, see also Mount.

const (
	// MountPropagationNone specifies that no mount propagation
	// ("private" in Linux terminology).
	MountPropagationNone MountPropagation = "None"
	// MountPropagationHostToContainer specifies that mounts get propagated
	// from the host to the container ("rslave" in Linux).
	MountPropagationHostToContainer MountPropagation = "HostToContainer"
	// MountPropagationBidirectional specifies that mounts get propagated from
	// the host to the container and from the container to the host
	// ("rshared" in Linux).
	MountPropagationBidirectional MountPropagation = "Bidirectional"
)

type Networking

type Networking struct {
	// IPFamily is the network cluster model, currently it can be ipv4 or ipv6
	IPFamily ClusterIPFamily
	// APIServerPort is the listen port on the host for the Kubernetes API Server
	// Defaults to a random port on the host obtained by kind
	//
	// NOTE: if you set the special value of `-1` then the node backend
	// (docker, podman...) will be left to pick the port instead.
	// This is potentially useful for remote hosts, BUT it means when the container
	// is restarted it will be randomized. Leave this unset to allow kind to pick it.
	APIServerPort int32
	// APIServerAddress is the listen address on the host for the Kubernetes
	// API Server. This should be an IP address.
	//
	// Defaults to 127.0.0.1
	APIServerAddress string
	// PodSubnet is the CIDR used for pod IPs
	// kind will select a default if unspecified
	PodSubnet string
	// ServiceSubnet is the CIDR used for services VIPs
	// kind will select a default if unspecified
	ServiceSubnet string
	// If DisableDefaultCNI is true, kind will not install the default CNI setup.
	// Instead the user should install their own CNI after creating the cluster.
	DisableDefaultCNI bool
	// KubeProxyMode defines if kube-proxy should operate in iptables, ipvs or nftables mode
	KubeProxyMode ProxyMode
	// DNSSearch defines the DNS search domain to use for nodes. If not set, this will be inherited from the host.
	DNSSearch *[]string
}

Networking contains cluster wide network settings

func (*Networking) DeepCopy

func (in *Networking) DeepCopy() *Networking

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Networking.

func (*Networking) DeepCopyInto

func (in *Networking) DeepCopyInto(out *Networking)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Node

type Node struct {
	// Role defines the role of the node in the in the Kubernetes cluster
	// created by kind
	//
	// Defaults to "control-plane"
	Role NodeRole

	// Image is the node image to use when creating this node
	// If unset a default image will be used, see defaults.Image
	Image string

	// Labels are the labels with which the respective node will be labeled
	Labels map[string]string

	// ExtraMounts describes additional mount points for the node container
	// These may be used to bind a hostPath
	ExtraMounts []Mount

	// ExtraPortMappings describes additional port mappings for the node container
	// binded to a host Port
	ExtraPortMappings []PortMapping

	// KubeadmConfigPatches are applied to the generated kubeadm config as
	// strategic merge patches to `kustomize build` internally
	// https://github.com/kubernetes/community/blob/a9cf5c8f3380bb52ebe57b1e2dbdec136d8dd484/contributors/devel/sig-api-machinery/strategic-merge-patch.md
	// This should be an inline yaml blob-string
	KubeadmConfigPatches []string

	// KubeadmConfigPatchesJSON6902 are applied to the generated kubeadm config
	// as patchesJson6902 to `kustomize build`
	KubeadmConfigPatchesJSON6902 []PatchJSON6902
}

Node contains settings for a node in the `kind` Cluster. A node in kind config represent a container that will be provisioned with all the components required for the assigned role in the Kubernetes cluster

func (*Node) DeepCopy

func (in *Node) DeepCopy() *Node

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node.

func (*Node) DeepCopyInto

func (in *Node) DeepCopyInto(out *Node)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Node) Validate

func (n *Node) Validate() error

Validate returns a ConfigErrors with an entry for each problem with the Node, or nil if there are none

type NodeRole

type NodeRole string

NodeRole defines possible role for nodes in a Kubernetes cluster managed by `kind`

const (
	// ControlPlaneRole identifies a node that hosts a Kubernetes control-plane.
	// NOTE: in single node clusters, control-plane nodes act also as a worker
	// nodes, in which case the taint will be removed. see:
	// https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#control-plane-node-isolation
	ControlPlaneRole NodeRole = "control-plane"
	// WorkerRole identifies a node that hosts a Kubernetes worker
	WorkerRole NodeRole = "worker"
)

type PatchJSON6902

type PatchJSON6902 struct {
	// these fields specify the patch target resource
	Group   string
	Version string
	Kind    string
	// Patch should contain the contents of the json patch as a string
	Patch string
}

PatchJSON6902 represents an inline kustomize json 6902 patch https://tools.ietf.org/html/rfc6902

func (*PatchJSON6902) DeepCopy

func (in *PatchJSON6902) DeepCopy() *PatchJSON6902

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchJSON6902.

func (*PatchJSON6902) DeepCopyInto

func (in *PatchJSON6902) DeepCopyInto(out *PatchJSON6902)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortMapping added in v0.6.0

type PortMapping struct {
	// Port within the container.
	ContainerPort int32
	// Port on the host.
	//
	// If unset, a random port will be selected.
	//
	// NOTE: if you set the special value of `-1` then the node backend
	// (docker, podman...) will be left to pick the port instead.
	// This is potentially useful for remote hosts, BUT it means when the container
	// is restarted it will be randomized. Leave this unset to allow kind to pick it.
	HostPort int32
	// TODO: add protocol (tcp/udp) and port-ranges
	ListenAddress string
	// Protocol (TCP/UDP/SCTP)
	Protocol PortMappingProtocol
}

PortMapping specifies a host port mapped into a container port. In yaml this looks like:

containerPort: 80
hostPort: 8000
listenAddress: 127.0.0.1
protocol: TCP

func (*PortMapping) DeepCopy added in v0.6.0

func (in *PortMapping) DeepCopy() *PortMapping

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortMapping.

func (*PortMapping) DeepCopyInto added in v0.6.0

func (in *PortMapping) DeepCopyInto(out *PortMapping)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PortMappingProtocol added in v0.6.0

type PortMappingProtocol string

PortMappingProtocol represents an "enum" for port mapping protocol options, see also PortMapping.

const (
	// PortMappingProtocolTCP specifies TCP protocol
	PortMappingProtocolTCP PortMappingProtocol = "TCP"
	// PortMappingProtocolUDP specifies UDP protocol
	PortMappingProtocolUDP PortMappingProtocol = "UDP"
	// PortMappingProtocolSCTP specifies SCTP protocol
	PortMappingProtocolSCTP PortMappingProtocol = "SCTP"
)

type ProxyMode added in v0.9.0

type ProxyMode string

ProxyMode defines a proxy mode for kube-proxy

const (
	// IPTablesProxyMode sets ProxyMode to iptables
	IPTablesProxyMode ProxyMode = "iptables"
	// IPVSProxyMode sets ProxyMode to ipvs
	IPVSProxyMode ProxyMode = "ipvs"
	// NFTablesProxyMode sets ProxyMode to nftables
	NFTablesProxyMode ProxyMode = "nftables"
	// NoneProxyMode disables kube-proxy
	NoneProxyMode ProxyMode = "none"
)

Directories

Path Synopsis
Package encoding implements utilities for decoding from yaml the `kind` Config
Package encoding implements utilities for decoding from yaml the `kind` Config

Jump to

Keyboard shortcuts

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