Documentation
¶
Index ¶
- Constants
- Variables
- func ControlPlaneLabelsForCluster(clusterName string) map[string]string
- func PickFewest(failureDomains clusterv1.FailureDomains, machines FilterableMachineCollection) *string
- func PickMost(c *ControlPlane, machines FilterableMachineCollection) *string
- type ClusterStatus
- type ControlPlane
- func (c *ControlPlane) AsOwnerReference() *metav1.OwnerReference
- func (c *ControlPlane) EtcdImageData() (string, string)
- func (c *ControlPlane) FailureDomainWithMostMachines(machines FilterableMachineCollection) *string
- func (c *ControlPlane) FailureDomains() clusterv1.FailureDomains
- func (c *ControlPlane) GenerateKThreesConfig(spec *bootstrapv1.KThreesConfigSpec) *bootstrapv1.KThreesConfig
- func (c *ControlPlane) HasDeletingMachine() bool
- func (c *ControlPlane) HasUnhealthyMachine() bool
- func (c *ControlPlane) HealthyMachines() FilterableMachineCollection
- func (c *ControlPlane) InfrastructureTemplate() *corev1.ObjectReference
- func (c *ControlPlane) InitialControlPlaneConfig() *bootstrapv1.KThreesConfigSpec
- func (c *ControlPlane) IsEtcdManaged() bool
- func (c *ControlPlane) JoinControlPlaneConfig() *bootstrapv1.KThreesConfigSpec
- func (c *ControlPlane) Logger() logr.Logger
- func (c *ControlPlane) MachineInFailureDomainWithMostMachines(machines FilterableMachineCollection) (*clusterv1.Machine, error)
- func (c *ControlPlane) MachineWithDeleteAnnotation(machines FilterableMachineCollection) FilterableMachineCollection
- func (c *ControlPlane) MachinesNeedingRollout() FilterableMachineCollection
- func (c *ControlPlane) NeedsReplacementNode() bool
- func (c *ControlPlane) NewMachine(infraRef, bootstrapRef *corev1.ObjectReference, failureDomain *string) *clusterv1.Machine
- func (c *ControlPlane) NextFailureDomainForScaleUp() *string
- func (c *ControlPlane) PatchMachines(ctx context.Context) error
- func (c *ControlPlane) UnhealthyMachines() FilterableMachineCollection
- func (c *ControlPlane) UpToDateMachines() FilterableMachineCollection
- func (c *ControlPlane) Version() *string
- type CoreDNSMigrator
- type FilterableMachineCollection
- func (s FilterableMachineCollection) AnyFilter(filters ...machinefilters.Func) FilterableMachineCollection
- func (s FilterableMachineCollection) ConditionGetters() []conditions.Getter
- func (s FilterableMachineCollection) DeepCopy() FilterableMachineCollection
- func (s FilterableMachineCollection) Difference(machines FilterableMachineCollection) FilterableMachineCollection
- func (s FilterableMachineCollection) Filter(filters ...machinefilters.Func) FilterableMachineCollection
- func (s FilterableMachineCollection) Insert(machines ...*clusterv1.Machine)
- func (s FilterableMachineCollection) Len() int
- func (s FilterableMachineCollection) Names() []string
- func (s FilterableMachineCollection) Newest() *clusterv1.Machine
- func (s FilterableMachineCollection) Oldest() *clusterv1.Machine
- func (s FilterableMachineCollection) SortedByCreationTimestamp() []*clusterv1.Machine
- func (s FilterableMachineCollection) UnsortedList() []*clusterv1.Machine
- type K3sAgentConfig
- type K3sServerConfig
- type Management
- func (m *Management) Get(ctx context.Context, key ctrlclient.ObjectKey, obj client.Object) error
- func (m *Management) GetMachinesForCluster(ctx context.Context, cluster client.ObjectKey, filters ...machinefilters.Func) (FilterableMachineCollection, error)
- func (m *Management) GetWorkloadCluster(ctx context.Context, clusterKey client.ObjectKey) (WorkloadCluster, error)
- func (m *Management) List(ctx context.Context, list client.ObjectList, opts ...ctrlclient.ListOption) error
- type ManagementCluster
- type RemoteClusterConnectionError
- type Workload
- func (w *Workload) ClusterStatus(ctx context.Context) (ClusterStatus, error)
- func (w *Workload) UpdateAgentConditions(ctx context.Context, controlPlane *ControlPlane)
- func (w *Workload) UpdateCoreDNS(ctx context.Context, kcp *controlplanev1.KThreesControlPlane) error
- func (w *Workload) UpdateEtcdConditions(ctx context.Context, controlPlane *ControlPlane)
- type WorkloadCluster
Constants ¶
const DefaultK3sConfigLocation = "/etc/rancher/k3s/config.yaml"
const (
// KThreesControlPlaneControllerName defines the controller used when creating clients.
KThreesControlPlaneControllerName = "kthrees-controlplane-controller"
)
Variables ¶
var (
ErrControlPlaneMinNodes = errors.New("cluster has fewer than 2 control plane nodes; removing an etcd member is not supported")
)
var Log = klogr.New()
Log is the global logger for the internal package.
Functions ¶
func ControlPlaneLabelsForCluster ¶
ControlPlaneLabelsForCluster returns a set of labels to add to a control plane machine for this specific cluster.
func PickFewest ¶
func PickFewest(failureDomains clusterv1.FailureDomains, machines FilterableMachineCollection) *string
PickFewest returns the failure domain with the fewest number of machines.
func PickMost ¶
func PickMost(c *ControlPlane, machines FilterableMachineCollection) *string
PickMost returns a failure domain that is in machines and has most control-plane machines on.
Types ¶
type ClusterStatus ¶
type ClusterStatus struct { // Nodes are a total count of nodes Nodes int32 // ReadyNodes are the count of nodes that are reporting ready ReadyNodes int32 }
ClusterStatus holds stats information about the cluster.
type ControlPlane ¶
type ControlPlane struct { KCP *controlplanev1.KThreesControlPlane Cluster *clusterv1.Cluster Machines FilterableMachineCollection // contains filtered or unexported fields }
ControlPlane holds business logic around control planes. It should never need to connect to a service, that responsibility lies outside of this struct. Going forward we should be trying to add more logic to here and reduce the amount of logic in the reconciler.
func NewControlPlane ¶
func NewControlPlane(ctx context.Context, client client.Client, cluster *clusterv1.Cluster, kcp *controlplanev1.KThreesControlPlane, ownedMachines FilterableMachineCollection) (*ControlPlane, error)
NewControlPlane returns an instantiated ControlPlane.
func (*ControlPlane) AsOwnerReference ¶
func (c *ControlPlane) AsOwnerReference() *metav1.OwnerReference
AsOwnerReference returns an owner reference to the KThreesControlPlane.
func (*ControlPlane) EtcdImageData ¶
func (c *ControlPlane) EtcdImageData() (string, string)
EtcdImageData returns the etcd image data embedded in the ClusterConfiguration or empty strings if none are defined.
func (*ControlPlane) FailureDomainWithMostMachines ¶
func (c *ControlPlane) FailureDomainWithMostMachines(machines FilterableMachineCollection) *string
FailureDomainWithMostMachines returns a fd which exists both in machines and control-plane machines and has the most control-plane machines on it.
func (*ControlPlane) FailureDomains ¶
func (c *ControlPlane) FailureDomains() clusterv1.FailureDomains
FailureDomains returns a slice of failure domain objects synced from the infrastructure provider into Cluster.Status.
func (*ControlPlane) GenerateKThreesConfig ¶
func (c *ControlPlane) GenerateKThreesConfig(spec *bootstrapv1.KThreesConfigSpec) *bootstrapv1.KThreesConfig
GenerateKThreesConfig generates a new KThreesConfig config for creating new control plane nodes.
func (*ControlPlane) HasDeletingMachine ¶
func (c *ControlPlane) HasDeletingMachine() bool
HasDeletingMachine returns true if any machine in the control plane is in the process of being deleted.
func (*ControlPlane) HasUnhealthyMachine ¶
func (c *ControlPlane) HasUnhealthyMachine() bool
HasUnhealthyMachine returns true if any machine in the control plane is marked as unhealthy by MHC.
func (*ControlPlane) HealthyMachines ¶
func (c *ControlPlane) HealthyMachines() FilterableMachineCollection
HealthyMachines returns the list of control plane machines not marked as unhealthy by MHC.
func (*ControlPlane) InfrastructureTemplate ¶
func (c *ControlPlane) InfrastructureTemplate() *corev1.ObjectReference
InfrastructureTemplate returns the KThreesControlPlane's infrastructure template.
func (*ControlPlane) InitialControlPlaneConfig ¶
func (c *ControlPlane) InitialControlPlaneConfig() *bootstrapv1.KThreesConfigSpec
InitialControlPlaneConfig returns a new KThreesConfigSpec that is to be used for an initializing control plane.
func (*ControlPlane) IsEtcdManaged ¶
func (c *ControlPlane) IsEtcdManaged() bool
IsEtcdManaged returns true if the control plane relies on a managed etcd.
func (*ControlPlane) JoinControlPlaneConfig ¶
func (c *ControlPlane) JoinControlPlaneConfig() *bootstrapv1.KThreesConfigSpec
JoinControlPlaneConfig returns a new KThreesConfigSpec that is to be used for joining control planes.
func (*ControlPlane) Logger ¶
func (c *ControlPlane) Logger() logr.Logger
Logger returns a logger with useful context.
func (*ControlPlane) MachineInFailureDomainWithMostMachines ¶
func (c *ControlPlane) MachineInFailureDomainWithMostMachines(machines FilterableMachineCollection) (*clusterv1.Machine, error)
MachineInFailureDomainWithMostMachines returns the first matching failure domain with machines that has the most control-plane machines on it.
func (*ControlPlane) MachineWithDeleteAnnotation ¶
func (c *ControlPlane) MachineWithDeleteAnnotation(machines FilterableMachineCollection) FilterableMachineCollection
MachineWithDeleteAnnotation returns a machine that has been annotated with DeleteMachineAnnotation key.
func (*ControlPlane) MachinesNeedingRollout ¶
func (c *ControlPlane) MachinesNeedingRollout() FilterableMachineCollection
MachinesNeedingRollout return a list of machines that need to be rolled out.
func (*ControlPlane) NeedsReplacementNode ¶
func (c *ControlPlane) NeedsReplacementNode() bool
NeedsReplacementNode determines if the control plane needs to create a replacement node during upgrade.
func (*ControlPlane) NewMachine ¶
func (c *ControlPlane) NewMachine(infraRef, bootstrapRef *corev1.ObjectReference, failureDomain *string) *clusterv1.Machine
NewMachine returns a machine configured to be a part of the control plane.
func (*ControlPlane) NextFailureDomainForScaleUp ¶
func (c *ControlPlane) NextFailureDomainForScaleUp() *string
NextFailureDomainForScaleUp returns the failure domain with the fewest number of up-to-date machines.
func (*ControlPlane) PatchMachines ¶
func (c *ControlPlane) PatchMachines(ctx context.Context) error
func (*ControlPlane) UnhealthyMachines ¶
func (c *ControlPlane) UnhealthyMachines() FilterableMachineCollection
UnhealthyMachines returns the list of control plane machines marked as unhealthy by MHC.
func (*ControlPlane) UpToDateMachines ¶
func (c *ControlPlane) UpToDateMachines() FilterableMachineCollection
UpToDateMachines returns the machines that are up to date with the control plane's configuration and therefore do not require rollout.
func (*ControlPlane) Version ¶
func (c *ControlPlane) Version() *string
Version returns the KThreesControlPlane's version.
type CoreDNSMigrator ¶
type CoreDNSMigrator struct{}
type FilterableMachineCollection ¶
FilterableMachineCollection is a set of Machines
func NewFilterableMachineCollection ¶
func NewFilterableMachineCollection(machines ...*clusterv1.Machine) FilterableMachineCollection
NewFilterableMachineCollection creates a FilterableMachineCollection from a list of values.
func NewFilterableMachineCollectionFromMachineList ¶
func NewFilterableMachineCollectionFromMachineList(machineList *clusterv1.MachineList) FilterableMachineCollection
NewFilterableMachineCollectionFromMachineList creates a FilterableMachineCollection from the given MachineList
func (FilterableMachineCollection) AnyFilter ¶
func (s FilterableMachineCollection) AnyFilter(filters ...machinefilters.Func) FilterableMachineCollection
AnyFilter returns a FilterableMachineCollection containing only the Machines that match any of the given MachineFilters
func (FilterableMachineCollection) ConditionGetters ¶
func (s FilterableMachineCollection) ConditionGetters() []conditions.Getter
ConditionGetters returns the slice with machines converted into conditions.Getter.
func (FilterableMachineCollection) DeepCopy ¶
func (s FilterableMachineCollection) DeepCopy() FilterableMachineCollection
DeepCopy returns a deep copy
func (FilterableMachineCollection) Difference ¶
func (s FilterableMachineCollection) Difference(machines FilterableMachineCollection) FilterableMachineCollection
Difference returns a copy without machines that are in the given collection
func (FilterableMachineCollection) Filter ¶
func (s FilterableMachineCollection) Filter(filters ...machinefilters.Func) FilterableMachineCollection
Filter returns a FilterableMachineCollection containing only the Machines that match all of the given MachineFilters
func (FilterableMachineCollection) Insert ¶
func (s FilterableMachineCollection) Insert(machines ...*clusterv1.Machine)
Insert adds items to the set.
func (FilterableMachineCollection) Len ¶
func (s FilterableMachineCollection) Len() int
Len returns the size of the set.
func (FilterableMachineCollection) Names ¶
func (s FilterableMachineCollection) Names() []string
Names returns a slice of the names of each machine in the collection. Useful for logging and test assertions.
func (FilterableMachineCollection) Newest ¶
func (s FilterableMachineCollection) Newest() *clusterv1.Machine
Newest returns the Machine with the most recent CreationTimestamp
func (FilterableMachineCollection) Oldest ¶
func (s FilterableMachineCollection) Oldest() *clusterv1.Machine
Oldest returns the Machine with the oldest CreationTimestamp
func (FilterableMachineCollection) SortedByCreationTimestamp ¶
func (s FilterableMachineCollection) SortedByCreationTimestamp() []*clusterv1.Machine
SortedByCreationTimestamp returns the machines sorted by creation timestamp
func (FilterableMachineCollection) UnsortedList ¶
func (s FilterableMachineCollection) UnsortedList() []*clusterv1.Machine
UnsortedList returns the slice with contents in random order.
type K3sAgentConfig ¶
type K3sAgentConfig struct { Token string `json:"token,omitempty"` Server string `json:"server,omitempty"` KubeletArgs []string `json:"kubelet-arg,omitempty"` NodeLabels []string `json:"node-labels,omitempty"` NodeTaints []string `json:"node-taints,omitempty"` PrivateRegistry string `json:"private-registry,omitempty"` KubeProxyArgs []string `json:"kube-proxy-arg,omitempty"` NodeName string `json:"node-name,omitempty"` }
func GenerateWorkerConfig ¶
func GenerateWorkerConfig(serverUrl string, token string, agentConfig bootstrapv1.KThreesAgentConfig) K3sAgentConfig
type K3sServerConfig ¶
type K3sServerConfig struct { DisableCloudController bool `json:"disable-cloud-controller,omitempty"` KubeAPIServerArgs []string `json:"kube-apiserver-arg,omitempty"` KubeControllerManagerArgs []string `json:"kube-controller-manager-arg,omitempty"` TLSSan []string `json:"tls-san,omitempty"` BindAddress string `json:"bind-address,omitempty"` HttpsListenPort string `json:"https-listen-port,omitempty"` AdvertiseAddress string `json:"advertise-address,omitempty"` AdvertisePort string `json:"advertise-port,omitempty"` ClusterCidr string `json:"cluster-cidr,omitempty"` ServiceCidr string `json:"service-cidr,omitempty"` ClusterDNS string `json:"cluster-dns,omitempty"` ClusterDomain string `json:"cluster-domain,omitempty"` DisableComponents []string `json:"disable,omitempty"` ClusterInit bool `json:"cluster-init,omitempty"` K3sAgentConfig `json:",inline"` }
func GenerateInitControlPlaneConfig ¶
func GenerateInitControlPlaneConfig(controlPlaneEndpoint string, token string, serverConfig bootstrapv1.KThreesServerConfig, agentConfig bootstrapv1.KThreesAgentConfig) K3sServerConfig
func GenerateJoinControlPlaneConfig ¶
func GenerateJoinControlPlaneConfig(serverUrl string, token string, controlplaneendpoint string, serverConfig bootstrapv1.KThreesServerConfig, agentConfig bootstrapv1.KThreesAgentConfig) K3sServerConfig
type Management ¶
type Management struct {
Client ctrlclient.Reader
}
Management holds operations on the management cluster.
func (*Management) Get ¶
func (m *Management) Get(ctx context.Context, key ctrlclient.ObjectKey, obj client.Object) error
Get implements ctrlclient.Reader
func (*Management) GetMachinesForCluster ¶
func (m *Management) GetMachinesForCluster(ctx context.Context, cluster client.ObjectKey, filters ...machinefilters.Func) (FilterableMachineCollection, error)
GetMachinesForCluster returns a list of machines that can be filtered or not. If no filter is supplied then all machines associated with the target cluster are returned.
func (*Management) GetWorkloadCluster ¶
func (m *Management) GetWorkloadCluster(ctx context.Context, clusterKey client.ObjectKey) (WorkloadCluster, error)
GetWorkloadCluster builds a cluster object. The cluster comes with an etcd client generator to connect to any etcd pod living on a managed machine.
func (*Management) List ¶
func (m *Management) List(ctx context.Context, list client.ObjectList, opts ...ctrlclient.ListOption) error
List implements ctrlclient.Reader
type ManagementCluster ¶
type ManagementCluster interface { ctrlclient.Reader GetMachinesForCluster(ctx context.Context, cluster client.ObjectKey, filters ...machinefilters.Func) (FilterableMachineCollection, error) GetWorkloadCluster(ctx context.Context, clusterKey client.ObjectKey) (WorkloadCluster, error) }
ManagementCluster defines all behaviors necessary for something to function as a management cluster.
type RemoteClusterConnectionError ¶
RemoteClusterConnectionError represents a failure to connect to a remote cluster
func (*RemoteClusterConnectionError) Error ¶
func (e *RemoteClusterConnectionError) Error() string
func (*RemoteClusterConnectionError) Unwrap ¶
func (e *RemoteClusterConnectionError) Unwrap() error
type Workload ¶
type Workload struct { Client ctrlclient.Client CoreDNSMigrator coreDNSMigrator }
Workload defines operations on workload clusters.
func (*Workload) ClusterStatus ¶
func (w *Workload) ClusterStatus(ctx context.Context) (ClusterStatus, error)
ClusterStatus returns the status of the cluster.
func (*Workload) UpdateAgentConditions ¶
func (w *Workload) UpdateAgentConditions(ctx context.Context, controlPlane *ControlPlane)
UpdateAgentConditions is responsible for updating machine conditions reflecting the status of all the control plane components. This operation is best effort, in the sense that in case of problems in retrieving the pod status, it sets the condition to Unknown state without returning any error.
func (*Workload) UpdateCoreDNS ¶
func (w *Workload) UpdateCoreDNS(ctx context.Context, kcp *controlplanev1.KThreesControlPlane) error
UpdateCoreDNS updates the coredns corefile and coredns deployment.
func (*Workload) UpdateEtcdConditions ¶
func (w *Workload) UpdateEtcdConditions(ctx context.Context, controlPlane *ControlPlane)
UpdateEtcdConditions is responsible for updating machine conditions reflecting the status of all the etcd members. This operation is best effort, in the sense that in case of problems in retrieving member status, it sets the condition to Unknown state without returning any error.
type WorkloadCluster ¶
type WorkloadCluster interface { // Basic health and status checks. ClusterStatus(ctx context.Context) (ClusterStatus, error) UpdateAgentConditions(ctx context.Context, controlPlane *ControlPlane) UpdateEtcdConditions(ctx context.Context, controlPlane *ControlPlane) }
WorkloadCluster defines all behaviors necessary to upgrade kubernetes on a workload cluster
TODO: Add a detailed description to each of these method definitions.