Skip to content

feat: Add RKE2 as alternative Kubernetes distribution for service cluster WIP#4566

Open
j0hnL wants to merge 13 commits into
stagingfrom
feature/rke2-service-cluster
Open

feat: Add RKE2 as alternative Kubernetes distribution for service cluster WIP#4566
j0hnL wants to merge 13 commits into
stagingfrom
feature/rke2-service-cluster

Conversation

@j0hnL

@j0hnL j0hnL commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

Add support for deploying RKE2 (Rancher Kubernetes Engine 2) as an alternative to vanilla Kubernetes (kubeadm) for the service cluster. The distribution is selected by listing service_rke2 (instead of service_k8s) in software_config.json and configuring the new service_rke2_k8s_cluster block in omnia_config.yml.

How to use

  1. In input/software_config.json, replace service_k8s with service_rke2 in the softwares list and set its "version" (e.g. 1.35.1)
  2. In input/omnia_config.yml, uncomment and configure the service_rke2_k8s_cluster block with deployment: true (only one of service_k8s_cluster / service_rke2_k8s_cluster may have deployment: true)
  3. Ensure the cluster has an entry in high_availability_config.yml — the kube-vip VIP is required for cluster join
  4. Run the pipeline as normal (local_repo.ymlbuild_image_x86_64.ymldiscovery.yml)

Configuration changes

  • New service_rke2_k8s_cluster block in omnia_config.yml with schema validation in omnia_config.json (supported CNIs: calico, canal, cilium, flannel)
  • Validation rejects service_k8s and service_rke2 being present together
  • rke2 (stable/1.35 channel) and rke2-common RPM repositories added to local_repo_config.yml

Pipeline integration

  • provision.yml: enable service_k8s tag when service_rke2 is in software_config.json
  • include_software_config.yml / validate_software_config_json.yml: detect service_rke2, set support facts, handle arch and version
  • common_validation.py: validate service_rke2 cluster configuration
  • image_package_collector.py: select service_rke2.json for image builds
  • k8s_config/main.yml: branch NFS setup on k8s_distro; create_rke2_config_nfs.yml reads NFS share details from storage_config.yml mounts
  • configure_cloud_init_group.yml: select RKE2-specific cloud-init templates

New files

  • 3 RKE2 cloud-init templates (first server, additional server, agent)
  • create_rke2_config_nfs.yml for RKE2-specific NFS setup
  • service_rke2.json package definitions for RHEL 10.0 x86_64

Key differences from kubeadm path

  • RKE2 uses built-in containerd (no CRI-O); RKE2 manages the CNI lifecycle
  • Token-based cluster join via the kube-vip VIP on port 9345 (RKE2 supervisor API)
  • kube-vip runs as a kubelet static pod (/var/lib/rancher/rke2/agent/pod-manifests/) with the kubeconfig mounted at /etc/kubernetes/admin.conf
  • Air-gapped system images: official RKE2 image tarballs (core + selected CNI, v1.35.1+rke2r1) are downloaded by local_repo, staged on the NFS share, and auto-imported from /var/lib/rancher/rke2/agent/images/ on every node
  • registries.yaml mirrors public registries to the Pulp mirror for all other images

Backward compatibility

Existing kubeadm deployment is completely unaffected when service_k8s is selected (the default). All branching logic only activates for service_rke2.

@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch 3 times, most recently from f513dc2 to 11db64e Compare May 26, 2026 19:22
@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch 2 times, most recently from 0759230 to b4bff18 Compare May 27, 2026 14:29
@j0hnL j0hnL changed the base branch from main to pub/q2_dev May 27, 2026 14:29
@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch from b4bff18 to ea1db21 Compare May 27, 2026 15:03
@sujit-jadhav sujit-jadhav requested a review from snarthan May 27, 2026 15:40

@sujit-jadhav sujit-jadhav left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

input/omnia_config.yml

Can we segrigate the blocks as per the k8s destribution?

service_k8s_cluster:

  • cluster_name: service_cluster
    deployment: true
    etcd_on_local_disk: false
    k8s_distro: "kubeadm"
    k8s_cni: "calico"
    pod_external_ip_range: "172.16.107.170-172.16.107.200"
    k8s_service_addresses: "10.233.0.0/18"
    k8s_pod_network_cidr: "10.233.64.0/18"
    nfs_storage_name: "nfs_k8s"
    k8s_crio_storage_size: "20G"
    csi_powerscale_driver_secret_file_path: ""
    csi_powerscale_driver_values_file_path: ""

We can add new block:
service_rke2_k8s_cluster

and have specific settings for it.

I will ask team to change the existing service_k8s_cluster to service_upstream_k8s_cluster

Same way we can add service_charmed_k8s_cluster for canonical.

service_upstream_k8s_cluster
service_rke2_k8s_cluster
service_charmed_k8s_cluster

"cluster": [
{ "package": "docker.io/library/busybox", "type": "image", "tag": "1.36" },
{ "package": "firewalld", "type": "rpm", "repo_name": "x86_64_baseos" },
{ "package": "python3-firewall", "type": "rpm", "repo_name": "x86_64_baseos" },

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

software_config.json changes required to add service_rke2 and need to add input validation for the samea

@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch from ea1db21 to 7cb6f0c Compare May 29, 2026 20:02
@j0hnL j0hnL requested a review from sujit-jadhav May 29, 2026 20:12
@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch from 7cb6f0c to f2ba1dc Compare June 2, 2026 15:02
@j0hnL j0hnL requested a review from abhishek-sa1 June 2, 2026 16:17
@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch from f606d62 to 174c1cb Compare June 16, 2026 14:53
@j0hnL

j0hnL commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator Author

Compute RKE2 Cluster Support

This update adds support for deploying a separate RKE2-based compute Kubernetes cluster that operates independently alongside the existing service cluster (kubeadm or RKE2) and Slurm clusters.

Key Design Decisions

  • Distinct functional groups: compute_kube_control_plane_first, compute_kube_control_plane, compute_kube_node — fully independent from service_kube_* groups, enabling users to deploy service K8s + Slurm + compute RKE2 simultaneously.
  • Non-overlapping CIDRs: Compute cluster defaults to 10.234.0.0/18 (services) and 10.234.64.0/18 (pods), avoiding collisions with the service cluster's 10.233.x.x ranges.
  • No service-layer images: The compute cluster package definition (compute_rke2.json) includes only core RKE2, MetalLB, Helm, and NFS provisioner — telemetry, Kafka, MySQL, and iDRAC images are excluded.
  • Fully additive: All changes are additive; no existing service_k8s, service_rke2, or slurm code paths are modified.

Files Changed (18 files, +1626 / -16)

Configuration:

  • input/software_config.json — Added compute_rke2 subgroups and compute_kube_* entries in additional_packages
  • input/omnia_config.yml — Added compute_rke2_k8s_cluster config block (commented out by default)
  • common/.../schema/omnia_config.json — Added JSON schema for compute_rke2_k8s_cluster
  • common/.../config.py — Added compute_kube_* to FUNCTIONAL_GROUP_LAYER_MAP, ADDITIONAL_PACKAGES_SUPPORTED_SUBGROUPS, and input_file_inventory

Package Definitions (new):

  • input/config/x86_64/rhel/10.0/compute_rke2.json — RKE2 core packages, CNI image tarballs, MetalLB, Helm, NFS provisioner

Validation:

  • common/.../common_validation.py — x86_64 arch enforcement for compute_rke2, subgroup requirement, NFS matching, cluster_set deployment validation
  • local_repo/.../validate_software_config_json.yml — Detect compute_rke2_support fact
  • provision/.../include_software_config.yml — Initialize and set compute_rke2_support fact

Pipeline:

  • provision/provision.yml — Added compute_rke2 to omnia_run_tags
  • common/.../image_package_collector.py — Added compute_k8s_functional_groups set and compute_rke2.json mapping

Cloud-Init Templates (new):

  • ci-group-compute_kube_control_plane_first_x86_64.yaml.j2 — First control plane: RKE2 server init, kube-vip, MetalLB, NFS provisioner, token sharing via NFS
  • ci-group-compute_kube_control_plane_x86_64.yaml.j2 — Additional control planes: join via VIP + token from NFS
  • ci-group-compute_kube_node_x86_64.yaml.j2 — Worker nodes: RKE2 agent join via VIP + token
  • configure_cloud_init_group.yml — Routes compute_kube_* groups to rke2/ template directory
  • configure_ochami/vars/main.yml — Exposes all compute_* variables from OIM host

NFS Provisioning (new):

  • k8s_config/tasks/create_compute_rke2_config_nfs.yml — Compute cluster NFS setup (SSH keys, MetalLB manifest, Helm, NFS provisioner, RKE2 airgap images)
  • k8s_config/tasks/main.yml — Includes compute RKE2 NFS task when compute_rke2_support is true
  • k8s_config/vars/main.yml — Added compute_rke2_packages_file variable

Usage

To enable the compute RKE2 cluster:

  1. Add {"name": "compute_rke2", "version": "1.35.1", "arch": ["x86_64"]} to softwares in software_config.json
  2. Uncomment and configure compute_rke2_k8s_cluster in omnia_config.yml
  3. Add a corresponding HA entry in high_availability_config.yml
  4. Run provisioning as normal — the compute cluster deploys in parallel with service and Slurm clusters

@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch from 1f9885e to 3eaf74e Compare June 22, 2026 15:22
@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch from 271ed98 to 31420a4 Compare July 14, 2026 14:49
@j0hnL j0hnL changed the base branch from pub/q2_dev_archieve to staging July 14, 2026 14:56
j0hnL and others added 8 commits July 14, 2026 09:59
…ster

Add support for deploying RKE2 (Rancher Kubernetes Engine 2) as an alternative
to vanilla Kubernetes (kubeadm) for the service cluster. Users can choose the
distribution via the new k8s_distro field in omnia_config.yml.

Configuration changes:
- Add k8s_distro field to service_k8s_cluster in omnia_config.yml (default: kubeadm)
- Update omnia_config.json schema to validate k8s_distro enum (kubeadm/rke2)
- Expand k8s_cni enum to include canal, cilium (RKE2-supported CNIs)

Pipeline integration:
- discovery.yml: Enable service_k8s tag when service_rke2 is in software_config.json
- include_software_config.yml: Detect service_rke2 and set service_rke2_support fact
- validate_software_config_json.yml: Handle service_rke2 arch and version detection
- common_validation.py: Accept service_rke2 for cluster validation
- image_package_collector.py: Dynamically select service_rke2.json for image builds
- k8s_config/main.yml: Branch NFS setup based on k8s_distro
- configure_cloud_init_group.yml: Select RKE2-specific templates when k8s_distro=rke2

New files:
- 3 RKE2 cloud-init templates (first server, additional server, agent)
- create_rke2_config_nfs.yml for RKE2-specific NFS directory setup
- service_rke2.json package definitions for RHEL 10.0 x86_64

Key differences from kubeadm path:
- RKE2 uses built-in containerd (no CRI-O)
- RKE2 manages CNI lifecycle (calico/canal/cilium/flannel)
- Token-based cluster join instead of kubeadm certificates
- kube-vip deployed as RKE2 static pod manifest
- RKE2 registries.yaml for Pulp mirror integration
- Port 9345 for RKE2 supervisor API

Existing kubeadm deployment is completely unaffected when k8s_distro=kubeadm (default).

Signed-off-by: John Lockman <j.lockman@dell.com>
- Read NFS share details from storage_config.yml 'mounts' (nfs_client_params
  no longer exists); use k8s_nfs_server_path in cloud-init fstab and
  nfs-client-provisioner values
- Add rke2 (stable/1.35) and rke2-common RPM repos to local_repo_config.yml;
  source rke2-selinux from rke2-common
- Set cluster-cidr/service-cidr on joining servers to avoid critical
  configuration value mismatch
- Stage official RKE2 airgap image tarballs (core + CNI, v1.35.1+rke2r1) on
  the NFS share and import via /var/lib/rancher/rke2/agent/images so system
  images work offline
- Deploy kube-vip as a kubelet static pod in agent/pod-manifests (not the
  server/manifests AddOn dir), mount kubeconfig at /etc/kubernetes/admin.conf,
  and place it after rke2.yaml exists to avoid hostPath dir race

Signed-off-by: John Lockman <j.lockman@dell.com>
- Fix validation guard: use 'service_rke2' in tag_names (not 'service_k8s') when populating service_rke2_k8s_cluster for validation
- Fix airgap image download: url used .tar.gz extension but files are .tar.zst
- Add pod_external_ip_range and k8s_pod_network_cidr to required fields in omnia_config.json schema
- Fix set -e placement: move to top of inline shell block in additional control plane cloud-init
- Fix heredoc indentation: config.yaml content was over-indented by 2 spaces producing invalid YAML
- Fix omnia_config.yml example: deployment should be true, not false
- Move RKE2 repo comments inline with the two new repo entries in local_repo_config.yml
- Add arch validation: error if service_rke2 is configured with non-x86_64 arch
- Remove redundant inline comments across cloud-init templates and image_package_collector.py
- Remove unused HELM_VERSION variable from install-helm.sh in both CP templates
- Fix typo: 'nfs sever' → 'nfs server' in create_rke2_config_nfs.yml task name

Signed-off-by: John Lockman <jlockman3@gmail.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add compute_rke2 as an independent Kubernetes cluster type that can
coexist with service_k8s (kubeadm), service_rke2, and slurm clusters.

Configuration:
- software_config.json: add compute_rke2 subgroups (compute_kube_*)
- omnia_config.yml: add compute_rke2_k8s_cluster block (commented)
- omnia_config.json: add compute_rke2_k8s_cluster schema
- config.py: add compute_kube_* to FUNCTIONAL_GROUP_LAYER_MAP

Packages:
- compute_rke2.json: RKE2 core packages without service-layer images

Validation:
- common_validation.py: x86_64 arch check, subgroup requirement,
  NFS matching, cluster_set deployment validation for compute_rke2
- validate_software_config_json.yml: detect compute_rke2_support
- include_software_config.yml: set compute_rke2_support fact

Pipeline:
- provision.yml: add compute_rke2 to omnia_run_tags
- image_package_collector.py: add compute_kube_* functional groups

Cloud-init:
- 3 new templates: control_plane_first, control_plane, node
- configure_cloud_init_group.yml: route compute_kube_* to rke2/

NFS:
- create_compute_rke2_config_nfs.yml: compute cluster NFS setup
- k8s_config/tasks/main.yml: include compute RKE2 NFS task

Signed-off-by: John Lockman <jlockman3@gmail.com>
Change x86_64_baseos to baseos and x86_64_appstream to appstream
to match the naming convention used by service_k8s_v1.35.1.json
and the RHEL subscription repo configuration.

Signed-off-by: John Lockman <jlockman3@gmail.com>
rpm.rancher.io returns HTTP 403 to Python urllib default User-Agent,
causing the repo URL validation to fail even though the repo is
accessible. Add 'rancher' to the skip list alongside k8s, cri-o,
and other CDNs that block automated clients.

Signed-off-by: John Lockman <jlockman3@gmail.com>
Pulp uses self-signed SSL certificates. The generated repo file
in /etc/yum.repos.d/pulp.repo must include sslverify=0 for each
section, otherwise dnf makecache fails with SSL verification errors
when Ansible regenerates the DNF cache.

Signed-off-by: John Lockman <jlockman3@gmail.com>
- download_common.py: use verify=False for Pulp self-signed cert
  downloads instead of verify=PULP_SSL_CA_CERT which fails with
  self-signed certificates
- compute_rke2.json: fix package names for RHEL 10
  - vim -> vim-enhanced (correct RPM name)
  - python3.12 -> python3 (RHEL 10 default Python package)

Signed-off-by: John Lockman <jlockman3@gmail.com>
j0hnL added 4 commits July 14, 2026 10:01
The HA cluster name extraction loop only processed
service_k8s_cluster_ha, causing the cluster_name lookup for
compute_rke2_k8s_cluster_ha to fail (comparing string against
list of dicts instead of list of names).

Signed-off-by: John Lockman <jlockman3@gmail.com>
Pulp generates self-signed SSL certificates for its HTTPS content
server. Multiple Ansible get_url tasks and image-build config
templates download manifests, tarballs, and packages from Pulp
without setting validate_certs: false, causing SSL verification
failures.

Affected areas:
- provision/k8s_config: 15 get_url tasks across create_k8s_config_nfs,
  create_rke2_config_nfs, create_compute_rke2_config_nfs, and
  get_powerscale_dependencies
- build_image_x86_64: 2 config templates (rhel-base-config.yaml.j2,
  rhel-compute-config.yaml.j2) that generate repo configs used by
  dnf inside the image-build container

This is safe because all affected downloads are from the local Pulp
mirror (192.168.x.x:2225), not external sources.

Signed-off-by: John Lockman <jlockman3@gmail.com>
The high_availability_config.json schema only allows
service_k8s_cluster_ha as a property. Add compute_rke2_k8s_cluster_ha
with the same structure (cluster_name, enable_k8s_ha, virtual_ip_address)
so the compute RKE2 HA configuration passes schema validation.

Signed-off-by: John Lockman <jlockman3@gmail.com>
Pulp downloads and stores RKE2 airgap image tarballs as .tar.gz
regardless of the original .tar.zst extension in the source URL.
Update the NFS config download tasks to use .tar.gz when fetching
from the local Pulp mirror.

Signed-off-by: John Lockman <jlockman3@gmail.com>
@j0hnL j0hnL force-pushed the feature/rke2-service-cluster branch from 31420a4 to c52234b Compare July 14, 2026 15:03
ansible-lint ignore-errors rule requires failed_when instead of
ignore_errors for explicit error condition specification.

Signed-off-by: John Lockman <jlockman3@gmail.com>
@j0hnL

j0hnL commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

Updated: RKE2 Service Cluster + Compute RKE2 Cluster + Bug Fixes

This PR now contains three areas of work:

1. RKE2 Service Cluster (original scope)

Deploy RKE2 as an alternative to kubeadm for the service Kubernetes cluster.

2. Compute RKE2 Cluster (new)

Deploy a separate, independent RKE2-based compute Kubernetes cluster alongside the service cluster (kubeadm or RKE2) and Slurm.

3. Bug Fixes Found During Testing

Fixes for issues discovered while deploying on a live 17-node lab cluster with RHEL 10.0.


How to Use

Service RKE2 (instead of vanilla kubeadm)

In software_config.json, replace service_k8s with service_rke2:

{"name": "service_rke2", "version": "1.35.1", "arch": ["x86_64"]}

In omnia_config.yml, uncomment service_rke2_k8s_cluster and comment out service_k8s_cluster.

Compute RKE2 (independent cluster)

In software_config.json, add alongside your existing service cluster:

{"name": "compute_rke2", "version": "1.35.1", "arch": ["x86_64"]}

In omnia_config.yml, uncomment compute_rke2_k8s_cluster:

compute_rke2_k8s_cluster:
  - cluster_name: compute_cluster
    deployment: true
    k8s_cni: "calico"
    pod_external_ip_range: "192.168.5.150-192.168.5.169"  # must not overlap service cluster
    k8s_service_addresses: "10.234.0.0/18"                 # must not overlap service cluster
    k8s_pod_network_cidr: "10.234.64.0/18"                 # must not overlap service cluster
    nfs_storage_name: "nfs_compute_k8s"

In high_availability_config.yml, add:

compute_rke2_k8s_cluster_ha:
  - cluster_name: compute_cluster
    enable_k8s_ha: true
    virtual_ip_address: "192.168.5.2"    # unused IP on admin network

In storage_config.yml, add an NFS mount for the compute cluster:

  - name: "nfs_compute_k8s"
    source: "192.168.5.100:/mnt/share/omnia_compute_k8s"
    mount_point: "/opt/omnia/compute_k8s_mount"
    fs_type: "nfs"
    mnt_opts: "nosuid,rw,sync,hard,intr"
    mount_on_oim: true
    functional_group_prefix: ["compute_kube"]

In pxe_mapping_file.csv, assign nodes to compute roles:

compute_kube_control_plane_first_x86_64,grp7,SVCTAG1,,c138,MAC,...
compute_kube_control_plane_x86_64,grp8,SVCTAG2,,c139,MAC,...
compute_kube_node_x86_64,grp9,SVCTAG3,,c140,MAC,...

Exactly one node must use compute_kube_control_plane_first_x86_64. This node bootstraps the cluster and shares the join token via NFS.

Supported Combinations

Service Cluster Compute Cluster Slurm Supported
service_k8s (kubeadm) slurm_custom Yes
service_k8s (kubeadm) compute_rke2 slurm_custom Yes
service_rke2 slurm_custom Yes
service_rke2 compute_rke2 slurm_custom Yes

Files Changed (13 commits, 32 files)

Service RKE2 (commits 1-4)

  • input/config/x86_64/rhel/10.0/service_rke2.json — RKE2 package definitions
  • input/omnia_config.ymlservice_rke2_k8s_cluster config block
  • input/software_config.jsonservice_rke2 subgroups
  • input/local_repo_config.yml — RKE2 repo URLs
  • provision/roles/k8s_config/tasks/create_rke2_config_nfs.yml — service RKE2 NFS setup
  • provision/roles/configure_ochami/templates/cloud_init/rke2/ — 3 service RKE2 cloud-init templates
  • common/library/module_utils/input_validation/validation_flows/common_validation.py — service_rke2 validation
  • common/library/modules/image_package_collector.py — service RKE2 functional groups

Compute RKE2 (commit 5)

  • input/config/x86_64/rhel/10.0/compute_rke2.json — compute RKE2 packages (no telemetry/service images)
  • input/omnia_config.ymlcompute_rke2_k8s_cluster config block
  • common/library/module_utils/input_validation/schema/omnia_config.json — compute_rke2 schema
  • common/library/module_utils/input_validation/common_utils/config.pycompute_kube_* functional groups
  • provision/roles/k8s_config/tasks/create_compute_rke2_config_nfs.yml — compute cluster NFS setup
  • provision/roles/configure_ochami/templates/cloud_init/rke2/ — 3 compute RKE2 cloud-init templates
  • provision/roles/configure_ochami/tasks/configure_cloud_init_group.yml — route compute_kube_* to rke2/
  • provision/roles/configure_ochami/vars/main.yml — compute cluster variables
  • provision/roles/k8s_config/tasks/main.yml — include compute RKE2 NFS task
  • provision/roles/k8s_config/vars/main.ymlcompute_rke2_packages_file variable

Bug Fixes (commits 6-13)

  • compute_rke2.json: Fix repo names (x86_64_baseosbaseos, x86_64_appstreamappstream) and package names (vimvim-enhanced, python3.12python3) for RHEL 10
  • software_utils.py: Add "rancher" to URL reachability skip list — rpm.rancher.io returns HTTP 403 to Python urllib User-Agent
  • process_rpm_config.py: Add sslverify=0 to generated pulp.repo entries for Pulp self-signed SSL cert
  • download_common.py: Change verify=PULP_SSL_CA_CERT to verify=False — self-signed cert breaks Python requests verification
  • common_validation.py: Include compute_rke2_k8s_cluster_ha in HA config name extraction loop
  • high_availability_config.json: Add compute_rke2_k8s_cluster_ha to JSON schema
  • create_rke2_config_nfs.yml + create_compute_rke2_config_nfs.yml: Add validate_certs: false on all get_url tasks downloading from Pulp; fix .tar.zst.tar.gz for airgap tarballs
  • create_k8s_config_nfs.yml + get_powerscale_dependencies.yml: Add validate_certs: false on Pulp downloads
  • rhel-base-config.yaml.j2 + rhel-compute-config.yaml.j2: Add sslverify: false to build image repo entries
  • create_compute_rke2_config_nfs.yml: Replace ignore_errors with failed_when: false for ansible-lint

Pulp SSL Fix (Fixes #4836)

The Pulp SSL fixes in this PR address an Omnia-wide issue where Pulp's self-signed HTTPS certificate causes download failures in local_repo.yml, build_image_x86_64.yml, and provision.yml. See issue #4836 for full details.


Testing

Tested on a 17-node lab cluster (Dell R650, C6420, C6620, R750XA, R740xd) with RHEL 10.0:

  • prepare_oim.yml — 15 containers deployed
  • local_repo.yml — all packages synced (service_k8s + compute_rke2)
  • build_image_x86_64.yml — 11 images built (3 service_k8s, 3 compute_rke2, slurm, login, base)
  • provision.yml — NFS shares populated, cloud-init configs generated, PXE/DHCP ready

@j0hnL j0hnL changed the title feat: Add RKE2 as alternative Kubernetes distribution for service cluster feat: Add RKE2 as alternative Kubernetes distribution for service cluster WIP Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants