install

package
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2017 License: Apache-2.0 Imports: 29 Imported by: 2

Documentation

Overview

Package install provides the functionality for installing a Kismatic cluster.

Index

Constants

This section is empty.

Variables

View Source
var AboutKismatic semver.Version

AboutKismatic contains the version information of the currently running binary

Functions

func DetectNodeUpgradeSafety added in v1.3.0

func DetectNodeUpgradeSafety(plan Plan, node Node, kubeClient upgradeKubeInfoClient) []error

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

func GenerateKubeconfig(p *Plan, generatedAssetsDir string) error

GenerateKubeconfig generate a kubeconfig file for a specific user

func IsGreaterOrEqualThanVersion added in v1.3.0

func IsGreaterOrEqualThanVersion(this semver.Version, that string) bool

IsGreaterOrEqualThanVersion parses the version from a string and returns true if this version is greater or equal than that version

func IsLessThanVersion added in v1.3.1

func IsLessThanVersion(this semver.Version, that string) bool

IsLessThanVersion parses the version from a string and returns true if this version is less than that version

func IsOlderVersion added in v1.3.0

func IsOlderVersion(that semver.Version) bool

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

func ValidateCertificates(p *Plan, pki *LocalPKI) (bool, []error)

ValidateCertificates checks if certificates exist and are valid

func ValidateNode

func ValidateNode(node *Node) (bool, []error)

ValidateNode runs validation against the given node.

func ValidatePlan

func ValidatePlan(p *Plan) (bool, []error)

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

func ValidatePlanSSHConnections(p *Plan) (bool, []error)

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"`
	PackageRepoURLs          string `yaml:"package_repository_urls"`
	DisconnectedInstallation bool   `yaml:"disconnected_installation"`
	Networking               NetworkConfig
	Certificates             CertsConfig
	SSH                      SSHConfig
}

Cluster describes a Kubernetes cluster

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

type DiagnosticsExecutor interface {
	DiagnoseNodes(plan Plan) error
}

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 Docker added in v1.3.1

type Docker struct {
	// Storage includes the storage-specific configuration for docker
	Storage DockerStorage
}

Docker includes the configuration for the docker installation owned by KET.

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 DockerStorage added in v1.3.1

type DockerStorage struct {
	// DirectLVM is the configuration required for setting up device mapper in direct-lvm mode
	DirectLVM DockerStorageDirectLVM `yaml:"direct_lvm"`
}

DockerStorage includes the storage-specific configuration for docker.

type DockerStorageDirectLVM added in v1.3.1

type DockerStorageDirectLVM struct {
	// Determines whether direct-lvm mode is enabled
	Enabled bool
	// BlockDevice is the path to the block device that will be used. E.g. /dev/sdb
	BlockDevice string `yaml:"block_device"`
	// EnableDeferredDeletion determines whether deferred deletion should be enabled
	EnableDeferredDeletion bool `yaml:"enable_deferred_deletion"`
}

DockerStorageDirectLVM includes the configuration required for setting up device mapper in direct-lvm mode

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

func NewExecutor(stdout io.Writer, errOut io.Writer, options ExecutorOptions) (Executor, error)

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) 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

type ListableNode struct {
	Node    Node
	Roles   []string
	Version semver.Version
}

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

func (lp *LocalPKI) CertificateAuthorityExists() (bool, error)

CertificateAuthorityExists returns true if the CA for the cluster exists

func (*LocalPKI) GenerateClusterCA

func (lp *LocalPKI) GenerateClusterCA(p *Plan) (*tls.CA, error)

GenerateClusterCA creates a Certificate Authority for the cluster

func (*LocalPKI) GenerateClusterCertificates

func (lp *LocalPKI) GenerateClusterCertificates(p *Plan, ca *tls.CA, users []string) error

GenerateClusterCertificates creates a Certificates for all nodes on the cluster

func (*LocalPKI) GenerateNodeCertificate

func (lp *LocalPKI) GenerateNodeCertificate(plan *Plan, node Node, ca *tls.CA) error

GenerateNodeCertificate creates a private key and certificate for the given node

func (*LocalPKI) GetClusterCA

func (lp *LocalPKI) GetClusterCA() (*tls.CA, error)

GetClusterCA returns the cluster CA

func (*LocalPKI) NodeCertificateExists

func (lp *LocalPKI) NodeCertificateExists(node Node) (bool, error)

NodeCertificateExists returns true if the node's key and certificate exist

func (*LocalPKI) ValidateClusterCertificates added in v1.2.0

func (lp *LocalPKI) ValidateClusterCertificates(p *Plan, users []string) (warn []error, err []error)

ValidateClusterCertificates validates all certificates in the cluster

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 NFS added in v1.2.0

type NFS struct {
	Volumes []NFSVolume `yaml:"nfs_volume"`
}

type NFSVolume added in v1.2.0

type NFSVolume struct {
	Host string `yaml:"nfs_host"`
	Path string `yaml:"mount_path"`
}

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 Node

type Node struct {
	Host       string
	IP         string
	InternalIP string
}

A Node is a compute unit, virtual or physical, that is part of the cluster

type NodeGroup

type NodeGroup struct {
	ExpectedCount int `yaml:"expected_count"`
	Nodes         []Node
}

A NodeGroup is a collection of nodes

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
	Docker         Docker
	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

func (p Plan) ConfigureDockerRegistry() bool

ConfigureDockerRegistry returns true when confgiuring an external or on cluster registry is required

func (*Plan) DockerRegistryProvided added in v1.2.1

func (p *Plan) DockerRegistryProvided() bool

DockerRegistryProvided returns true if a local registry will be available after install

func (*Plan) GetRolesForIP added in v1.3.0

func (p *Plan) GetRolesForIP(ip string) []string

func (*Plan) GetSSHClient added in v1.2.1

func (p *Plan) GetSSHClient(host string) (ssh.Client, error)

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

func (p *Plan) GetUniqueNodes() []Node

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

type PlanReadWriter interface {
	Read() (*Plan, error)
	Write(*Plan) error
}

PlanReadWriter is capable of reading/writing a Plan

type Planner

type Planner interface {
	PlanReadWriter
	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 SSHConfig

type SSHConfig struct {
	User string
	Key  string `yaml:"ssh_key"`
	Port int    `yaml:"ssh_port"`
}

SSHConfig describes the cluster's SSH configuration for accessing nodes

type SSHConnection added in v1.1.0

type SSHConnection struct {
	SSHConfig *SSHConfig
	Node      *Node
}

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

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.

Jump to

Keyboard shortcuts

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