cluster

package
v0.11.2 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2021 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const K0sMinVersion = "0.11.0-rc1"

K0sMinVersion is the minimum k0s version supported

Variables

This section is empty.

Functions

func TokenID added in v0.11.0

func TokenID(s string) (string, error)

TokenID returns a token id from a token string that can be used to invalidate the token

Types

type Flags

type Flags []string

Flags is a slice of strings with added functions to ease manipulating lists of command-line flags

func (*Flags) Add

func (f *Flags) Add(s string)

Add adds a flag regardless if it exists already or not

func (*Flags) AddOrReplace

func (f *Flags) AddOrReplace(s string)

AddOrReplace replaces a flag with the same prefix or adds a new one if one does not exist

func (*Flags) AddUnlessExist

func (f *Flags) AddUnlessExist(s string)

AddUnlessExist adds a flag unless one with the same prefix exists

func (*Flags) Delete

func (f *Flags) Delete(s string)

Delete removes a matching flag from the list

func (Flags) Get

func (f Flags) Get(s string) string

Get returns the full flag with the possible value such as "--san=10.0.0.1" or "" when not found

func (Flags) GetValue

func (f Flags) GetValue(s string) string

GetValue returns the value part of a flag such as "10.0.0.1" for a flag like "--san=10.0.0.1"

func (Flags) Include

func (f Flags) Include(s string) bool

Include returns true if a flag with a matching prefix can be found

func (Flags) Index

func (f Flags) Index(s string) int

Index returns an index to a flag with a matching prefix

func (*Flags) Join

func (f *Flags) Join() string

Join creates a string separated by spaces

func (*Flags) Merge

func (f *Flags) Merge(b Flags)

Merge takes the flags from another Flags and adds them to this one unless this already has that flag set

func (*Flags) MergeAdd

func (f *Flags) MergeAdd(b Flags)

MergeAdd takes the flags from another Flags and adds them into this one even if they exist

func (*Flags) MergeOverwrite

func (f *Flags) MergeOverwrite(b Flags)

MergeOverwrite takes the flags from another Flags and adds or replaces them into this one

type Hooks added in v0.9.0

type Hooks map[string]map[string][]string

Hooks define a list of hooks such as hooks["apply"]["before"] = ["ls -al", "rm foo.txt"]

func (Hooks) ForActionAndStage added in v0.9.0

func (h Hooks) ForActionAndStage(action, stage string) []string

ForActionAndStage return hooks for given action and stage

type Host

type Host struct {
	rig.Connection `yaml:",inline"`

	Role             string            `yaml:"role" validate:"oneof=controller worker controller+worker"`
	PrivateInterface string            `yaml:"privateInterface,omitempty"`
	PrivateAddress   string            `yaml:"privateAddress,omitempty" validate:"omitempty,ip"`
	Environment      map[string]string `yaml:"environment,flow,omitempty" default:"{}"`
	UploadBinary     bool              `yaml:"uploadBinary,omitempty"`
	K0sBinaryPath    string            `yaml:"k0sBinaryPath,omitempty"`
	InstallFlags     Flags             `yaml:"installFlags,omitempty"`
	Files            []UploadFile      `yaml:"files,omitempty"`
	OSIDOverride     string            `yaml:"os,omitempty"`
	HostnameOverride string            `yaml:"hostname,omitempty"`
	Hooks            Hooks             `yaml:"hooks,omitempty"`

	UploadBinaryPath string       `yaml:"-"`
	Metadata         HostMetadata `yaml:"-"`
	Configurer       configurer   `yaml:"-"`
}

Host contains all the needed details to work with hosts

func (*Host) Address

func (h *Host) Address() string

Address returns an address for the host

func (*Host) CheckHTTPStatus

func (h *Host) CheckHTTPStatus(url string, expected ...int) error

CheckHTTPStatus will perform a web request to the url and return an error if the http status is not the expected

func (*Host) DrainNode added in v0.5.0

func (h *Host) DrainNode(node *Host) error

DrainNode drains the given node

func (*Host) IsController

func (h *Host) IsController() bool

IsController returns true for controller and controller+worker roles

func (*Host) K0sBackupCommand added in v0.8.5

func (h *Host) K0sBackupCommand(targetDir string) string

K0sBackupCommand returns a full command to be used as run k0s backup

func (*Host) K0sConfigPath

func (h *Host) K0sConfigPath() string

K0sConfigPath returns the config file path from install flags or configurer

func (*Host) K0sInstallCommand

func (h *Host) K0sInstallCommand() string

K0sInstallCommand returns a full command that will install k0s service with necessary flags

func (*Host) K0sJoinTokenPath

func (h *Host) K0sJoinTokenPath() string

K0sJoinTokenPath returns the token file path from install flags or configurer

func (*Host) K0sRestoreCommand added in v0.8.5

func (h *Host) K0sRestoreCommand(backupfile string) string

K0sRestoreCommand returns a full command to restore cluster state from a backup

func (*Host) K0sServiceName

func (h *Host) K0sServiceName() string

K0sServiceName returns correct service name

func (*Host) KubeNodeReady

func (h *Host) KubeNodeReady(node *Host) (bool, error)

KubeNodeReady runs kubectl on the host and returns true if the given node is marked as ready

func (*Host) NeedCurl

func (h *Host) NeedCurl() bool

NeedCurl returns true when the curl package is needed on the host

func (*Host) NeedIPTables added in v0.5.0

func (h *Host) NeedIPTables() bool

NeedIPTables returns true when the iptables package is needed on the host

func (*Host) NeedInetUtils added in v0.10.0

func (h *Host) NeedInetUtils() bool

NeedInetUtils returns true when the inetutils package is needed on the host to run `hostname`.

func (*Host) Protocol

func (h *Host) Protocol() string

Protocol returns host communication protocol

func (*Host) ResolveConfigurer

func (h *Host) ResolveConfigurer() error

ResolveConfigurer assigns a rig-style configurer to the Host (see configurer/)

func (*Host) UncordonNode added in v0.5.0

func (h *Host) UncordonNode(node *Host) error

UncordonNode marks the node schedulable again

func (*Host) UnmarshalYAML

func (h *Host) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML sets in some sane defaults when unmarshaling the data from yaml

func (*Host) UpdateK0sBinary added in v0.5.0

func (h *Host) UpdateK0sBinary(version string) error

UpdateK0sBinary updates the binary on the host either by downloading or uploading, based on the config

func (*Host) WaitHTTPStatus

func (h *Host) WaitHTTPStatus(url string, expected ...int) error

WaitHTTPStatus waits until http status received for a GET from the URL is the expected one

func (*Host) WaitK0sServiceRunning

func (h *Host) WaitK0sServiceRunning() error

WaitK0sServiceRunning blocks until the k0s service is running on the host

func (*Host) WaitK0sServiceStopped added in v0.10.0

func (h *Host) WaitK0sServiceStopped() error

WaitK0sServiceStopped blocks until the k0s service is no longer running on the host

func (*Host) WaitKubeAPIReady

func (h *Host) WaitKubeAPIReady(port int) error

WaitKubeAPIReady blocks until the local kube api responds to /version

func (*Host) WaitKubeNodeReady

func (h *Host) WaitKubeNodeReady(node *Host) error

WaitKubeNodeReady blocks until node becomes ready. TODO should probably use Context

type HostMetadata

type HostMetadata struct {
	K0sBinaryVersion  string
	K0sRunningVersion string
	Arch              string
	IsK0sLeader       bool
	Hostname          string
	Ready             bool
	NeedsUpgrade      bool
}

HostMetadata resolved metadata for host

type Hosts

type Hosts []*Host

Hosts are destnation hosts

func (*Hosts) Controllers

func (hosts *Hosts) Controllers() Hosts

Controllers returns hosts with the role "controller"

func (*Hosts) Filter

func (hosts *Hosts) Filter(filter func(h *Host) bool) Hosts

Filter returns a filtered list of Hosts. The filter function should return true for hosts matching the criteria.

func (*Hosts) Find

func (hosts *Hosts) Find(filter func(h *Host) bool) *Host

Find returns the first matching Host. The finder function should return true for a Host matching the criteria.

func (*Hosts) First

func (hosts *Hosts) First() *Host

First returns the first host

func (*Hosts) Last

func (hosts *Hosts) Last() *Host

Last returns the last host

func (*Hosts) ParallelEach

func (hosts *Hosts) ParallelEach(filter ...func(h *Host) error) error

ParallelEach runs a function (or multiple functions chained) on every Host parallelly. Any errors will be concatenated and returned.

func (*Hosts) WithRole

func (hosts *Hosts) WithRole(s string) Hosts

WithRole returns a ltered list of Hosts that have the given role

func (*Hosts) Workers

func (hosts *Hosts) Workers() Hosts

Workers returns hosts with the role "worker"

type K0s

type K0s struct {
	Version  string      `yaml:"version" validate:"required"`
	Config   dig.Mapping `yaml:"config,omitempty"`
	Metadata K0sMetadata `yaml:"-"`
}

K0s holds configuration for bootstraping a k0s cluster

func (K0s) GenerateToken

func (k K0s) GenerateToken(h *Host, role string, expiry time.Duration) (token string, err error)

GenerateToken runs the k0s token create command

func (K0s) GetClusterID

func (k K0s) GetClusterID(h *Host) (string, error)

GetClusterID uses kubectl to fetch the kube-system namespace uid

func (*K0s) SetDefaults

func (k *K0s) SetDefaults()

SetDefaults (implements defaults Setter interface) defaults the version to latest k0s version

func (*K0s) UnmarshalYAML

func (k *K0s) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML sets in some sane defaults when unmarshaling the data from yaml

type K0sMetadata

type K0sMetadata struct {
	ClusterID        string
	VersionDefaulted bool
}

K0sMetadata contains gathered information about k0s cluster

type Spec

type Spec struct {
	Hosts Hosts `yaml:"hosts" validate:"required,dive,min=1"`
	K0s   K0s   `yaml:"k0s"`
	// contains filtered or unexported fields
}

Spec defines cluster config spec section

func (*Spec) K0sLeader

func (s *Spec) K0sLeader() *Host

K0sLeader returns a controller host that is selected to be a "leader", or an initial node, a node that creates join tokens for other controllers.

func (*Spec) KubeAPIURL added in v0.10.1

func (s *Spec) KubeAPIURL() string

KubeAPIURL returns an url to the cluster's kube api

func (*Spec) UnmarshalYAML

func (s *Spec) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML sets in some sane defaults when unmarshaling the data from yaml

type UploadFile added in v0.6.0

type UploadFile struct {
	Name           string      `yaml:"name,omitempty"`
	Source         string      `yaml:"src" validate:"required"`
	DestinationDir string      `yaml:"dstDir" validate:"required"`
	PermMode       interface{} `yaml:"perm" default:"0755"`
	PermString     string      `yaml:"-"`
}

UploadFile describes a file to be uploaded for the host

func (*UploadFile) Resolve added in v0.6.0

func (u *UploadFile) Resolve() ([]string, error)

func (*UploadFile) UnmarshalYAML added in v0.11.1

func (u *UploadFile) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML sets in some sane defaults when unmarshaling the data from yaml

Jump to

Keyboard shortcuts

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