Files
iris-context/commands/ops/k3d.go
VERSE ebde9ba68f refactor(commands): separate commands and its core into two folders (#32)
- I think it would be better if one for commands only, one for the spec
handling core logic so people won't be confused by the core logic inside
the commands folder (cleaner I guess)
- Regen docs
2026-07-05 11:27:30 +07:00

100 lines
6.4 KiB
Go

package ops
import (
"github.com/versenilvis/iris/spec"
)
func init() {
spec.Register(&spec.Spec{
Name: "k3d",
Description: "Little helper to run k3s in Docker",
Subcommands: []spec.Subcommand{
{Name: "cluster", Description: "Manage k3s clusters"},
{Name: "create", Description: "Create a new k3s cluster"},
{Name: "cluster name", Description: "Name of the cluster to create"},
{Name: "number of agents", Description: "Number of agents to create"},
{Name: "memory limit", Description: "Memory limit imposed on the agents nodes"},
{Name: "port", Description: "Specify the Kubernetes API server port exposed on the LoadBalancer"},
{Name: "path", Description: "Path of a config file to use"},
{Name: "environment variables", Description: "Add environment variables to nodes"},
{Name: "devices", Description: "GPU devices to add to the cluster node containers"},
{Name: "ip:host[,host,...]", Description: "Add ip:host[,host,...] mappings"},
{Name: "image", Description: "Specify k3s image that you want to use for the nodes"},
{Name: "ARG@NODEFILTER[;@NODEFILTER]", Description: "Additional args passed to k3s command"},
{Name: "network", Description: "Specify the docker network to use"},
{Name: "int", Description: "Specify how many servers you want to create"},
{Name: "string", Description: "Memory limit imposed on the server nodes [From docker]"},
{Name: "duration", Description: "Rollback changes if cluster couldn't be created in specified duration"},
{Name: "delete", Description: "Delete a cluster"},
{Name: "edit", Description: "Edit a cluster"},
{Name: "list", Description: "List clusters"},
{Name: "start", Description: "Start a cluster"},
{Name: "a", Description: "Start all clusters"},
{Name: "stop", Description: "Stop a cluster"},
{Name: "completion", Description: "Generate shell completion scripts"},
{Name: "shell", Description: "Shell to generate completion script for"},
{Name: "config", Description: "Manage k3d config"},
{Name: "init", Description: "Create a new config file"},
{Name: "migrate", Description: "Migrate a config file to the latest version"},
{Name: "import", Description: "Import image(s) from docker into k3d cluster(s)"},
{Name: "mode", Description: "Import mode"},
{Name: "kubeconfig", Description: "Manage k3d kubeconfig"},
{Name: "merge", Description: "Write/Merge kubeconfig(s) from cluster(s) into new or existing kubeconfig/file"},
{Name: "node", Description: "Manage k3d nodes"},
{Name: "Node Name", Description: "Name of the node"},
{Name: "k3s-arg", Description: "Additional k3s arguments"},
{Name: "memory", Description: "Memory limit for the node container"},
{Name: "replicas", Description: "Number of replicas to create"},
{Name: "role", Description: "Node role"},
{Name: "timeout", Description: "Maximum waiting time for '--wait' before canceling/returning"},
{Name: "port-add", Description: "Map ports from the node container to the host"},
{Name: "output", Description: "Output format"},
{Name: "registry", Description: "Manage registry/registries"},
{Name: "Registry Name", Description: "Name of the registry"},
{Name: "version", Description: "Show k3d and default k3s version"},
},
Options: []spec.Option{
{Name: "-a", Description: "Number of agents to create"},
{Name: "--agents-memory", Description: "Memory limit imposed on the agents nodes"},
{Name: "--api-port", Description: "Specify the Kubernetes API server port exposed on the LoadBalancer"},
{Name: "-c", Description: "Path of a config file to use"},
{Name: "-e", Description: "Add environment variables to nodes"},
{Name: "--gpus", Description: "GPU devices to add to the cluster node containers"},
{Name: "-h", Description: "Help for create"},
{Name: "--host-alias", Description: "Add ip:host[,host,...] mappings"},
{Name: "--host-pid-mode", Description: "Enable host pid mode of server(s) and agent(s)"},
{Name: "-i", Description: "Specify k3s image that you want to use for the nodes"},
{Name: "--k3s-arg", Description: "Additional args passed to k3s command"},
{Name: "--k3s-node-label", Description: "Add label to k3s node"},
{Name: "--kubeconfig-switch-context", Description: "Use dotted YAML path syntax to override nginx loadbalancer settings"},
{Name: "--network", Description: "Specify the docker network to use"},
{Name: "--no-image-volume", Description: "Don't create a volume for the container's root filesystem"},
{Name: "--no-lb", Description: "Don't create a loadbalancer for the cluster"},
{Name: "--no-rollback", Description: "Don't rollback changes if cluster creation failed"},
{Name: "-p", Description: "Map ports from the node containers (via the serverlb) to the host"},
{Name: "--registry-config", Description: "Specify path to an extra registries.yaml file"},
{Name: "--registry-create", Description: "Connect to one or more k3d-managed registries running locally"},
{Name: "--runtime-label", Description: "Specify how many servers you want to create"},
{Name: "--servers-memory", Description: "Memory limit imposed on the server nodes [From docker]"},
{Name: "--subnet", Description: "[Experimental: IPAM] Define a subnet for the newly created container network"},
{Name: "--timeout", Description: "Rollback changes if cluster couldn't be created in specified duration"},
{Name: "--token", Description: "Specify a cluster token. By default, we generate one"},
{Name: "-v", Description: "Mount volumes into the nodes"},
{Name: "--wait", Description: "Wait for the server(s) to be ready before returning"},
{Name: "--port-add", Description: "Map ports from the node containers"},
{Name: "--no-headers", Description: "Don't print headers"},
{Name: "-o", Description: "Output format"},
{Name: "-f", Description: "Force overwrite of target file"},
{Name: "-k", Description: "Do not delete the tarball containing the saved images from the shared volume"},
{Name: "-t", Description: "Do not delete the tools node after import"},
{Name: "-m", Description: "Import mode"},
{Name: "-s", Description: "Switch to new context (default true)"},
{Name: "-u", Description: "Update conflicting fields in existing kubeconfig (default true)"},
{Name: "--memory", Description: "Memory limit for the node container"},
{Name: "-n", Description: "Add node to (another) runtime network"},
{Name: "--replicas", Description: "Number of replicas to create"},
{Name: "--role", Description: "Node role"},
},
})
}