Skip to content

Commit

Permalink
kube: rke2 support
Browse files Browse the repository at this point in the history
  • Loading branch information
karmab committed Jun 27, 2024
1 parent 23b2050 commit da75f06
Show file tree
Hide file tree
Showing 17 changed files with 663 additions and 5 deletions.
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ recursive-include kvirt/cluster/kubeadm *
recursive-include kvirt/cluster/microshift *
recursive-include kvirt/cluster/openshift *
recursive-include kvirt/cluster/hypershift *
recursive-include kvirt/cluster/rke2 *
recursive-include kvirt/cluster/profiles *
recursive-include kvirt/version *
recursive-include kvirt/common *
Expand Down
6 changes: 6 additions & 0 deletions kvirt/baseconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from kvirt.cluster import kubeadm
from kvirt.cluster import microshift
from kvirt.cluster import openshift
from kvirt.cluster import rke2
from kvirt import common
from kvirt.common import error, pprint, warning, container_mode, ssh, scp, NoAliasDumper
from kvirt import defaults as kdefaults
Expand Down Expand Up @@ -1064,6 +1065,11 @@ def info_kube_openshift(self, quiet, web=False):
inputfile = f'{plandir}/ctlplanes.yml'
self.info_plan(inputfile, quiet=quiet, web=web)

def info_kube_rke2(self, quiet, web=False):
plandir = os.path.dirname(rke2.create.__code__.co_filename)
inputfile = f'{plandir}/ctlplanes.yml'
self.info_plan(inputfile, quiet=quiet, web=web)

def info_openshift_sno(self, quiet, web=False):
plandir = os.path.dirname(openshift.create.__code__.co_filename)
inputfile = f'{plandir}/sno.yml'
Expand Down
58 changes: 58 additions & 0 deletions kvirt/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -1930,6 +1930,11 @@ def create_openshift_sno(args):
create_kube(args)


def create_rke2_kube(args):
args.type = 'rke2'
create_kube(args)


def delete_kube(args):
clusters = args.cluster
yes = args.yes
Expand Down Expand Up @@ -1999,6 +2004,11 @@ def scale_openshift_kube(args):
scale_kube(args)


def scale_rke2_kube(args):
args.type = 'rke2'
scale_kube(args)


def update_generic_kube(args):
args.type = 'generic'
update_kube(args)
Expand All @@ -2024,6 +2034,11 @@ def update_k3s_kube(args):
update_kube(args)


def update_rke2_kube(args):
args.type = 'rke2'
update_kube(args)


def update_kube(args):
cluster = args.cluster
_type = args.type
Expand Down Expand Up @@ -2356,6 +2371,8 @@ def info_kube(args):
baseconfig.info_kube_microshift(quiet=True)
elif kubetype == 'k3s':
baseconfig.info_kube_k3s(quiet=True)
elif kubetype == 'rke2':
baseconfig.info_kube_rke2(quiet=True)
elif kubetype == 'gke':
baseconfig.info_kube_gke(quiet=True)
elif kubetype == 'aks':
Expand Down Expand Up @@ -2429,6 +2446,11 @@ def info_openshift_sno(args):
info_kube(args)


def info_rke2_kube(args):
args.kubetype = 'rke2'
info_kube(args)


def info_network(args):
name = args.name
pprint(f"Providing information about network {name}...")
Expand Down Expand Up @@ -3840,6 +3862,19 @@ def cli():
epilog=kubeopenshiftcreate_epilog,
formatter_class=rawhelp)

kuberke2create_desc = 'Create Rke2 Kube'
kuberke2create_epilog = f"Examples:\n\n{examples.kuberke2create}"
kuberke2create_parser = argparse.ArgumentParser(add_help=False, parents=[parent_parser])
kuberke2create_parser.add_argument('-f', '--force', action='store_true', help='Delete existing cluster first')
kuberke2create_parser.add_argument('-t', '--threaded', help='Run threaded', action='store_true')
kuberke2create_parser.add_argument('cluster', metavar='CLUSTER', nargs='?', type=valid_cluster)
kuberke2create_parser.set_defaults(func=create_rke2_kube)
kubecreate_subparsers.add_parser('rke2', parents=[kuberke2create_parser],
description=kuberke2create_desc,
help=kuberke2create_desc,
epilog=kuberke2create_epilog,
formatter_class=rawhelp)

lbcreate_desc = 'Create Load Balancer'
lbcreate_epilog = f"Examples:\n\n{examples.lbcreate}"
lbcreate_parser = create_subparsers.add_parser('lb', description=lbcreate_desc, help=lbcreate_desc,
Expand Down Expand Up @@ -4694,6 +4729,12 @@ def cli():
kubeopenshiftinfo_parser.add_argument('cluster', metavar='CLUSTER', nargs='?', type=valid_cluster)
kubeopenshiftinfo_parser.set_defaults(func=info_openshift_kube)

kuberke2info_desc = 'Info Rke2 Kube'
kuberke2info_parser = kubeinfo_subparsers.add_parser('rke2', description=kuberke2info_desc, help=kuberke2info_desc,
parents=[output_parser])
kuberke2info_parser.add_argument('cluster', metavar='CLUSTER', nargs='?', type=valid_cluster)
kuberke2info_parser.set_defaults(func=info_rke2_kube)

networkinfo_desc = 'Info Network'
networkinfo_parser = info_subparsers.add_parser('network', description=networkinfo_desc, help=networkinfo_desc,
aliases=['net'])
Expand Down Expand Up @@ -5109,6 +5150,16 @@ def cli():
help=kubeopenshiftscale_desc,
epilog=kubeopenshiftscale_epilog, formatter_class=rawhelp)

kuberke2scale_desc = 'Scale Rke2 Kube'
kuberke2scale_epilog = f"Examples:\n\n{examples.kuberke2scale}"
kuberke2scale_parser = argparse.ArgumentParser(add_help=False, parents=[parent_parser])
kuberke2scale_parser.add_argument('-c', '--ctlplanes', help='Total number of ctlplanes', type=int)
kuberke2scale_parser.add_argument('-w', '--workers', help='Total number of workers', type=int)
kuberke2scale_parser.add_argument('cluster', metavar='CLUSTER', type=valid_cluster, default='myrke2')
kuberke2scale_parser.set_defaults(func=scale_rke2_kube)
kubescale_subparsers.add_parser('rke2', parents=[kuberke2scale_parser], description=kuberke2scale_desc,
help=kuberke2scale_desc, epilog=kuberke2scale_epilog, formatter_class=rawhelp)

vmscp_desc = 'Scp Into Vm'
vmscp_epilog = None
vmscp_parser = argparse.ArgumentParser(add_help=False)
Expand Down Expand Up @@ -5308,6 +5359,13 @@ def cli():
description=kubeopenshiftupdate_desc,
help=kubeopenshiftupdate_desc)

kuberke2update_desc = 'Update Rke2 Kube'
kuberke2update_parser = argparse.ArgumentParser(add_help=False, parents=[parent_parser])
kuberke2update_parser.add_argument('cluster', metavar='CLUSTER', type=valid_cluster, default='myrke2')
kuberke2update_parser.set_defaults(func=update_rke2_kube)
kubeupdate_subparsers.add_parser('rke2', parents=[kuberke2update_parser], description=kuberke2update_desc,
help=kuberke2update_desc)

profileupdate_desc = 'Update Profile'
profileupdate_parser = update_subparsers.add_parser('profile', description=profileupdate_desc,
help=profileupdate_desc)
Expand Down
4 changes: 2 additions & 2 deletions kvirt/cluster/kubeadm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def get_release(version):
def scale(config, plandir, cluster, overrides):
storedparameters = overrides.get('storedparameters', True)
plan = cluster
data = {'cluster': cluster, 'sslip': False, 'kube': cluster, 'kubetype': 'generic', 'image': 'centos8stream',
data = {'cluster': cluster, 'sslip': False, 'kube': cluster, 'kubetype': 'generic', 'image': 'centos9stream',
'extra_scripts': []}
data['basedir'] = '/workdir' if container_mode() else '.'
cluster = data.get('cluster')
Expand Down Expand Up @@ -205,7 +205,7 @@ def create(config, plandir, cluster, overrides):
return {'result': 'failure', 'reason': msg}
data['basedir'] = '/workdir' if container_mode() else '.'
cluster = data.get('cluster')
image = data.get('image', 'centos8stream')
image = data.get('image', 'centos9stream')
data['ubuntu'] = 'ubuntu' in image.lower() or len([u for u in UBUNTUS if u in image]) > 0
clusterdir = os.path.expanduser(f"~/.kcli/clusters/{cluster}")
if os.path.exists(clusterdir):
Expand Down
Loading

0 comments on commit da75f06

Please sign in to comment.