util

package
v1.10.0 Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2022 License: Apache-2.0 Imports: 51 Imported by: 4

Documentation

Index

Constants

View Source
const (
	KubeEdgeDownloadURL  = "https://github.com/kubeedge/kubeedge/releases/download"
	EdgeServiceFile      = "edgecore.service"
	CloudServiceFile     = "cloudcore.service"
	ServiceFileURLFormat = "https://raw.githubusercontent.com/kubeedge/kubeedge/release-%s/build/tools/%s"
	KubeEdgePath         = "/etc/kubeedge/"
	KubeEdgeTmpPath      = "/tmp/kubeedge"
	KubeEdgeUsrBinPath   = "/usr/local/bin"
	KubeEdgeBinaryName   = "edgecore"

	KubeCloudBinaryName = "cloudcore"

	KubeEdgeConfigDir        = KubeEdgePath + "config/"
	KubeEdgeCloudCoreNewYaml = KubeEdgeConfigDir + "cloudcore.yaml"
	KubeEdgeEdgeCoreNewYaml  = KubeEdgeConfigDir + "edgecore.yaml"

	KubeEdgeLogPath = "/var/log/kubeedge/"
	KubeEdgeCrdPath = KubeEdgePath + "crds"

	KubeEdgeSocketPath = "/var/lib/kubeedge/"

	EdgeRootDir = "/var/lib/edged"

	SystemdBootPath = "/run/systemd/system"

	KubeEdgeCRDDownloadURL = "https://raw.githubusercontent.com/kubeedge/kubeedge/release-%s/build/crds"

	RetryTimes = 5

	OSArchAMD64 string = "amd64"
	OSArchARM64 string = "arm64"
	OSArchARM32 string = "arm"

	APT    string = "apt"
	YUM    string = "yum"
	PACMAN string = "pacman"
)

Constants used by installers

View Source
const (
	CloudCoreHelmComponent = "cloudcore"
	CloudCoreSubDir        = "cloudcore"

	DefaultBaseHelmDir   = ""
	DefaultAddonsHelmDir = "addons"
	DefaultProfilesDir   = "profiles"
	// DefaultProfileFilename is the name of the default profile yaml file.
	DefaultProfileFilename = "version.yaml"
	DefaultHelmValuesPath  = "values.yaml"

	DefaultHelmTimeout = time.Duration(60 * time.Second)

	DefaultHelmInstall  = true
	DefaultHelmWait     = true
	DefaultHelmCreateNs = true
)
View Source
const (
	// YAMLSeparator is a separator for multi-document YAML files.
	YAMLSeparator = "\n---\n"

	// DefaultProfileString is the name of the default profile.
	DefaultProfileString = "version"

	// NotesFileNameSuffix is the file name suffix for helm notes.
	// see https://helm.sh/docs/chart_template_guide/notes_files/
	NotesFileNameSuffix = ".txt"

	// Chart Release Name
	ReleaseName = "kubeedge"
)

Variables

View Source
var (
	ErrListProfiles = errors.New("can not list profiles")
)

Functions

func AddToolVals

func AddToolVals(f *pflag.Flag, flagData map[string]types.FlagData)

AddToolVals gets the value and default values of each flags and collects them in temporary cache

func BuildConfig added in v1.2.1

func BuildConfig(kubeConfig, master string) (conf *rest.Config, err error)

BuildConfig builds config from flags

func CheckIfAvailable

func CheckIfAvailable(val, defval string) string

CheckIfAvailable checks is val of a flag is empty then return the default value

func Compress added in v1.5.0

func Compress(tarName string, paths []string) (err error)

Compress compresses folders or files

func ExecShellFilter added in v1.5.0

func ExecShellFilter(c string) (string, error)

ExecShellFilter executes shell script and filter

func FileExists added in v1.5.0

func FileExists(path string) bool

func GetFilesRecursive added in v1.10.0

func GetFilesRecursive(f fs.FS, root string) ([]string, error)

func GetLatestVersion added in v1.2.1

func GetLatestVersion() (string, error)

GetLatestVersion return the latest non-prerelease, non-draft version of kubeedge in releases

func GetOSInterface

func GetOSInterface() types.OSTypeInstaller

GetOSInterface helps in returning OS specific object which implements OSTypeInstaller interface.

func GetPackageManager added in v1.6.0

func GetPackageManager() string

GetPackageManager get package manager of OS

func HasSystemd added in v1.10.0

func HasSystemd() bool

HasSystemd checks if systemd exist. if command run failed, then check it by sd_booted.

func IsCloudcoreContainerRunning added in v1.10.0

func IsCloudcoreContainerRunning(ns, kubeConfigPath string) (bool, error)

IsCloudcoreContainerRunning judge whether cloudcore pod is running

func IsKubeEdgeProcessRunning added in v1.10.0

func IsKubeEdgeProcessRunning(proc string) (bool, error)

IsKubeEdgeProcessRunning checks if the given process is running or not

func KubeClient added in v1.4.0

func KubeClient(kubeConfigPath string) (*kubernetes.Clientset, error)

KubeClient from config

func ParseEdgecoreConfig added in v1.5.0

func ParseEdgecoreConfig(edgecorePath string) (*v1alpha1.EdgeCoreConfig, error)

func PrintFail added in v1.5.0

func PrintFail(cmd string, s string)

PrintFail prints fail

func PrintSucceed added in v1.6.0

func PrintSucceed(cmd string, s string)

PrintSucceed prints success

func RunningModule added in v1.6.0

func RunningModule() (types.ModuleRunning, error)

RunningModule identifies cloudcore/edgecore running or not.

func RunningModuleV2 added in v1.10.0

func RunningModuleV2(opt *types.ResetOptions) (types.ModuleRunning, error)

RunningModuleV2 identifies cloudcore/edgecore running or not. only used for cloudcore container install and edgecore binary install

Types

type Command

type Command struct {
	Cmd      *exec.Cmd
	StdOut   []byte
	StdErr   []byte
	ExitCode int
}

Command defines commands to be executed and captures std out and std error

func NewCommand added in v1.6.0

func NewCommand(command string) *Command

func (*Command) Exec added in v1.6.0

func (cmd *Command) Exec() error

Exec run command and exit formatted error, callers can print err directly Any running error or non-zero exitcode is consider as error

func (Command) GetCommand added in v1.6.0

func (cmd Command) GetCommand() string

func (Command) GetStdErr

func (cmd Command) GetStdErr() string

func (Command) GetStdOut added in v1.6.0

func (cmd Command) GetStdOut() string

type Common

type Common struct {
	types.OSTypeInstaller
	OSVersion   string
	ToolVersion semver.Version
	KubeConfig  string
	Master      string
}

Common struct contains OS and Tool version properties and also embeds OS interface

func (*Common) SetOSInterface

func (co *Common) SetOSInterface(intf types.OSTypeInstaller)

SetOSInterface defines a method to set the implemtation of the OS interface

type DebOS added in v1.6.0

type DebOS struct {
	KubeEdgeVersion semver.Version
	IsEdgeNode      bool //True - Edgenode False - Cloudnode
}

DebOS struct objects shall have information of the tools version to be installed on Hosts having Ubuntu OS. It implements OSTypeInstaller interface

func (*DebOS) InstallKubeEdge added in v1.6.0

func (d *DebOS) InstallKubeEdge(options types.InstallOptions) error

InstallKubeEdge downloads the provided version of KubeEdge. Untar's in the specified location /etc/kubeedge/ and then copies the binary to excecutables' path (eg: /usr/local/bin)

func (*DebOS) InstallMQTT added in v1.6.0

func (d *DebOS) InstallMQTT() error

InstallMQTT checks if MQTT is already installed and running, if not then install it from OS repo

func (*DebOS) IsK8SComponentInstalled added in v1.6.0

func (d *DebOS) IsK8SComponentInstalled(kubeConfig, master string) error

IsK8SComponentInstalled checks if said K8S version is already installed in the host

func (*DebOS) IsKubeEdgeProcessRunning added in v1.6.0

func (d *DebOS) IsKubeEdgeProcessRunning(proc string) (bool, error)

IsKubeEdgeProcessRunning checks if the given process is running or not

func (*DebOS) IsProcessRunning added in v1.6.0

func (d *DebOS) IsProcessRunning(proc string) (bool, error)

func (*DebOS) KillKubeEdgeBinary added in v1.6.0

func (d *DebOS) KillKubeEdgeBinary(proc string) error

KillKubeEdgeBinary will search for KubeEdge process and forcefully kill it

func (*DebOS) RunEdgeCore added in v1.6.0

func (d *DebOS) RunEdgeCore() error

RunEdgeCore starts edgecore with logs being captured

func (*DebOS) SetKubeEdgeVersion added in v1.6.0

func (d *DebOS) SetKubeEdgeVersion(version semver.Version)

SetKubeEdgeVersion sets the KubeEdge version for the objects instance

type K8SInstTool

type K8SInstTool struct {
	Common
}

K8SInstTool embeds Common struct and contains the default K8S version and a flag depicting if host is an edge or cloud node It implements ToolsInstaller interface

func (*K8SInstTool) InstallTools

func (ks *K8SInstTool) InstallTools() error

InstallTools sets the OS interface, checks if K8S installation is required or not. If required then install the said version.

func (*K8SInstTool) TearDown

func (ks *K8SInstTool) TearDown() error

TearDown should uninstall K8S, but it is not required either for cloud or edge node. It is defined so that K8SInstTool implements ToolsInstaller interface

type KubeCloudHelmInstTool added in v1.10.0

type KubeCloudHelmInstTool struct {
	Common
	AdvertiseAddress string
	Manifests        string
	Namespace        string
	CloudcoreImage   string
	CloudcoreTag     string
	IptablesMgrImage string
	IptablesMgrTag   string
	Sets             []string
	Profile          string
	ProfileKey       string
	ExternalHelmRoot string
	Force            bool
	SkipCRDs         bool
	DryRun           bool
	Action           string
	// contains filtered or unexported fields
}

KubeCloudHelmInstTool embeds Common struct It implements ToolsInstaller interface

func (*KubeCloudHelmInstTool) InstallTools added in v1.10.0

func (cu *KubeCloudHelmInstTool) InstallTools() error

InstallTools downloads KubeEdge for the specified version and makes the required configuration changes and initiates cloudcore.

func (*KubeCloudHelmInstTool) RunHelmInstall added in v1.10.0

func (cu *KubeCloudHelmInstTool) RunHelmInstall(baseHelmRoot string) error

RunHelmInstall renders the Charts with the given values, then installs the Charts to the cluster.

func (*KubeCloudHelmInstTool) RunHelmManifest added in v1.10.0

func (cu *KubeCloudHelmInstTool) RunHelmManifest(baseHelmRoot string) error

func (*KubeCloudHelmInstTool) TearDown added in v1.10.0

func (cu *KubeCloudHelmInstTool) TearDown() error

TearDown method will remove the edge node from api-server and stop cloudcore process

type KubeCloudInstTool

type KubeCloudInstTool struct {
	Common
	AdvertiseAddress string
	DNSName          string
	TarballPath      string
}

KubeCloudInstTool embeds Common struct It implements ToolsInstaller interface

func (*KubeCloudInstTool) InstallTools

func (cu *KubeCloudInstTool) InstallTools() error

InstallTools downloads KubeEdge for the specified version and makes the required configuration changes and initiates cloudcore.

func (*KubeCloudInstTool) RunCloudCore

func (cu *KubeCloudInstTool) RunCloudCore() error

RunCloudCore starts cloudcore process

func (*KubeCloudInstTool) TearDown

func (cu *KubeCloudInstTool) TearDown() error

TearDown method will remove the edge node from api-server and stop cloudcore process

type KubeEdgeInstTool

type KubeEdgeInstTool struct {
	Common
	CertPath              string
	CloudCoreIP           string
	EdgeNodeName          string
	RuntimeType           string
	RemoteRuntimeEndpoint string
	Token                 string
	CertPort              string
	CGroupDriver          string
	TarballPath           string
	Labels                []string
}

KubeEdgeInstTool embeds Common struct and contains cloud node ip:port information It implements ToolsInstaller interface

func (*KubeEdgeInstTool) InstallTools

func (ku *KubeEdgeInstTool) InstallTools() error

InstallTools downloads KubeEdge for the specified version and makes the required configuration changes and initiates edgecore.

func (*KubeEdgeInstTool) TearDown

func (ku *KubeEdgeInstTool) TearDown() error

TearDown method will remove the edge node from api-server and stop edgecore process

type MQTTInstTool

type MQTTInstTool struct {
	Common
}

MQTTInstTool embeds Common struct and It implements ToolsInstaller interface

func (*MQTTInstTool) InstallTools

func (m *MQTTInstTool) InstallTools() error

InstallTools sets the OS interface, it simply installs the said version

func (*MQTTInstTool) TearDown

func (m *MQTTInstTool) TearDown() error

TearDown should uninstall MQTT, but it is not required either for cloud or edge node. It is defined so that MQTTInstTool implements ToolsInstaller interface

type PacmanOS added in v1.6.0

type PacmanOS struct {
	KubeEdgeVersion semver.Version
	IsEdgeNode      bool
}

PacmanOS struct objects shall have information of the tools version to be installed on Hosts having PacmanOS. It implements OSTypeInstaller interface

func (*PacmanOS) InstallKubeEdge added in v1.6.0

func (o *PacmanOS) InstallKubeEdge(options types.InstallOptions) error

InstallKubeEdge downloads the provided version of KubeEdge. Untar's in the specified location /etc/kubeedge/ and then copies the binary to excecutables' path (eg: /usr/local/bin)

func (*PacmanOS) InstallMQTT added in v1.6.0

func (o *PacmanOS) InstallMQTT() error

InstallMQTT checks if MQTT is already installed and running, if not then install it from OS repo

func (*PacmanOS) IsK8SComponentInstalled added in v1.6.0

func (o *PacmanOS) IsK8SComponentInstalled(kubeConfig, master string) error

IsK8SComponentInstalled checks if said K8S version is already installed in the host

func (*PacmanOS) IsKubeEdgeProcessRunning added in v1.6.0

func (o *PacmanOS) IsKubeEdgeProcessRunning(proc string) (bool, error)

IsKubeEdgeProcessRunning checks if the given process is running or not

func (*PacmanOS) IsProcessRunning added in v1.6.0

func (o *PacmanOS) IsProcessRunning(proc string) (bool, error)

IsProcessRunning checks if the given process is running or not

func (*PacmanOS) KillKubeEdgeBinary added in v1.6.0

func (o *PacmanOS) KillKubeEdgeBinary(proc string) error

KillKubeEdgeBinary will search for KubeEdge process and forcefully kill it

func (*PacmanOS) RunEdgeCore added in v1.6.0

func (o *PacmanOS) RunEdgeCore() error

RunEdgeCore sets the environment variable GOARCHAIUS_CONFIG_PATH for the configuration path and the starts edgecore with logs being captured

func (*PacmanOS) SetKubeEdgeVersion added in v1.6.0

func (o *PacmanOS) SetKubeEdgeVersion(version semver.Version)

SetKubeEdgeVersion sets the KubeEdge version for the objects instance

type Renderer added in v1.10.0

type Renderer struct {
	// contains filtered or unexported fields
}

Renderer is a helm template renderer for a fs.FS.

func NewGenericRenderer added in v1.10.0

func NewGenericRenderer(files fs.FS, dir, componentName, namespace string, profileValsMap map[string]interface{}, skipCRDs bool) *Renderer

NewFileTemplateRenderer creates a TemplateRenderer with the given parameters and returns a pointer to it. helmChartDirPath must be an absolute file path to the root of the helm charts.

func (*Renderer) LoadChart added in v1.10.0

func (h *Renderer) LoadChart() error

LoadChart would load the given charts.

func (*Renderer) RenderManifest added in v1.10.0

func (h *Renderer) RenderManifest() (string, error)

RenderManifest renders the current helm templates with the current values and returns the resulting YAML manifest string.

func (*Renderer) RenderManifestFiltered added in v1.10.0

func (h *Renderer) RenderManifestFiltered(filter TemplateFilterFunc) (string, error)

RenderManifestFiltered filters templates to render using the supplied filter function.

type RpmOS added in v1.6.0

type RpmOS struct {
	KubeEdgeVersion semver.Version
	IsEdgeNode      bool //True - Edgenode False - Cloudnode
}

RpmOS struct objects shall have information of the tools version to be installed on Hosts having RpmOS OS. It implements OSTypeInstaller interface

func (*RpmOS) InstallKubeEdge added in v1.6.0

func (r *RpmOS) InstallKubeEdge(options types.InstallOptions) error

InstallKubeEdge downloads the provided version of KubeEdge. Untar's in the specified location /etc/kubeedge/ and then copies the binary to excecutables' path (eg: /usr/local/bin)

func (*RpmOS) InstallMQTT added in v1.6.0

func (r *RpmOS) InstallMQTT() error

InstallMQTT checks if MQTT is already installed and running, if not then install it from OS repo Information is used from https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-the-mosquitto-mqtt-messaging-broker-on-centos-7

func (*RpmOS) IsK8SComponentInstalled added in v1.6.0

func (r *RpmOS) IsK8SComponentInstalled(kubeConfig, master string) error

IsK8SComponentInstalled checks if said K8S version is already installed in the host

func (*RpmOS) IsKubeEdgeProcessRunning added in v1.6.0

func (r *RpmOS) IsKubeEdgeProcessRunning(proc string) (bool, error)

IsKubeEdgeProcessRunning checks if the given process is running or not

func (*RpmOS) IsProcessRunning added in v1.6.0

func (r *RpmOS) IsProcessRunning(proc string) (bool, error)

IsProcessRunning checks if the given process is running or not

func (*RpmOS) KillKubeEdgeBinary added in v1.6.0

func (r *RpmOS) KillKubeEdgeBinary(proc string) error

KillKubeEdgeBinary will search for KubeEdge process and forcefully kill it

func (*RpmOS) RunEdgeCore added in v1.6.0

func (r *RpmOS) RunEdgeCore() error

RunEdgeCore starts edgecore with logs being captured

func (*RpmOS) SetKubeEdgeVersion added in v1.6.0

func (r *RpmOS) SetKubeEdgeVersion(version semver.Version)

SetKubeEdgeVersion sets the KubeEdge version for the objects instance

type TemplateFilterFunc added in v1.10.0

type TemplateFilterFunc func(string) bool

Jump to

Keyboard shortcuts

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