Documentation
¶
Overview ¶
Copyright © 2020 The k3d Author(s)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index ¶
Constants ¶
const ( LabelClusterName string = "k3d.cluster" LabelClusterURL string = "k3d.cluster.url" LabelClusterToken string = "k3d.cluster.token" LabelImageVolume string = "k3d.cluster.imageVolume" LabelNetworkExternal string = "k3d.cluster.network.external" LabelNetwork string = "k3d.cluster.network" LabelRole string = "k3d.role" LabelMasterAPIPort string = "k3d.master.api.port" LabelMasterAPIHost string = "k3d.master.api.host" LabelMasterAPIHostIP string = "k3d.master.api.hostIP" )
List of k3d technical label name
const DefaultAPIHost = "0.0.0.0"
DefaultAPIHost defines the default host (IP) for the Kubernetes API
const DefaultAPIPort = "6443"
DefaultAPIPort defines the default Kubernetes API Port
const DefaultClusterName = "k3s-default"
DefaultClusterName specifies the default name used for newly created clusters
const DefaultClusterNameMaxLength = 32
DefaultClusterNameMaxLength specifies the maximal length of a passed in cluster name This restriction allows us to construct an name consisting of <DefaultObjectNamePrefix[3]>-<ClusterName>-<TypeSuffix[5-10]>-<Counter[1-3]> ... and still stay within the 64 character limit (e.g. of docker)
const DefaultConfigDirName = ".k3d" // should end up in $HOME/
DefaultConfigDirName defines the name of the config directory (where we'll e.g. put the kubeconfigs)
const DefaultImageVolumeMountPath = "/k3d/images"
DefaultImageVolumeMountPath defines the mount path inside k3d nodes where we will mount the shared image volume by default
const DefaultK3sImageRepo = "docker.io/rancher/k3s"
DefaultK3sImageRepo specifies the default image repository for the used k3s image
const DefaultKubeconfigPrefix = DefaultObjectNamePrefix + "-kubeconfig"
DefaultKubeconfigPrefix defines the default prefix for kubeconfig files
const DefaultLBImageRepo = "docker.io/rancher/k3d-proxy"
DefaultLBImageRepo defines the default cluster load balancer image
const DefaultObjectNamePrefix = "k3d"
DefaultObjectNamePrefix defines the name prefix for every object created by k3d
const DefaultToolsImageRepo = "docker.io/rancher/k3d-tools"
DefaultToolsImageRepo defines the default image used for the tools container
Variables ¶
var DefaultNodeEnv = []string{
"K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml",
}
DefaultNodeEnv defines some default environment variables that should be set on every node
var DefaultObjectLabels = map[string]string{
"app": "k3d",
}
DefaultObjectLabels specifies a set of labels that will be attached to k3d objects by default
var DefaultRoleCmds = map[Role][]string{ MasterRole: {"server"}, WorkerRole: {"agent"}, }
DefaultRoleCmds maps the node roles to their respective default commands
var DefaultTmpfsMounts = []string{
"/run",
"/var/run",
}
DefaultTmpfsMounts specifies tmpfs mounts that are required for all k3d nodes
var DoNotCopyMasterFlags = []string{
"--cluster-init",
}
DoNotCopyMasterFlags defines a list of commands/args that shouldn't be copied from an existing node when adding a similar node to a cluster
var NodeRoles = map[string]Role{ string(MasterRole): MasterRole, string(WorkerRole): WorkerRole, string(LoadBalancerRole): LoadBalancerRole, }
NodeRoles defines the roles available for nodes
var ReadyLogMessageByRole = map[Role]string{
MasterRole: "Wrote kubeconfig",
WorkerRole: "Successfully registered node",
LoadBalancerRole: "start worker processes",
}
ReadyLogMessageByRole defines the log messages we wait for until a master node is considered ready
Functions ¶
func GetDefaultObjectName ¶
GetDefaultObjectName prefixes the passed name with the default prefix
Types ¶
type Cluster ¶
type Cluster struct { Name string `yaml:"name" json:"name,omitempty"` Network ClusterNetwork `yaml:"network" json:"network,omitempty"` Token string `yaml:"cluster_token" json:"clusterToken,omitempty"` Nodes []*Node `yaml:"nodes" json:"nodes,omitempty"` InitNode *Node // init master node ExternalDatastore ExternalDatastore `yaml:"external_datastore" json:"externalDatastore,omitempty"` CreateClusterOpts *CreateClusterOpts `yaml:"options" json:"options,omitempty"` ExposeAPI ExposeAPI `yaml:"expose_api" json:"exposeAPI,omitempty"` MasterLoadBalancer *Node `yaml:"master_loadbalancer" json:"masterLoadBalancer,omitempty"` ImageVolume string `yaml:"image_volume" json:"imageVolume,omitempty"` }
Cluster describes a k3d cluster
func (*Cluster) MasterCount ¶
MasterCount return number of master node into cluster
func (*Cluster) WorkerCount ¶
WorkerCount return number of worker node into cluster
type ClusterNetwork ¶
type ClusterNetwork struct { Name string `yaml:"name" json:"name,omitempty"` External bool `yaml:"external" json:"isExternal,omitempty"` }
ClusterNetwork describes a network which a cluster is running in
type CreateClusterOpts ¶
type CreateClusterOpts struct { DisableImageVolume bool WaitForMaster bool Timeout time.Duration DisableLoadBalancer bool K3sServerArgs []string K3sAgentArgs []string }
CreateClusterOpts describe a set of options one can set when creating a cluster
type CreateNodeOpts ¶
CreateNodeOpts describes a set of options one can set when creating a new node
type ExposeAPI ¶
type ExposeAPI struct { Host string `yaml:"host" json:"host,omitempty"` HostIP string `yaml:"host_ip" json:"hostIP,omitempty"` Port string `yaml:"port" json:"port"` }
ExposeAPI describes specs needed to expose the API-Server
type ExternalDatastore ¶
type ExternalDatastore struct { Endpoint string `yaml:"endpoint" json:"endpoint,omitempty"` CAFile string `yaml:"ca_file" json:"caFile,omitempty"` CertFile string `yaml:"cert_file" json:"certFile,omitempty"` KeyFile string `yaml:"key_file" json:"keyFile,omitempty"` Network string `yaml:"network" json:"network,omitempty"` }
ExternalDatastore describes an external datastore used for HA/multi-master clusters
type LoadImageOpts ¶
type LoadImageOpts struct {
KeepTar bool
}
LoadImageOpts describes a set of options one can set for loading image(s) into cluster(s)
type MasterOpts ¶
type MasterOpts struct { IsInit bool `yaml:"is_initializing_master" json:"isInitializingMaster,omitempty"` ExposeAPI ExposeAPI // filled automatically }
MasterOpts describes some additional master role specific opts
type Node ¶
type Node struct { Name string `yaml:"name" json:"name,omitempty"` Role Role `yaml:"role" json:"role,omitempty"` Image string `yaml:"image" json:"image,omitempty"` Volumes []string `yaml:"volumes" json:"volumes,omitempty"` Env []string `yaml:"env" json:"env,omitempty"` Cmd []string // filled automatically based on role Args []string `yaml:"extra_args" json:"extraArgs,omitempty"` Ports []string `yaml:"port_mappings" json:"portMappings,omitempty"` Restart bool `yaml:"restart" json:"restart,omitempty"` Labels map[string]string // filled automatically Network string // filled automatically MasterOpts MasterOpts `yaml:"master_opts" json:"masterOpts,omitempty"` WorkerOpts WorkerOpts `yaml:"worker_opts" json:"workerOpts,omitempty"` }
Node describes a k3d node
type StartClusterOpts ¶
StartClusterOpts describe a set of options one can set when (re-)starting a cluster
type StartNodeOpts ¶
StartNodeOpts describes a set of options one can set when (re-)starting a node
type WorkerOpts ¶
type WorkerOpts struct{}
WorkerOpts describes some additional worker role specific opts