k3dSpec top-level property
Completion spec for k3d CLI
Implementation
final FigSpec k3dSpec = FigSpec(
name: 'k3d',
description: 'K3d is a lightweight wrapper to run k3s in Docker',
subcommands: [
Subcommand(
name: 'cluster',
description: 'Manage k3s clusters',
subcommands: [
Subcommand(
name: 'create',
description: 'Create a new k3s cluster',
args: [
Arg(
name: 'cluster name',
description: 'Name of the cluster to create')
],
options: [
Option(
name: ['-a', '--agents'],
description: 'Number of agents to create',
args: [
Arg(
name: 'number of agents',
description: 'Number of agents to create')
]),
Option(
name: '--agents-memory',
description: 'Memory limit imposed on the agents nodes',
args: [
Arg(
name: 'memory limit',
description:
'Memory limit imposed on the agents nodes')
]),
Option(
name: '--api-port',
description:
'Specify the Kubernetes API server port exposed on the LoadBalancer',
args: [
Arg(
name: 'port',
description:
'Specify the Kubernetes API server port exposed on the LoadBalancer')
]),
Option(
name: ['-c', '--config'],
description: 'Path of a config file to use',
args: [
Arg(
name: 'path',
description: 'Path of a config file to use')
]),
Option(
name: ['-e', '--env'],
description: 'Add environment variables to nodes',
args: [
Arg(
name: 'environment variables',
description: 'Add environment variables to nodes')
]),
Option(
name: '--gpus',
description:
'GPU devices to add to the cluster node containers',
args: [
Arg(
name: 'devices',
description:
'GPU devices to add to the cluster node containers')
]),
Option(
name: ['-h', '--help'], description: 'Help for create'),
Option(
name: '--host-alias',
description: 'Add ip:host[,host,...] mappings',
args: [
Arg(
name: 'ip:host[,host,...]',
description: 'Add ip:host[,host,...] mappings')
]),
Option(
name: '--host-pid-mode',
description:
'Enable host pid mode of server(s) and agent(s)'),
Option(
name: ['-i', '--image'],
description:
'Specify k3s image that you want to use for the nodes',
args: [
Arg(
name: 'image',
description:
'Specify k3s image that you want to use for the nodes')
]),
Option(
name: '--k3s-arg',
description: 'Additional args passed to k3s command',
args: [
Arg(
name: 'ARG@NODEFILTER[;@NODEFILTER]',
description:
'Additional args passed to k3s command')
]),
Option(
name: '--k3s-node-label',
description: 'Add label to k3s node',
args: [
Arg(
name: 'KEY[=VALUE][@NODEFILTER[;NODEFILTER...]]',
description: 'Add label to k3s node')
]),
Option(
name: '--kubeconfig-switch-context',
description:
'Directly switch the default kubeconfig\'s current-context to the new cluster\'s context (requires --kubeconfig-update-default) (default true)'),
Option(
name: '--kubeconfig-update-default',
description:
'Directly update the default kubeconfig with the new cluster\'s context (default true)'),
Option(
name: '--lb-config-override',
description:
'Use dotted YAML path syntax to override nginx loadbalancer settings',
args: [Arg(name: 'path')]),
Option(
name: '--network',
description: 'Specify the docker network to use',
args: [
Arg(
name: 'network',
description: 'Specify the docker network to use')
]),
Option(
name: '--no-image-volume',
description:
'Don\'t create a volume for the container\'s root filesystem'),
Option(
name: '--no-lb',
description:
'Don\'t create a loadbalancer for the cluster'),
Option(
name: '--no-rollback',
description:
'Don\'t rollback changes if cluster creation failed'),
Option(
name: ['-p', '--port'],
description:
'Map ports from the node containers (via the serverlb) to the host',
args: [
Arg(
name: 'port',
description:
'Map ports from the node containers (via the serverlb) to the host')
]),
Option(
name: '--registry-config',
description:
'Specify path to an extra registries.yaml file',
args: [
Arg(
name: 'path',
description:
'Specify path to an extra registries.yaml file')
]),
Option(
name: '--registry-create',
description:
'Create a k3d-managed registry and connect it to the cluster (Format: NAME[:HOST][:HOSTPORT] - Example: `k3d cluster create --registry-create mycluster-registry',
args: [
Arg(
name: 'NAME[:HOST][:HOSTPORT]',
description:
'Create a k3d-managed registry and connect it to the cluster (Format: NAME[:HOST][:HOSTPORT] - Example: `k3d cluster create --registry-create mycluster-registry')
]),
Option(
name: '--registry-use',
description:
'Connect to one or more k3d-managed registries running locally',
args: [Arg(name: 'NAME[:HOST][:HOSTPORT]')]),
Option(
name: '--runtime-label',
description:
'Add label to container runtime (Format: KEY[=VALUE][@NODEFILTER[;NODEFILTER...]] - Example: `k3d cluster create --agents 2 --runtime-label "my.label@agent:0,1" --runtime-label "other.label=somevalue@server:0"`'),
Option(
name: ['-s', '--servers'],
description:
'Specify how many servers you want to create',
args: [
Arg(
name: 'int',
description:
'Specify how many servers you want to create')
]),
Option(
name: '--servers-memory',
description:
'Memory limit imposed on the server nodes [From docker]',
args: [
Arg(
name: 'string',
description:
'Memory limit imposed on the server nodes [From docker]')
]),
Option(
name: '--subnet',
description:
'[Experimental: IPAM] Define a subnet for the newly created container network',
args: [Arg(name: 'string')]),
Option(
name: '--timeout',
description:
'Rollback changes if cluster couldn\'t be created in specified duration',
args: [
Arg(
name: 'duration',
description:
'Rollback changes if cluster couldn\'t be created in specified duration')
]),
Option(
name: '--token',
description:
'Specify a cluster token. By default, we generate one',
args: [
Arg(
name: 'string',
description:
'Specify a cluster token. By default, we generate one')
]),
Option(
name: ['-v', '--volume'],
description: 'Mount volumes into the nodes',
args: [
Arg(
name: '[SOURCE:]DEST[@NODEFILTER[;NODEFILTER...]]',
description: 'Mount volumes into the nodes')
]),
Option(
name: '--wait',
description:
'Wait for the server(s) to be ready before returning')
]),
Subcommand(
name: ['delete', 'del', 'rm'],
description: 'Delete a cluster',
args: [
Arg(
name: 'cluster',
description: 'Cluster to delete',
generators: ClusterGenerator)
],
options: [
Option(
name: ['-a', '--all'],
description: 'Delete all clusters'),
Option(
name: ['-c', '--config'],
description: 'Path of a config file to use',
args: [
Arg(
name: 'path',
description: 'Path of a config file to use')
])
]),
Subcommand(
name: ['edit', 'update'],
description: 'Edit a cluster',
args: [
Arg(
name: 'cluster',
description: 'Cluster to edit',
generators: ClusterGenerator)
],
options: [
Option(
name: '--port-add',
description: 'Map ports from the node containers')
]),
Subcommand(
name: ['list', 'ls', 'get'],
description: 'List clusters',
args: [
Arg(
name: 'cluster',
description: 'Cluster to list',
generators: ClusterGenerator)
],
options: [
Option(
name: '--no-headers',
description: 'Don\'t print headers'),
Option(
name: ['-o', '--output'],
description: 'Output format',
args: [
Arg(
name: 'string',
description: 'Output format',
suggestions: [
FigSuggestion(name: 'json'),
FigSuggestion(name: 'yaml')
])
]),
Option(
name: '--token', description: 'Print k3s cluster token')
]),
Subcommand(name: 'start', description: 'Start a cluster', args: [
Arg(
name: 'cluster',
description: 'Cluster to start',
generators: ClusterGenerator)
], options: [
Option(name: ['a', '--all'], description: 'Start all clusters'),
Option(
name: '--timeout',
description:
'Maximum waiting time for \'--wait\' before canceling/returning',
args: [
Arg(
name: 'duration',
description:
'Maximum waiting time for \'--wait\' before canceling/returning')
]),
Option(
name: '--wait',
description:
'Wait for the server(s) (and loadbalancer) to be ready before returning')
]),
Subcommand(name: 'stop', description: 'Stop a cluster', args: [
Arg(
name: 'cluster',
description: 'Cluster to stop',
generators: ClusterGenerator)
], options: [
Option(name: ['-a', '--all'], description: 'Stop all clusters')
])
]),
Subcommand(
name: 'completion',
description: 'Generate shell completion scripts',
args: [
Arg(
name: 'shell',
description: 'Shell to generate completion script for',
suggestions: ShellCompletions)
]),
Subcommand(
name: 'config',
description: 'Manage k3d config',
subcommands: [
Subcommand(
name: ['init', 'create'],
description: 'Create a new config file',
options: [
Option(
name: ['-f', '--force'],
description: 'Force overwrite of target file'),
Option(
name: ['-o', '--output'],
description:
'Write a default k3d config (default "k3d-default.yaml")')
]),
Subcommand(
name: ['migrate', 'update'],
description: 'Migrate a config file to the latest version')
]),
Subcommand(name: 'image', description: 'Manage k3d images', subcommands: [
Subcommand(
name: ['import', 'load'],
description: 'Import image(s) from docker into k3d cluster(s)',
args: [
Arg(
name: 'image',
description: 'Image to import',
generators: DockerImageGenerator)
],
options: [
Option(
name: ['-c', '--cluster'],
description: 'Cluster to import image(s) into',
args: [
Arg(
name: 'cluster',
description: 'Cluster to import image(s) into',
generators: ClusterGenerator)
]),
Option(
name: ['-k', '--keep-tarball'],
description:
'Do not delete the tarball containing the saved images from the shared volume'),
Option(
name: ['-t', '--keep-tools'],
description: 'Do not delete the tools node after import'),
Option(
name: ['-m', '--mode'],
description: 'Import mode',
args: [
Arg(name: 'mode', description: 'Import mode', suggestions: [
FigSuggestion(name: 'auto'),
FigSuggestion(name: 'direct'),
FigSuggestion(name: 'tools')
])
])
])
]),
Subcommand(
name: 'kubeconfig',
description: 'Manage k3d kubeconfig',
subcommands: [
Subcommand(name: [
'get',
'print',
'show'
], args: [
Arg(
name: 'cluster',
description: 'Cluster to get kubeconfig for',
generators: ClusterGenerator)
], options: [
Option(name: ['-a', '--all'])
]),
Subcommand(
name: ['merge', 'write'],
description:
'Write/Merge kubeconfig(s) from cluster(s) into new or existing kubeconfig/file',
args: [
Arg(
name: 'cluster',
description: 'Cluster to get kubeconfig for',
generators: ClusterGenerator)
],
options: [
Option(name: ['-a', '--all']),
Option(
name: ['-d', '--kubeconfig-merge-default'],
description:
'Merge into the default kubeconfig (\$KUBECONFIG or /Users/balli/.kube/config)'),
Option(
name: ['-s', '--kubeconfig-switch-context'],
description: 'Switch to new context (default true)'),
Option(
name: ['-o', '--output'],
description:
'Define output [ - | FILE ] (default from \$KUBECONFIG or /Users/balli/.kube/config',
args: [
Arg(
name: 'string',
description:
'Define output [ - | FILE ] (default from \$KUBECONFIG or /Users/balli/.kube/config')
]),
Option(
name: '--overwrite',
description:
'[Careful!] Overwrite existing file, ignoring its contents',
isDangerous: true),
Option(
name: ['-u', '--update'],
description:
'Update conflicting fields in existing kubeconfig (default true)')
])
]),
Subcommand(name: 'node', description: 'Manage k3d nodes', subcommands: [
Subcommand(name: 'create', description: 'Create a new node', args: [
Arg(name: 'Node Name', description: 'Name of the node')
], options: [
Option(
name: ['-c', '--cluster'],
description:
'Cluster URL or k3d cluster name to connect to. (default "k3s-default")',
args: [
Arg(
name: 'cluster',
description: 'Cluster to connect to',
generators: ClusterGenerator)
]),
Option(
name: ['-i', '--image'],
description: 'Node image to use',
args: [Arg(name: 'image', description: 'Node image to use')]),
Option(
name: '--k3s-arg',
description: 'Additional k3s arguments',
args: [
Arg(name: 'k3s-arg', description: 'Additional k3s arguments')
]),
Option(
name: '--k3s-node-label',
description: 'Specify k3s node labels in format',
args: [
Arg(
name: 'k3s-node-label',
description: 'Specify k3s node labels in format "foo=bar"')
]),
Option(
name: '--memory',
description: 'Memory limit for the node container',
args: [
Arg(
name: 'memory',
description: 'Memory limit for the node container')
]),
Option(
name: ['-n', '--network'],
description: 'Add node to (another) runtime network',
args: [Arg(name: 'network')]),
Option(
name: '--replicas',
description: 'Number of replicas to create',
args: [
Arg(
name: 'replicas',
description: 'Number of replicas to create',
suggestions: [
FigSuggestion(name: '1'),
FigSuggestion(name: '2'),
FigSuggestion(name: '3'),
FigSuggestion(name: '4'),
FigSuggestion(name: '5')
])
]),
Option(name: '--role', description: 'Node role', args: [
Arg(name: 'role', description: 'Node role', suggestions: [
FigSuggestion(name: 'agent'),
FigSuggestion(name: 'server')
])
]),
Option(
name: '--runtime-label',
description: 'Specify runtime labels in format',
args: [
Arg(
name: 'runtime-label',
description: 'Specify runtime labels in format "foo=bar"')
]),
Option(
name: '--timeout',
description:
'Maximum waiting time for \'--wait\' before canceling/returning',
args: [
Arg(
name: 'timeout',
description:
'Maximum waiting time for \'--wait\' before canceling/returning')
]),
Option(
name: ['-t', '--token'],
description: 'Override cluster token',
args: [Arg(name: 'token')]),
Option(
name: '--wait',
description: 'Wait for the node(s) to be ready before returning')
]),
Subcommand(name: 'delete', description: 'Delete a node', args: [
Arg(
name: 'Node Name',
description: 'Name of the node',
generators: NodeGenerator)
], options: [
Option(
name: ['-a', '--all'], description: 'Delete all existing nodes'),
Option(
name: ['-r', '--registry'], description: 'Also delete registries')
]),
Subcommand(
name: ['edit', 'update'],
description: '[EXPERIMENTAL] Edit node(s)',
args: [
Arg(
name: 'Node Name',
description: 'Name of the node',
generators: NodeGenerator)
],
options: [
Option(
name: '--port-add',
description: 'Map ports from the node container to the host',
args: [
Arg(
name: 'port-add',
description:
'Map ports from the node container to the host')
])
]),
Subcommand(
name: ['list', 'ls', 'get'],
description: 'List nodes',
options: [
Option(
name: '--no-headers',
description: 'Don\'t print headers (default print headers)'),
Option(
name: ['-o', '--output'],
description: 'Output format',
args: [
Arg(
name: 'output',
description: 'Output format',
suggestions: [
FigSuggestion(name: 'json'),
FigSuggestion(name: 'yaml')
])
])
]),
Subcommand(name: 'start', description: 'Start a node', args: [
Arg(
name: 'Node Name',
description: 'Name of the node',
generators: NodeGenerator)
]),
Subcommand(name: 'stop', description: 'Stop a node', args: [
Arg(
name: 'Node Name',
description: 'Name of the node',
generators: NodeGenerator)
])
]),
Subcommand(
name: ['registry', 'registries', 'reg'],
description: 'Manage registry/registries',
subcommands: [
Subcommand(
name: 'create',
description: 'Create a new registry',
args: [
Arg(
name: 'Registry Name',
description: 'Name of the registry')
],
options: [
Option(
name: '--default-network',
// TS_UNCONVERTED_START (description)
// `Specify the network connected to the registry (default "bridge")`
// TS_UNCONVERTED_END
description: null),
Option(
name: ['-i', '--image'],
// TS_UNCONVERTED_START (description)
// `Specify image used for the registry (default "docker.io/library/registry:2")`
// TS_UNCONVERTED_END
description: null,
args: [Arg(name: 'image')]),
Option(
name: '--no-help',
description:
'Disable the help text (How-To use the registry)'),
Option(
name: ['-p', '--port'],
description:
'Select which port the registry should be listening on your machine (localhost) (Format: [HOST:]HOSTPORT)',
args: [Arg(name: 'port')]),
Option(
name: '--proxy-password',
description:
'Specify the password of the proxied remote registry',
args: [Arg(name: 'proxy-password')]),
Option(
name: '--proxy-remote-url',
description:
'Specify the url of the proxied remote registry',
args: [Arg(name: 'proxy-remote-url')]),
Option(
name: '--proxy-username',
description:
'Specify the username of the proxied remote registry',
args: [Arg(name: 'proxy-username')]),
Option(
name: ['-v', '--volume'],
description:
'Mount volumes into the registry node (Format: [SOURCE:]DEST',
args: [Arg(name: 'volume')])
]),
Subcommand(
name: ['delete', 'del', 'rm'],
description: 'Delete registry/registries',
args: [
Arg(
name: 'Registry Name',
description: 'Name of the registry',
generators: RegistryGenerator)
],
options: [
Option(name: ['-a', '--all'])
]),
Subcommand(
name: ['list', 'ls', 'get'],
description: 'List registries',
args: [
Arg(
name: 'Registry Name',
description: 'Name of the registry',
generators: RegistryGenerator,
isOptional: true)
],
options: [
Option(
name: '--no-headers',
description:
'Don\'t print headers (default print headers)'),
Option(
name: ['-o', '--output'],
description: 'Output format',
args: [
Arg(
name: 'output',
description: 'Output format',
suggestions: [
FigSuggestion(name: 'json'),
FigSuggestion(name: 'yaml')
])
])
])
]),
Subcommand(
name: 'version', description: 'Show k3d and default k3s version')
],
options: [
Option(
name: ['-h', '--help'],
description: 'Help for k3d',
isPersistent: true),
Option(
name: '--verbose', description: 'Verbose output', isPersistent: true),
Option(name: '--trace', description: 'Trace output', isPersistent: true),
Option(name: '--version', description: 'Print version information'),
Option(
name: '--timestamps',
description: 'Print timestamp in log output',
isPersistent: true)
]);