Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: create a net-install ISO #642

Merged
merged 2 commits into from
Feb 2, 2024
Merged

Feat: create a net-install ISO #642

merged 2 commits into from
Feb 2, 2024

Conversation

bk201
Copy link
Member

@bk201 bk201 commented Jan 24, 2024

Problem:

To create a net-install ISO.

Solution:

We can ship a net-install ISO without image tarballs since we already harvester/harvester#2670.

Related Issue:
harvester/harvester#4295

Test plan:

  • Build the code
  • Boot the net-install ISO (Its name is similar to harvester-74e9450-dirty-amd64-net-install.iso) and verify the installation. Both interactive mode and ipxe mode should work.

Additional context

  • Add a kernel parameter harvester.install.with_net_images=true to GRUB menuentry in the net-install ISO. The installer only preloads the harvester-cluste-repo image if it sees the parameter. We still preload this image to ease development.
  • The kernel parameter harvester.install.with_net_images=true also works for the ordinary ISO.

Copy link
Contributor

@tserong tserong left a comment

Choose a reason for hiding this comment

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

Neat!

I did a test build here and got an 839MB net-install ISO, vs. the 5.6GB regular ISO, and it runs through the interactive install quite quickly. After reboot it took a bit over 30 minutes to complete setup, although this is of course presumably due to downloading all those images over my Tasmanian internet connection :-)

A couple of questions:

  • Do we need to document the net-install ISO somewhere?
  • Can this work in an airgap environment, e.g.: via a proxy server?
  • Is there a good way to get better deployment progress than just looking at the console and waiting for it to show "Ready"? (I know I can ssh in and do things like journalctl -f and kubectl get pods -A ; kubectl get deployments -A, or run k9s... but I don't know how to tell exactly how far along we are...)

@bk201
Copy link
Member Author

bk201 commented Jan 31, 2024

Thanks for the reviewing!

A couple of questions:

  • Do we need to document the net-install ISO somewhere?

Good idea, I'll mention the change in the release note (there is a section ISO, e.g.: https://github.com/harvester/harvester/releases/tag/v1.2.1) that we have such an ISO.

  • Can this work in an airgap environment, e.g.: via a proxy server?

The user can mirror all images to a private registry and:

  • Create /etc/rancher/rke2/registries.yaml for RKE2
  • Create /etc/rancher/common/registries.yaml for wharfie

I guess this might work, but need to verify.

  • Is there a good way to get better deployment progress than just looking at the console and waiting for it to show "Ready"? (I know I can ssh in and do things like journalctl -f and kubectl get pods -A ; kubectl get deployments -A, or run k9s... but I don't know how to tell exactly how far along we are...)

That's one way except there are also daemon sets. Another way is to check the fleet bundles:

kubectl get bundles -A
NAMESPACE     NAME                         BUNDLEDEPLOYMENTS-READY   STATUS
fleet-local   fleet-agent-local            1/1
fleet-local   local-managed-system-agent   1/1
fleet-local   mcc-harvester                1/1
fleet-local   mcc-harvester-crd            1/1
fleet-local   mcc-rancher-logging-crd      1/1
fleet-local   mcc-rancher-monitoring-crd   1/1

Fleet keeps monitoring all resources in a helm are ready.

Copy link
Contributor

@Vicente-Cheng Vicente-Cheng left a comment

Choose a reason for hiding this comment

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

LGTM, tested with installation and basic operations work well.

@bk201 bk201 merged commit 3015bf2 into harvester:master Feb 2, 2024
5 checks passed
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