Skip to content

feat: Add disconnected installation support for HCP KubeVirt on IBM Z - #532

Open
jpattara wants to merge 10 commits into
IBM:hcp-kubevirt-preqfrom
jpattara:hcp-kubevirt-disconnect
Open

feat: Add disconnected installation support for HCP KubeVirt on IBM Z#532
jpattara wants to merge 10 commits into
IBM:hcp-kubevirt-preqfrom
jpattara:hcp-kubevirt-disconnect

Conversation

@jpattara

Copy link
Copy Markdown
Contributor

Summary

Adds end-to-end disconnected (air-gapped) installation support for Hosted Control Plane (HCP) on KubeVirt targeting IBM Z (s390x). This builds on top of the existing connected HCP KubeVirt implementation and introduces new playbooks, a new role, and updates to all operator installer roles to handle disconnected environments through oc-mirror v2.

Changes

New Playbooks

disconnected_mirror_hcp_artifacts.yaml — mirrors all required OCP release, operator, and additional images to the local registry using oc-mirror v2.
disconnected_hcp_kubevirt_setup.yaml — applies the mirror manifests (IDMS, ITMS, CatalogSource, CAPI IDMS) and the registry CA trust bundle to the management cluster before operator installation.

jpattara added 4 commits July 14, 2026 16:52
Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
@jpattara
jpattara force-pushed the hcp-kubevirt-disconnect branch from e7365e7 to 53ab8e2 Compare July 14, 2026 11:22
jpattara added 2 commits July 14, 2026 22:56
Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
@isumitsolanki
isumitsolanki self-requested a review July 29, 2026 07:06
@isumitsolanki isumitsolanki self-assigned this Jul 29, 2026

@isumitsolanki isumitsolanki 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.

Hi @jpattara
Thanks for PR, Please address the below comments with respective line

name: <mirror-host-name>
ip: <mirror-host-ip>
user: root
cluster_resources_dir: /root/ocpinst_disconnected/working-dir/cluster-resources

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.

Hi @jpattara ,
Please change this hardcoded cluster_resources_dir to get the dynamic allocation based on user

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Taken care

name: hostpath-provisioner
storageclass_name: hostpath-csi
storage_size: 50Gi
storage_path: /var/hpvolumes

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.

Is it fixed path for HPP?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@isumitsolanki Yes, this path is fixed for HPP.

metallb:
version: stable
ip_pool:
- <ip-range> # e.g. 172.23.232.232-172.23.232.234

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.

can you remove this external ips and put x.x.x.x

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Done. I’ve removed the external IPs and replaced them with x.x.x.x.

full: false
packages:
- name: serverless-operator
- name: multicluster-engine

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.

This is common disconnected.yaml file it will be getting used in case of UPI and ABI disconnected installation.

Better to not touch the existing config, or if modification needed we need to do validation for ABI/UPI as well.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@isumitsolanki Basically I have just given examples of the packages for mirroring. Also have updated the catalog version to the latest versions. It doesn't break any existing config.

vars_files:
- "{{ inventory_dir }}/group_vars/secrets.yaml"
- "{{ inventory_dir }}/group_vars/hcp-kubevirt.yaml"
- "{{ playbook_dir }}/../inventories/default/group_vars/secrets.yaml"

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.

I can see directory of inventory file has been changed at multiple places I hope it has been tested thoroughly both connected and disconnected installation.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yes, It is tested for both connected and disconnected installation.


- name: Render CAPI/importer IDMS for disconnected registry
ansible.builtin.copy:
dest: /root/ansible_workdir/idms-capi.yaml

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.

please use user home directory here as well

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Taken care

Comment thread roles/install_hpp/tasks/main.yaml Outdated
state: present
src: /root/ansible_workdir/{{ hcp.hpp.name }}-cr.yaml
ansible.builtin.command:
cmd: oc apply -f /root/ansible_workdir/{{ hcp.hpp.name }}-cr.yaml

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.

please use user home directory here as well

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Taken care

Comment thread roles/install_hpp/tasks/main.yaml Outdated
state: present
src: /root/ansible_workdir/{{ hcp.hpp.storageclass_name }}-sc.yaml
ansible.builtin.command:
cmd: oc apply -f /root/ansible_workdir/{{ hcp.hpp.storageclass_name }}-sc.yaml

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.

please use user home directory here as well

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Taken care

when: (hcp.odf | default({})).catalogsource_image is defined and (hcp.odf | default({})).catalogsource_image | string | length > 0

- name: Deploy CatalogSource
ansible.builtin.command: oc apply -f /root/ansible_workdir/odf-CatalogSource.yaml

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.

please use user home directory here as well

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Taken care

oc login {{ vault_api_server }}
-u {{ vault_user_name }}
-p {{ vault_password }}
--insecure-skip-tls-verify=true

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.

Is it always required to login with TLS verification

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Not really, but Solution team and myself have faced x509 certificate issue while accessing the OCP cluster. So have added this flag to bypass the issue.

Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
@jpattara

Copy link
Copy Markdown
Contributor Author

Hi @jpattara Thanks for PR, Please address the below comments with respective line

@isumitsolanki All the comments mentioned has been addressed. Please take a look.

Signed-off-by: jpattara <Jibin.Pattara@ibm.com>
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.

2 participants