Documentation ¶
Overview ¶
Package install provides the functionality for installing a Kismatic cluster.
Index ¶
- Variables
- func DetectNodeUpgradeSafety(plan Plan, node Node, kubeClient upgradeKubeInfoClient) []error
- func GenerateKubeconfig(p *Plan, generatedAssetsDir string) error
- func IsGreaterOrEqualThanVersion(this semver.Version, that string) bool
- func IsOlderVersion(that semver.Version) bool
- func SetVersion(v string)
- func ValidateCertificates(p *Plan, pki *LocalPKI) (bool, []error)
- func ValidateNode(node *Node) (bool, []error)
- func ValidatePlan(p *Plan) (bool, []error)
- func ValidatePlanSSHConnections(p *Plan) (bool, []error)
- func ValidateSSHConnection(con *SSHConnection, prefix string) (bool, []error)
- func ValidateStorageVolume(sv StorageVolume) (bool, []error)
- func WritePlanTemplate(p *Plan, w PlanReadWriter) error
- type CertsConfig
- type Cluster
- type ClusterAddressReader
- type ClusterDashboardURLReader
- type ClusterVersion
- type ConfigOptions
- type DiagnosticsExecutor
- type DockerRegistry
- type Executor
- type ExecutorOptions
- type FilePlanner
- type ListableNode
- type LocalPKI
- func (lp *LocalPKI) CertificateAuthorityExists() (bool, error)
- func (lp *LocalPKI) GenerateClusterCA(p *Plan) (*tls.CA, error)
- func (lp *LocalPKI) GenerateClusterCertificates(p *Plan, ca *tls.CA, users []string) error
- func (lp *LocalPKI) GenerateNodeCertificate(plan *Plan, node Node, ca *tls.CA) error
- func (lp *LocalPKI) GetClusterCA() (*tls.CA, error)
- func (lp *LocalPKI) NodeCertificateExists(node Node) (bool, error)
- func (lp *LocalPKI) ValidateClusterCertificates(p *Plan, users []string) (warn []error, err []error)
- type MasterNodeGroup
- type NFS
- type NFSVolume
- type NetworkConfig
- type Node
- type NodeGroup
- type OptionalNodeGroup
- type PKI
- type Plan
- func (p Plan) ConfigureDockerRegistry() bool
- func (p *Plan) DockerRegistryProvided() bool
- func (p *Plan) GetRolesForIP(ip string) []string
- func (p *Plan) GetSSHClient(host string) (ssh.Client, error)
- func (p *Plan) GetSSHConnection(host string) (*SSHConnection, error)
- func (p *Plan) GetUniqueNodes() []Node
- type PlanReadWriter
- type Planner
- type PreFlightExecutor
- type SSHConfig
- type SSHConnection
- type StorageVolume
Constants ¶
This section is empty.
Variables ¶
var AboutKismatic semver.Version
AboutKismatic contains the version information of the currently running binary
Functions ¶
func DetectNodeUpgradeSafety ¶ added in v1.3.0
DetectNodeUpgradeSafety determines whether it's safe to upgrade a specific node listed in the plan file. If any condition that could result in data or availability loss is detected, the upgrade is deemed unsafe, and the conditions are returned as errors.
func GenerateKubeconfig ¶
GenerateKubeconfig generate a kubeconfig file for a specific user
func IsGreaterOrEqualThanVersion ¶ added in v1.3.0
IsGreaterOrEqualThanVersion parses the version from a string and returns true if this version is greater or equal than that version
func IsOlderVersion ¶ added in v1.3.0
IsOlderVersion returns true if the provided version is older than the current Kismatic version
func SetVersion ¶ added in v1.3.0
func SetVersion(v string)
SetVersion parses the given version, and sets it as the global version of the binary
func ValidateCertificates ¶ added in v1.2.0
ValidateCertificates checks if certificates exist and are valid
func ValidateNode ¶
ValidateNode runs validation against the given node.
func ValidatePlan ¶
ValidatePlan runs validation against the installation plan to ensure that the plan contains valid user input. Returns true, nil if the validation is successful. Otherwise, returns false and a collection of validation errors.
func ValidatePlanSSHConnections ¶ added in v1.2.0
ValidatePlanSSHConnections tries to establish SSH connections to all nodes in the cluster
func ValidateSSHConnection ¶ added in v1.1.0
func ValidateSSHConnection(con *SSHConnection, prefix string) (bool, []error)
ValidateSSHConnection tries to establish SSH connection with the details provieded for a single node
func ValidateStorageVolume ¶ added in v1.2.0
func ValidateStorageVolume(sv StorageVolume) (bool, []error)
ValidateStorageVolume validates the storage volume attributes
func WritePlanTemplate ¶
func WritePlanTemplate(p *Plan, w PlanReadWriter) error
WritePlanTemplate writes an installation plan with pre-filled defaults.
Types ¶
type CertsConfig ¶
type CertsConfig struct {
Expiry string
}
CertsConfig describes the cluster's trust and certificate configuration
type Cluster ¶
type Cluster struct { Name string AdminPassword string `yaml:"admin_password"` AllowPackageInstallation bool `yaml:"allow_package_installation"` DisconnectedInstallation bool `yaml:"disconnected_installation"` Networking NetworkConfig Certificates CertsConfig SSH SSHConfig }
Cluster describes a Kubernetes cluster
type ClusterAddressReader ¶ added in v1.2.0
ClusterAddressReader is capable of returning the cluster address
type ClusterDashboardURLReader ¶ added in v1.2.0
ClusterDashboardURLReader is capable of returning the cluster dashboard URL
type ClusterVersion ¶ added in v1.3.0
type ClusterVersion struct { EarliestVersion semver.Version LatestVersion semver.Version IsTransitioning bool Nodes []ListableNode }
ClusterVersion contains version information about the cluster
func ListVersions ¶ added in v1.3.0
func ListVersions(plan *Plan) (ClusterVersion, error)
ListVersions connects to the cluster described in the plan file and gathers version information about it.
type ConfigOptions ¶
type ConfigOptions struct { CA string Server string Cluster string User string Context string Cert string Key string }
ConfigOptions sds
type DiagnosticsExecutor ¶ added in v1.3.0
DiagnosticsExecutor will run diagnostics on the nodes after an install
func NewDiagnosticsExecutor ¶ added in v1.3.0
func NewDiagnosticsExecutor(stdout io.Writer, errOut io.Writer, options ExecutorOptions) (DiagnosticsExecutor, error)
NewDiagnosticsExecutor returns an executor for running preflight
type DockerRegistry ¶
type DockerRegistry struct { SetupInternal bool `yaml:"setup_internal"` Address string Port int CAPath string `yaml:"CA"` }
DockerRegistry details for docker registry, either confgiured by the cli or customer provided
type Executor ¶
type Executor interface { PreFlightExecutor Install(p *Plan) error RunSmokeTest(*Plan) error AddWorker(*Plan, Node) (*Plan, error) RunPlay(string, *Plan) error AddVolume(*Plan, StorageVolume) error UpgradeEtcd2Nodes(plan Plan, nodesToUpgrade []ListableNode) error UpgradeNodes(plan Plan, nodesToUpgrade []ListableNode, onlineUpgrade bool, maxParallelWorkers int) error ValidateControlPlane(plan Plan) error UpgradeDockerRegistry(plan Plan) error UpgradeClusterServices(plan Plan) error MigrateEtcdCluster(plan Plan) error }
The Executor will carry out the installation plan
func NewExecutor ¶
NewExecutor returns an executor for performing installations according to the installation plan.
type ExecutorOptions ¶
type ExecutorOptions struct { // SkipCAGeneration determines whether the Certificate Authority should // be generated. If false, an existing CA file must exist. SkipCAGeneration bool // GeneratedAssetsDirectory is the location where generated assets // are to be stored GeneratedAssetsDirectory string // RestartServices determines whether the cluster services should be // restarted during the installation. RestartServices bool // OutputFormat sets the format of the executor OutputFormat string // Verbose output from the executor Verbose bool // RunsDirectory is where information about installation runs is kept RunsDirectory string // DiagnosticsDirecty is where the doDiagnostics information about the cluster will be dumped DiagnosticsDirecty string // DryRun determines if the executor should actually run the task DryRun bool }
ExecutorOptions are used to configure the executor
type FilePlanner ¶
type FilePlanner struct {
File string
}
FilePlanner is a file-based installation planner
func (*FilePlanner) GetClusterAddress ¶ added in v1.2.0
func (fp *FilePlanner) GetClusterAddress(p *Plan) (string, error)
GetClusterAddress returns the LoadBalancedFQDN IP of the cluster
func (*FilePlanner) GetDashboardURL ¶ added in v1.2.0
func (fp *FilePlanner) GetDashboardURL(p *Plan) (string, error)
GetDashboardURL returns the dashboard url, reading the plan file LoadBalancedFQDN
func (*FilePlanner) PlanExists ¶
func (fp *FilePlanner) PlanExists() bool
PlanExists return true if the plan exists on the file system
func (*FilePlanner) Read ¶
func (fp *FilePlanner) Read() (*Plan, error)
Read the plan from the file system
func (*FilePlanner) Write ¶
func (fp *FilePlanner) Write(p *Plan) error
Write the plan to the file system
type ListableNode ¶ added in v1.3.0
ListableNode contains version and role information about a given node
func NodesWithRoles ¶ added in v1.3.0
func NodesWithRoles(nodes []ListableNode, roles ...string) []ListableNode
NodesWithRoles returns a filtered list of ListableNode slice based on the node's roles
func (*ListableNode) HasRoles ¶ added in v1.3.0
func (n *ListableNode) HasRoles(roles ...string) bool
HasRoles returns true if contains any of the roles
type LocalPKI ¶
type LocalPKI struct { CACsr string CAConfigFile string CASigningProfile string GeneratedCertsDirectory string Log io.Writer }
LocalPKI is a file-based PKI
func (*LocalPKI) CertificateAuthorityExists ¶
CertificateAuthorityExists returns true if the CA for the cluster exists
func (*LocalPKI) GenerateClusterCA ¶
GenerateClusterCA creates a Certificate Authority for the cluster
func (*LocalPKI) GenerateClusterCertificates ¶
GenerateClusterCertificates creates a Certificates for all nodes on the cluster
func (*LocalPKI) GenerateNodeCertificate ¶
GenerateNodeCertificate creates a private key and certificate for the given node
func (*LocalPKI) GetClusterCA ¶
GetClusterCA returns the cluster CA
func (*LocalPKI) NodeCertificateExists ¶
NodeCertificateExists returns true if the node's key and certificate exist
type MasterNodeGroup ¶
type MasterNodeGroup struct { ExpectedCount int `yaml:"expected_count"` LoadBalancedFQDN string `yaml:"load_balanced_fqdn"` LoadBalancedShortName string `yaml:"load_balanced_short_name"` Nodes []Node }
MasterNodeGroup is the collection of master nodes
type NetworkConfig ¶
type NetworkConfig struct { Type string PodCIDRBlock string `yaml:"pod_cidr_block"` ServiceCIDRBlock string `yaml:"service_cidr_block"` PolicyEnabled bool `yaml:"policy_enabled"` UpdateHostsFiles bool `yaml:"update_hosts_files"` }
NetworkConfig describes the cluster's networking configuration
type OptionalNodeGroup ¶ added in v1.1.0
type OptionalNodeGroup NodeGroup
An OptionalNodeGroup is a collection of nodes that can be empty
type PKI ¶
type PKI interface { CertificateAuthorityExists() (bool, error) NodeCertificateExists(node Node) (bool, error) GenerateNodeCertificate(plan *Plan, node Node, ca *tls.CA) error GetClusterCA() (*tls.CA, error) GenerateClusterCA(p *Plan) (*tls.CA, error) GenerateClusterCertificates(p *Plan, ca *tls.CA, users []string) error }
The PKI provides a way for generating certificates for the cluster described by the Plan
type Plan ¶
type Plan struct { Cluster Cluster DockerRegistry DockerRegistry `yaml:"docker_registry"` Etcd NodeGroup Master MasterNodeGroup Worker NodeGroup Ingress OptionalNodeGroup Storage OptionalNodeGroup NFS NFS }
Plan is the installation plan that the user intends to execute
func (Plan) ConfigureDockerRegistry ¶ added in v1.3.0
ConfigureDockerRegistry returns true when confgiuring an external or on cluster registry is required
func (*Plan) DockerRegistryProvided ¶ added in v1.2.1
DockerRegistryProvided returns true if a local registry will be available after install
func (*Plan) GetRolesForIP ¶ added in v1.3.0
func (*Plan) GetSSHClient ¶ added in v1.2.1
GetSSHClient is a convience method that calls GetSSHConnection and returns an SSH client with the result
func (*Plan) GetSSHConnection ¶ added in v1.2.0
func (p *Plan) GetSSHConnection(host string) (*SSHConnection, error)
GetSSHConnection returns the SSHConnection struct containing the node and SSHConfig details
func (*Plan) GetUniqueNodes ¶ added in v1.3.0
GetUniqueNodes returns a list of the unique nodes that are listed in the plan file. That is, if a node has multiple roles, it will only appear once in the list.
type PlanReadWriter ¶
PlanReadWriter is capable of reading/writing a Plan
type Planner ¶
type Planner interface { PlanReadWriter ClusterAddressReader ClusterDashboardURLReader PlanExists() bool }
Planner is used to plan the installation
type PreFlightExecutor ¶
type PreFlightExecutor interface { RunPreFlightCheck(*Plan) error RunNewWorkerPreFlightCheck(Plan, Node) error RunUpgradePreFlightCheck(*Plan, ListableNode) error }
The PreFlightExecutor will run pre-flight checks against the environment defined in the plan file
func NewPreFlightExecutor ¶
func NewPreFlightExecutor(stdout io.Writer, errOut io.Writer, options ExecutorOptions) (PreFlightExecutor, error)
NewPreFlightExecutor returns an executor for running preflight
type SSHConnection ¶ added in v1.1.0
type StorageVolume ¶ added in v1.2.0
type StorageVolume struct { // Name of the storage volume Name string // SizeGB is the size of the volume, in gigabytes SizeGB int // ReplicateCount is the number of replicas ReplicateCount int // DistributionCount is the degree to which data will be distributed across the cluster DistributionCount int // StorageClass is the annotation that will be used when creating the persistent-volume in kubernetes StorageClass string // AllowAddresses is a list of address wildcards that have access to the volume AllowAddresses []string }
StorageVolume managed by Kismatic
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package explain contains explainers that are used for processing an incoming stream, and explaining the events that are found in it.
|
Package explain contains explainers that are used for processing an incoming stream, and explaining the events that are found in it. |