installers.virt.k3s_installer #
K3s Installer
Installs and manages K3s (lightweight Kubernetes) clusters with Mycelium IPv6 networking support.
Features
- First master node initialization with
--cluster-init - Additional master nodes for HA clusters
- Worker node joining
- Mycelium IPv6 auto-detection
- Automatic token generation
- Join script generation for other nodes
Usage
import incubaid.herolib.installers.virt.k3s_installer
// Get the installer
mut installer := k3s_installer.get()!
// Install as first master
installer.install_master()!
// Start K3s
installer.start()!
Example heroscript
First Master Node
!!k3s_installer.configure
name: 'k3s_master'
k3s_version: 'v1.33.1'
data_dir: '~/hero/var/k3s'
node_name: 'master-1'
!!k3s_installer.install_master name:'k3s_master'
!!k3s_installer.start name:'k3s_master'
Join as Worker Node
!!k3s_installer.configure
name: 'k3s_worker'
k3s_version: 'v1.33.1'
node_name: 'worker-1'
token: '<token-from-master>'
master_url: 'https://[<master-ipv6>]:6443'
!!k3s_installer.install_worker name:'k3s_worker'
!!k3s_installer.start name:'k3s_worker'
Destroy Installation
!!k3s_installer.destroy
Constants #
const version = 'v1.33.1'
fn delete #
fn delete(args ArgsGet) !
fn exists #
fn exists(args ArgsGet) !bool
does the config exists?
fn get #
fn get(args ArgsGet) !&K3SInstaller
fn heroscript_dumps #
fn heroscript_dumps(obj K3SInstaller) !string
///////////NORMALLY NO NEED TO TOUCH
fn heroscript_loads #
fn heroscript_loads(heroscript string) !K3SInstaller
fn list #
fn list(args ArgsList) ![]&K3SInstaller
if fromdb set: load from filesystem, and not from mem, will also reset what is in mem
fn new #
fn new(args ArgsGet) !&K3SInstaller
fn play #
fn play(mut plbook PlayBook) !
fn set #
fn set(o K3SInstaller) !
register the config for the future
fn switch #
fn switch(name string)
switch instance to be used for k3s_installer
struct ArgsGet #
@[params]
struct ArgsGet {
pub mut:
name string = 'default'
fromdb bool // will load from filesystem
create bool // default will not create if not exist
}
///////FACTORY
struct ArgsList #
@[params]
struct ArgsList {
pub mut:
fromdb bool // will load from filesystem
}
struct InstallArgs #
@[params]
struct InstallArgs {
pub mut:
reset bool
}
struct K3SInstaller #
@[heap]
struct K3SInstaller {
pub mut:
name string = 'default'
// K3s version to install
k3s_version string = version
// Data directory for K3s (default: ~/hero/var/k3s)
data_dir string
// Unique node name/identifier
node_name string
// Mycelium interface name (auto-detected if not specified)
mycelium_interface string
// Cluster token for authentication (auto-generated if empty)
token string
// Master URL for joining cluster (e.g., 'https://[ipv6]:6443')
master_url string
// Node IPv6 address (auto-detected from Mycelium if empty)
node_ip string
// Is this a master/control-plane node?
is_master bool
// Is this the first master (uses --cluster-init)?
is_first_master bool
// TFGW CRD config (only deployed on first master)
tfgw_mnemonic string // Wallet mnemonic for TFGW controller
tfgw_network string // Network: main, dev, test, qa
}
K3s installer - handles K3s cluster installation with Mycelium IPv6 networking
fn (K3SInstaller) destroy #
fn (mut self K3SInstaller) destroy() !
fn (K3SInstaller) generate_join_script #
fn (self &K3SInstaller) generate_join_script() !string
Generate join script for other nodes
fn (K3SInstaller) get_kubeconfig #
fn (self &K3SInstaller) get_kubeconfig() !string
Get kubeconfig content
fn (K3SInstaller) get_mycelium_ipv6 #
fn (self &K3SInstaller) get_mycelium_ipv6() !string
Get Mycelium IPv6 address from interface
fn (K3SInstaller) install #
fn (mut self K3SInstaller) install(args InstallArgs) !
fn (K3SInstaller) install_master #
fn (mut self K3SInstaller) install_master() !
Install first master node
fn (K3SInstaller) install_start #
fn (mut self K3SInstaller) install_start(args InstallArgs) !
fn (K3SInstaller) install_worker #
fn (mut self K3SInstaller) install_worker() !
Install worker node
fn (K3SInstaller) installed #
fn (self &K3SInstaller) installed() !bool
fn (K3SInstaller) join_master #
fn (mut self K3SInstaller) join_master() !
Join as additional master
fn (K3SInstaller) kubeconfig_path #
fn (self &K3SInstaller) kubeconfig_path() string
Get path to kubeconfig file
fn (K3SInstaller) reload #
fn (mut self K3SInstaller) reload() !
load from disk and make sure is properly intialized
fn (K3SInstaller) restart #
fn (mut self K3SInstaller) restart(args StartArgs) !
fn (K3SInstaller) running #
fn (mut self K3SInstaller) running() !bool
fn (K3SInstaller) start #
fn (mut self K3SInstaller) start(args StartArgs) !
fn (K3SInstaller) stop #
fn (mut self K3SInstaller) stop() !
struct StartArgs #
@[params]
struct StartArgs {
pub mut:
reset bool
}
////////////////// STARTUP COMMAND ////////////////////