Documentation
¶
Index ¶
- Constants
- Variables
- func GenerateRegistryCert(registryCertPath string, BaseName string) error
- func GetClusterImagePlatform(rootfs string) (cp ocispecs.Platform)
- func GetKubectlAndKubeconfig(ssh ssh.Interface, host net.IP, rootfs string) error
- func IsInContainer() bool
- func NewKubeadmConfig() interface{}
- func RemoteCerts(altNames []string, hostIP net.IP, hostName, serviceCIRD, DNSDomain string) string
- func VersionCompare(v1, v2 string) bool
- type ClusterRuntime
- type CommandType
- type Config
- type Interface
- type KubeadmConfig
- type KubeadmRuntime
- func (k *KubeadmRuntime) ApplyRegistry() error
- func (k *KubeadmRuntime) CmdAsyncHosts(hosts []net.IP, cmd string) error
- func (k *KubeadmRuntime) CmdToString(host net.IP, cmd, split string) (string, error)
- func (k *KubeadmRuntime) Command(version string, name CommandType) (cmd string)
- func (k *KubeadmRuntime) ConfigKubeadmOnMaster0() error
- func (k *KubeadmRuntime) CopyStaticFiles(nodes []net.IP) error
- func (k *KubeadmRuntime) CopyStaticFilesTomasters() error
- func (k *KubeadmRuntime) CreateKubeConfig() error
- func (k *KubeadmRuntime) DeleteMasters(mastersIPList []net.IP) error
- func (k *KubeadmRuntime) DeleteNodes(nodesIPList []net.IP) error
- func (k *KubeadmRuntime) DeleteRegistry() error
- func (k *KubeadmRuntime) GenerateCert() error
- func (k *KubeadmRuntime) GenerateRegistryCert() error
- func (k *KubeadmRuntime) GerLoginCommand() string
- func (k *KubeadmRuntime) GetClusterMetadata() (*Metadata, error)
- func (k *KubeadmRuntime) GetJoinTokenHashAndKey() error
- func (k *KubeadmRuntime) GetKubectlAndKubeconfig() error
- func (k *KubeadmRuntime) Init(cluster *v2.Cluster) error
- func (k *KubeadmRuntime) InitMaster0() error
- func (k *KubeadmRuntime) JoinMasterCommands(master net.IP, joinCmd, hostname string) []string
- func (k *KubeadmRuntime) JoinMasters(newMastersIPList []net.IP) error
- func (k *KubeadmRuntime) JoinNodes(newNodesIPList []net.IP) error
- func (k *KubeadmRuntime) MergeKubeadmConfig() error
- func (k *KubeadmRuntime) ReplaceKubeConfigV1991V1992(masters []net.IP) bool
- func (k *KubeadmRuntime) Reset() error
- func (k *KubeadmRuntime) SendJoinMasterKubeConfigs(masters []net.IP, files ...string) error
- func (k *KubeadmRuntime) SendRegistryCert(host []net.IP) error
- func (k *KubeadmRuntime) UpdateCert(certs []string) error
- func (k *KubeadmRuntime) Upgrade() error
- func (k *KubeadmRuntime) WaitSSHReady(tryTimes int, hosts ...net.IP) error
- type Metadata
- type RegistryConfig
- type StaticFile
Constants ¶
const ( Cluster = "Cluster" InitConfiguration = "InitConfiguration" JoinConfiguration = "JoinConfiguration" ClusterConfiguration = "ClusterConfiguration" KubeProxyConfiguration = "KubeProxyConfiguration" KubeletConfiguration = "KubeletConfiguration" )
const ( RemoteCmdCopyStatic = "mkdir -p %s && cp -f %s %s" RemoteApplyYaml = `echo '%s' | kubectl apply -f -` RemoteCmdGetNetworkInterface = "ls /sys/class/net" RemoteCmdExistNetworkInterface = "ip addr show %s | egrep \"%s\" || true" WriteKubeadmConfigCmd = `cd %s && echo '%s' > etc/kubeadm.yml` DefaultVIP = "10.103.97.2" DefaultAPIserverDomain = "apiserver.cluster.local" DefaultRegistryPort = 5000 DockerCertDir = "/etc/docker/certs.d" )
const ( V1991 = "v1.19.1" V1992 = "v1.19.2" V1150 = "v1.15.0" V1200 = "v1.20.0" V1230 = "v1.23.0" )
const ( RemoteAddEtcHosts = "cat /etc/hosts |grep '%s' || echo '%s' >> /etc/hosts" RemoteUpdateEtcHosts = `sed "s/%s/%s/g" < /etc/hosts > hosts && cp -f hosts /etc/hosts` RemoteCopyKubeConfig = `rm -rf .kube/config && mkdir -p /root/.kube && cp /etc/kubernetes/admin.conf /root/.kube/config` RemoteNonRootCopyKubeConfig = `` /* 155-byte string literal not displayed */ RemoteReplaceKubeConfig = `` /* 128-byte string literal not displayed */ RemoteJoinMasterConfig = `echo "%s" > %s/etc/kubeadm.yml` InitMaster115Lower = `kubeadm init --config=%s/etc/kubeadm.yml --experimental-upload-certs` JoinMaster115Lower = "kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s --experimental-control-plane --certificate-key %s" JoinNode115Lower = "kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s" InitMaser115Upper = `kubeadm init --config=%s/etc/kubeadm.yml --upload-certs` JoinMaster115Upper = "kubeadm join --config=%s/etc/kubeadm.yml" JoinNode115Upper = "kubeadm join --config=%s/etc/kubeadm.yml" RemoveKubeConfig = "rm -rf /usr/bin/kube* && rm -rf ~/.kube/" RemoteCleanMasterOrNode = `` /* 413-byte string literal not displayed */ RemoteRemoveAPIServerEtcHost = "sed -i \"/%s/d\" /etc/hosts" RemoteRemoveRegistryCerts = "rm -rf " + DockerCertDir + "/%s*" RemoveLvscareStaticPod = "rm -rf /etc/kubernetes/manifests/kube-sealyun-lvscare*" CreateLvscareStaticPod = "mkdir -p /etc/kubernetes/manifests && echo '%s' > /etc/kubernetes/manifests/kube-sealyun-lvscare.yaml" KubeDeleteNode = "kubectl delete node %s" // TODO check kubernetes certs RemoteCheckCerts = "kubeadm alpha certs check-expiration" )
const ( AdminConf = "admin.conf" ControllerConf = "controller-manager.conf" SchedulerConf = "scheduler.conf" KubeletConf = "kubelet.conf" // kube file KUBECONTROLLERCONFIGFILE = "/etc/kubernetes/controller-manager.conf" KUBESCHEDULERCONFIGFILE = "/etc/kubernetes/scheduler.conf" // CriSocket DefaultDockerCRISocket = "/var/run/dockershim.sock" DefaultContainerdCRISocket = "/run/containerd/containerd.sock" DefaultSystemdCgroupDriver = "systemd" DefaultCgroupDriver = "cgroupfs" // kubeadm api version KubeadmV1beta1 = "kubeadm.k8s.io/v1beta1" KubeadmV1beta2 = "kubeadm.k8s.io/v1beta2" KubeadmV1beta3 = "kubeadm.k8s.io/v1beta3" )
const ( Master0 = "Master0" Master = "Master" Masters = "Masters" TokenDiscovery = "TokenDiscovery" VIP = "VIP" Version = "Version" APIServer = "ApiServer" PodCIDR = "PodCIDR" SvcCIDR = "SvcCIDR" Repo = "Repo" CertSANS = "CertSANS" EtcdServers = "etcd-servers" CriSocket = "CriSocket" CriCGroupDriver = "CriCGroupDriver" KubeadmAPI = "KubeadmAPI" TokenDiscoveryCAHash = "TokenDiscoveryCAHash" )
const ( RemoteAddIPVS = "seautil ipvs --vs %s:6443 %s --health-path /healthz --health-schem https --run-once" RemoteStaticPodMkdir = "mkdir -p /etc/kubernetes/manifests" RemoteJoinConfig = `echo "%s" > %s/etc/kubeadm.yml` LvscareDefaultStaticPodFileName = "/etc/kubernetes/manifests/kube-lvscare.yaml" RemoteAddIPVSEtcHosts = "echo %s %s >> /etc/hosts" RemoteCheckRoute = "seautil route check --host %s" RemoteAddRoute = "seautil route add --host %s --gateway %s" RemoteDelRoute = "if command -v seautil > /dev/null 2>&1; then seautil route del --host %s --gateway %s; fi" LvscareStaticPodCmd = `echo "%s" > %s` )
const ( RegistryName = "sealer-registry" RegistryBindDest = "/var/lib/registry" RegistryBindConfig = "registry_config.yml" RegistryCustomConfig = "registry.yml" SeaHub = "sea.hub" DefaultRegistryHtPasswdFile = "registry_htpasswd" DockerLoginCommand = "nerdctl login -u %s -p %s %s && " + KubeletAuthCommand KubeletAuthCommand = "cp /root/.docker/config.json /var/lib/kubelet" DeleteRegistryCommand = "" /* 154-byte string literal not displayed */ )
const (
AuditPolicyYml = "audit-policy.yml"
)
const (
DefaultKubeadmConfig = `` /* 4077-byte string literal not displayed */
)
Variables ¶
var ( ContainerdShell = `` /* 134-byte string literal not displayed */ DockerShell = `driver=$(docker info -f "{{.CgroupDriver}}") echo "${driver}"` )
var ForceDelete bool
var MasterStaticFiles = []*StaticFile{ { DestinationDir: "/etc/kubernetes", Name: AuditPolicyYml, }, }
MasterStaticFiles Put static files here, can be moved to all master nodes before kubeadm execution
Functions ¶
func GenerateRegistryCert ¶
func GetClusterImagePlatform ¶
func GetKubectlAndKubeconfig ¶
func IsInContainer ¶
func IsInContainer() bool
func NewKubeadmConfig ¶
func NewKubeadmConfig() interface{}
func RemoteCerts ¶
func VersionCompare ¶
VersionCompare :if v1 >= v2 return true, else return false
Types ¶
type ClusterRuntime ¶
type ClusterRuntime string
const ( K0s ClusterRuntime = "k0s" K3s ClusterRuntime = "k3s" K8s ClusterRuntime = "k8s" )
type CommandType ¶
type CommandType string
const InitMaster CommandType = "initMaster"
const JoinMaster CommandType = "joinMaster"
const JoinNode CommandType = "joinNode"
type Config ¶
type Config struct {
Vlog int
VIP string
RegConfig *RegistryConfig
// Clusterfile: the absolute path, we need to read kubeadm config from Clusterfile
ClusterFileKubeConfig *KubeadmConfig
APIServerDomain string
}
type Interface ¶
type Interface interface {
// Init exec kubeadm init
Init(cluster *v2.Cluster) error
Upgrade() error
Reset() error
JoinMasters(newMastersIPList []net.IP) error
JoinNodes(newNodesIPList []net.IP) error
DeleteMasters(mastersIPList []net.IP) error
DeleteNodes(nodesIPList []net.IP) error
GetClusterMetadata() (*Metadata, error)
UpdateCert(certs []string) error
}
func NewDefaultRuntime ¶
func NewDefaultRuntime(cluster *v2.Cluster, clusterfileKubeConfig *KubeadmConfig) (Interface, error)
NewDefaultRuntime arg "clusterfileKubeConfig" is the Clusterfile path/name, runtime need read kubeadm config from it Mount image is required before new Runtime.
type KubeadmConfig ¶
type KubeadmConfig struct {
v1beta2.InitConfiguration
v1beta2.ClusterConfiguration
v1alpha1.KubeProxyConfiguration
v1beta1.KubeletConfiguration
v1beta2.JoinConfiguration
}
nolint
func LoadKubeadmConfigs ¶
func (*KubeadmConfig) LoadFromClusterfile ¶
func (k *KubeadmConfig) LoadFromClusterfile(kubeadmConfig *KubeadmConfig) error
LoadFromClusterfile :Load KubeadmConfig from Clusterfile. If it has `KubeadmConfig` in Clusterfile, load every field to each configuration. If Kubeadm raw config in Clusterfile, just load it.
func (*KubeadmConfig) Merge ¶
func (k *KubeadmConfig) Merge(kubeadmYamlPath string) error
Merge Using github.com/imdario/mergo to merge KubeadmConfig to the ClusterImage default kubeadm config, overwrite some field. if defaultKubeadmConfig file not exist, use default raw kubeadm config to merge k.KubeConfigSpec empty value
type KubeadmRuntime ¶
func (*KubeadmRuntime) ApplyRegistry ¶
func (k *KubeadmRuntime) ApplyRegistry() error
ApplyRegistry Only use this for join and init, due to the initiation operations.
func (*KubeadmRuntime) CmdAsyncHosts ¶
func (k *KubeadmRuntime) CmdAsyncHosts(hosts []net.IP, cmd string) error
func (*KubeadmRuntime) CmdToString ¶
CmdToString is in host exec cmd and replace to spilt str
func (*KubeadmRuntime) Command ¶
func (k *KubeadmRuntime) Command(version string, name CommandType) (cmd string)
func (*KubeadmRuntime) ConfigKubeadmOnMaster0 ¶
func (k *KubeadmRuntime) ConfigKubeadmOnMaster0() error
func (*KubeadmRuntime) CopyStaticFiles ¶
func (k *KubeadmRuntime) CopyStaticFiles(nodes []net.IP) error
func (*KubeadmRuntime) CopyStaticFilesTomasters ¶
func (k *KubeadmRuntime) CopyStaticFilesTomasters() error
func (*KubeadmRuntime) CreateKubeConfig ¶
func (k *KubeadmRuntime) CreateKubeConfig() error
func (*KubeadmRuntime) DeleteMasters ¶
func (k *KubeadmRuntime) DeleteMasters(mastersIPList []net.IP) error
func (*KubeadmRuntime) DeleteNodes ¶
func (k *KubeadmRuntime) DeleteNodes(nodesIPList []net.IP) error
func (*KubeadmRuntime) DeleteRegistry ¶
func (k *KubeadmRuntime) DeleteRegistry() error
func (*KubeadmRuntime) GenerateCert ¶
func (k *KubeadmRuntime) GenerateCert() error
func (*KubeadmRuntime) GenerateRegistryCert ¶
func (k *KubeadmRuntime) GenerateRegistryCert() error
func (*KubeadmRuntime) GerLoginCommand ¶
func (k *KubeadmRuntime) GerLoginCommand() string
func (*KubeadmRuntime) GetClusterMetadata ¶
func (k *KubeadmRuntime) GetClusterMetadata() (*Metadata, error)
func (*KubeadmRuntime) GetJoinTokenHashAndKey ¶
func (k *KubeadmRuntime) GetJoinTokenHashAndKey() error
func (*KubeadmRuntime) GetKubectlAndKubeconfig ¶
func (k *KubeadmRuntime) GetKubectlAndKubeconfig() error
func (*KubeadmRuntime) JoinMasterCommands ¶
func (k *KubeadmRuntime) JoinMasterCommands(master net.IP, joinCmd, hostname string) []string
func (*KubeadmRuntime) JoinMasters ¶
func (k *KubeadmRuntime) JoinMasters(newMastersIPList []net.IP) error
func (*KubeadmRuntime) JoinNodes ¶
func (k *KubeadmRuntime) JoinNodes(newNodesIPList []net.IP) error
func (*KubeadmRuntime) MergeKubeadmConfig ¶
func (k *KubeadmRuntime) MergeKubeadmConfig() error
func (*KubeadmRuntime) ReplaceKubeConfigV1991V1992 ¶
func (k *KubeadmRuntime) ReplaceKubeConfigV1991V1992(masters []net.IP) bool
func (*KubeadmRuntime) Reset ¶
func (k *KubeadmRuntime) Reset() error
func (*KubeadmRuntime) SendJoinMasterKubeConfigs ¶
func (k *KubeadmRuntime) SendJoinMasterKubeConfigs(masters []net.IP, files ...string) error
func (*KubeadmRuntime) SendRegistryCert ¶
func (k *KubeadmRuntime) SendRegistryCert(host []net.IP) error
func (*KubeadmRuntime) UpdateCert ¶
func (k *KubeadmRuntime) UpdateCert(certs []string) error
func (*KubeadmRuntime) Upgrade ¶
func (k *KubeadmRuntime) Upgrade() error
func (*KubeadmRuntime) WaitSSHReady ¶
func (k *KubeadmRuntime) WaitSSHReady(tryTimes int, hosts ...net.IP) error
type Metadata ¶
type Metadata struct {
Version string `json:"version"`
Arch string `json:"arch"`
Variant string `json:"variant"`
//KubeVersion is a SemVer constraint specifying the version of Kubernetes required.
KubeVersion string `json:"kubeVersion"`
NydusFlag bool `json:"NydusFlag"`
//ClusterRuntime is a flag to distinguish the runtime for k0s、k8s、k3s
ClusterRuntime ClusterRuntime `json:"ClusterRuntime"`
}
func LoadMetadata ¶
LoadMetadata :read metadata via ClusterImage name.
type RegistryConfig ¶
type RegistryConfig struct {
IP net.IP `yaml:"ip,omitempty"`
Domain string `yaml:"domain,omitempty"`
Port string `yaml:"port,omitempty"`
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
}
func GetRegistryConfig ¶
func GetRegistryConfig(rootfs string, defaultRegistryIP net.IP) *RegistryConfig
func (*RegistryConfig) GenerateHtPasswd ¶
func (r *RegistryConfig) GenerateHtPasswd() (string, error)
func (*RegistryConfig) Repo ¶
func (r *RegistryConfig) Repo() string
type StaticFile ¶
StaticFile :static file should not be template, will never be changed while initialization.