Giter VIP home page Giter VIP logo

harvester-ui's Introduction

Harvester

Build Status Go Report Card Releases Slack

Harvester is a modern, open, interoperable, hyperconverged infrastructure (HCI) solution built on Kubernetes. It is an open-source alternative designed for operators seeking a cloud-native HCI solution. Harvester runs on bare metal servers and provides integrated virtualization and distributed storage capabilities. In addition to traditional virtual machines (VMs), Harvester supports containerized environments automatically through integration with Rancher. It offers a solution that unifies legacy virtualized infrastructure while enabling the adoption of containers from core to edge locations.

harvester-ui

Overview

Harvester is an enterprise-ready, easy-to-use infrastructure platform that leverages local, direct attached storage instead of complex external SANs. It utilizes Kubernetes API as a unified automation language across container and VM workloads. Some key features of Harvester include:

  1. Easy to install: Since Harvester ships as a bootable appliance image, you can install it directly on a bare metal server with the ISO image or automatically install it using iPXE scripts.
  2. VM lifecycle management: Easily create, edit, clone, and delete VMs, including SSH-Key injection, cloud-init, and graphic and serial port console.
  3. VM live migration support: Move a VM to a different host or node with zero downtime.
  4. VM backup, snapshot, and restore: Back up your VMs from NFS, S3 servers, or NAS devices. Use your backup to restore a failed VM or create a new VM on a different cluster.
  5. Storage management: Harvester supports distributed block storage and tiering. Volumes represent storage; you can easily create, edit, clone, or export a volume.
  6. Network management: Supports using a virtual IP (VIP) and multiple Network Interface Cards (NICs). If your VMs need to connect to the external network, create a VLAN or untagged network.
  7. Integration with Rancher: Access Harvester directly within Rancher through Rancher’s Virtualization Management page and manage your VM workloads alongside your Kubernetes clusters.

The following diagram outlines a high-level architecture of Harvester:

architecture.svg

  • Longhorn is a lightweight, reliable, and easy-to-use distributed block storage system for Kubernetes.
  • KubeVirt is a virtual machine management add-on for Kubernetes.
  • Elemental for SLE-Micro 5.3 is an immutable Linux distribution designed to remove as much OS maintenance as possible in a Kubernetes cluster.

Hardware Requirements

To get the Harvester server up and running the following minimum hardware is required:

Type Requirements
CPU x86_64 only. Hardware-assisted virtualization is required. 8-core processor minimum for testing; 16-core or above required for production
Memory 32 GB minimum; 64 GB or above required for production
Disk Capacity 250 GB minimum for testing (180 GB minimum when using multiple disks); 500 GB or above required for production
Disk Performance 5,000+ random IOPS per disk (SSD/NVMe). Management nodes (first three nodes) must be fast enough for etcd
Network Card 1 Gbps Ethernet minimum for testing; 10Gbps Ethernet required for production
Network Switch Trunking of ports required for VLAN support

We recommend server-class hardware for best results. Laptops and nested virtualization are not officially supported.

Quick start

You can use the ISO to install Harvester directly on the bare-metal server to form a Harvester cluster. Users can add one or many compute nodes to join the existing cluster.

To get the Harvester ISO, download it from the Github releases.

During the installation, you can either choose to create a new Harvester cluster or join the node to an existing Harvester cluster.

  1. Mount the Harvester ISO file and boot the server by selecting the Harvester Installer option. iso-install.png
  2. Use the arrow keys to choose an installation mode. By default, the first node will be the management node of the cluster. iso-install-mode.png
    • Create a new Harvester cluster: Select this option to create an entirely new Harvester cluster.
    • Join an existing Harvester cluster: Select this option to join an existing Harvester cluster. You need the VIP and cluster token of the cluster you want to join.
    • Install Harvester binaries only: If you choose this option, additional setup is required after the first bootup.
  3. Choose the installation disk you want to install the Harvester cluster on and the data disk you want to store VM data on. By default, Harvester uses GUID Partition Table (GPT) partitioning schema for both UEFI and BIOS. If you use the BIOS boot, then you will have the option to select Master boot record (MBR). iso-choose-disks.png
    • Installation disk: The disk to install the Harvester cluster on.
    • Data disk: The disk to store VM data on. Choosing a separate disk to store VM data is recommended.
    • Persistent size: If you only have one disk or use the same disk for both OS and VM data, you need to configure persistent partition size to store system packages and container images. The default and minimum persistent partition size is 150 GiB. You can specify a size like 200Gi or 153600Mi.
  4. Configure the HostName of the node.
  5. Configure network interface(s) for the management network. By default, Harvester will create a bonded NIC named mgmt-bo, and the IP address can either be configured via DHCP or statically assigned. iso-config-network.png
  6. (Optional) Configure the DNS Servers. Use commas as a delimiter to add more DNS servers. Leave blank to use the default DNS server.
  7. Configure the virtual IP (VIP) by selecting a VIP Mode. This VIP is used to access the cluster or for other nodes to join the cluster. iso-config-vip.png
  8. Configure the cluster token. This token will be used for adding other nodes to the cluster.
  9. Configure and confirm a Password to access the node. The default SSH user is rancher.
  10. Configure NTP servers to make sure all nodes' times are synchronized. This defaults to 0.suse.pool.ntp.org. Use commas as a delimiter to add more NTP servers.
  11. (Optional) If you need to use an HTTP proxy to access the outside world, enter the proxy URL address here. Otherwise, leave this blank.
  12. (Optional) You can choose to import SSH keys by providing HTTP URL. For example, your GitHub public keys https://github.com/<username>.keys can be used.
  13. (Optional) If you need to customize the host with a Harvester configuration file, enter the HTTP URL here.
  14. Review and confirm your installation options. After confirming the installation options, Harvester will be installed on your host. The installation may take a few minutes to complete.
  15. Once the installation is complete, your node restarts. After the restart, the Harvester console displays the management URL and status. The default URL of the web interface is https://your-virtual-ip. You can use F12 to switch from the Harvester console to the Shell and type exit to go back to the Harvester console. iso-installed.png
  16. You will be prompted to set the password for the default admin user when logging in for the first time. first-login.png

Releases

NOTE:

  • <version>* means the release branch is under active support and will have periodic follow-up patch releases.
  • Latest release means the version is the latest release of the newest release branch.
  • Stable release means the version is stable and has been widely adopted by users.
  • EOL means that the software has reached the end of its useful life and no further code-level maintenance will be provided. You may continue to use the software within the terms of the licensing agreement.

https://github.com/harvester/harvester/releases

Release Version Type Release Note (Changelog) Upgrade Note
1.3* 1.3.1 Latest πŸ”— πŸ”—
1.2* 1.2.2 Stable πŸ”— πŸ”—
1.1* 1.1.3 EOL πŸ”— πŸ”—

Documentation

Find more documentation here.

Demo

Check out this demo to get a quick overview of the Harvester UI.

Source code

Harvester is 100% open-source software. The project source code is spread across a number of repos:

Name Repo Address
Harvester https://github.com/harvester/harvester
Harvester Dashboard https://github.com/harvester/dashboard
Harvester Installer https://github.com/harvester/harvester-installer
Harvester Network Controller https://github.com/harvester/harvester-network-controller
Harvester Cloud Provider https://github.com/harvester/cloud-provider-harvester
Harvester Load Balancer https://github.com/harvester/load-balancer-harvester
Harvester CSI Driver https://github.com/harvester/harvester-csi-driver
Harvester Terraform Provider https://github.com/harvester/terraform-provider-harvester

Community

If you need any help with Harvester, please join us at either our Slack #harvester channel or forums where most of our team hangs out at.

If you have any feedback or questions, feel free to file an issue.

License

Copyright (c) 2024 Rancher Labs, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

harvester-ui's People

Contributors

bashofmann avatar bk201 avatar codyrancher avatar daiyuzeng avatar dbason avatar dependabot[bot] avatar ericpromislow avatar futuretea avatar ibuildthecloud avatar juadk avatar lucidd avatar lvuch avatar mantis-toboggan-md avatar mook-as avatar morecache avatar n313893254 avatar neillsom avatar nmacd avatar nwmac avatar rawmind0 avatar richard-cox avatar tfiduccia avatar vincent99 avatar vocatan avatar westlywright avatar wgdzlh avatar wujun2016 avatar yzeng25 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

harvester-ui's Issues

Create Image UI polish

  • Put Image Name & Description on top (use name/description component)
  • Put Url field on second line
  • Take Label & Annotation out of tabs and move them below URL, like this (there might be a component for this?):
    image

Add Edit to host

We should add the ability to Edit the host &

  • Allow a friendly name to be set

  • Move the Network setting from setting into the edit host. Each host may have it's own physical NIC so setting one globally isn't a good idea?

Create Volumes UI polish

  • Top title should say "Volume: Create"

  • 1st line Name & Description component

  • Should have 3 tab component after

  • First tab should be Basic Information, 1st line Source & Image, 2nd line Size/Unit (1 UnitInput component) & Storage Class

  • Second tab should be Labels & Annotations (there is a component for this)

  • Third tab should be Advanced Options

Icons are not correct?

  • The icons in the Action menu are not the same ones we are using?
    image

  • We aren't using icons on the Left menu pane? Should these be here?
    image

Labels Enhancement

Now we can delete all labels of resources, maybe some labels should not be deleted.
We should provide the configuration that labels cannot be deleted in it.

Redesign home page to be a Dashboard

The home page needs to be changed to full Dashboard: We should probably discuss what info you would like to see in each section but I took a first shot:

image

Top Menu issues

Top left menu:

  • Cow should be 1/2 cow coming in from left
  • Harvester text is wrong font size - 14 px

Harvester:
image

Cluster Explorer:
image

Left menu pane:

  • Rename "Home" to "Dashboard"
    image

Template list page UI polish

  • Make each template their own "section"

  • Have name of template at top

  • Table column titles should be: State, Version, Age

  • Add set as default to the action menu on the left for each version.

image

SSH key configuration does not take effect

Version
master 11/17

Steps to reproduce

  1. Create an ssh key
  2. Create a VM and select the ssh key
  3. Failed to log in with the ssh key

Other details
The VM yaml is :

      volumes:
      - cloudInitNoCloud:
          userData: |
            #cloud-config
            # some other stuff...
            sshAuthorizedKeys:
              - >-
                ssh-rsa
                AAAAB3NzaC1yc2EAAAADAQABAAABAQCmAZFWNfXPfzV2o203bW1107LpQeynoQ4JhByXRDM3rd1gHW60Xdcbpr7Yi9JHiqSR7YIW+mMpmjacr9bwQ1EjkfsozxHrx69IFfvYRpasBaXdBdHD/Ye3DZ28rQvEEZbyWsa9bIWcWb/m/PPmb2I4p2gX7dGxFxR/DCwUyNk95pra+w5z2H7IyXMHwTI+60dV+GguHaWfCwA/LUnDsq253hJsmAvn4Sr3G2hXqO0x+bD7hWwJHYHi6z1ZU62W3ex7w6D/0+YNh1AhTCkBI9gSKOqnWbkAekbvItSKVVqN9IfkXvvZBsgKPKjledhAHnAvXjt/+Pfkq3RhSEZp7+iL

The expected key should be ssh_authorized_keys instead of sshAuthorizedKeys.
ref: https://cloudinit.readthedocs.io/en/latest/topics/examples.html

Reorder Left Menu pane

  • Dashboard
  • Hosts
  • Virtual Machines
  • Volumes
  • Images
  • Advanced ^ (drop-down menu - this is basically for things you set once or not often enough to show all the time)
    • VM Templates
    • Networks
    • SSH Keys
    • Users
    • Settings

Example:
image

Virtual Machine list page

  • Change top title from VirtualMachines to Virtual Machines
    image

  • Change left menu pane from Virtual Machine to Virtual Machines (add the s)
    image

  • Remove the console drop-down button and put the two actions in the action menu for each VM

Move this:
image

Into here:
image

  • Why is there a namespace field? Can I change where it is going? I didn't see that in the Create? If it's always going to be the same and I can't switch it can we remove this field?

Create Template UI polish

  • This should be exactly the same as Create Virtual Machine.

  • Only show "Set as Default" checkbox on the creation of more then 1 version.

add annotations

version: 1
config:
  - type: physical
    name: enp1s0
    subnets:
      - type: dhcp
  - type: physical
    name: enp2s0
    subnets:
      - type: static
        address: 10.10.1.110/24
        gateway: 10.10.1.0

Add networks.harvester.cattle.io/ips: [β€œ10.10.1.22/24”] to annotation when there is an address

failed to create multiple instances

Issues:

  1. failed to create multiple instances, the second VM shows
    Error creating DataVolume aa-disk-0-c5cs8: admission webhook "datavolume-validate.cdi.kubevirt.io" denied the request: Destination PVC already exists
  2. VM listing page did not show all new added VMs, need to refresh the page to get it to display correctly.

Log In shouldn't tell which field has failed - general message is better

Issue - when my log in has failed it tells me that my password has failed (recognized the user & failed the password). We shouldn't tell the user which field failed. No matter what fails it should say "Log in failed: Check your credentials, or your account may not be authorized to log in."

Settings list page

  • Make the settings page match the one we have for Cluster Manager (remove Age, add Value field to table and show the value for that setting) We have a component you should be using for this... connect with Vincent.

Table and list page should look like this:
image

Create VirtualMachine UI polish

  • On all drop-down that have a static list that is under 10 items, they should be marked so that the cursor doesn't show when I click on the drop-down. Set the drop-down field :searchable="false"

  • Use the Name/Description component (move count to end) <NameNsDescription>

  • Use VM Template needs to be moved out of the Create screen & be before in a selection page. (Lauren will give you design for that) <CruResource>

  • Change Image boxes to a searchable drop-down with list of images.
    image <LabeledSelect>

  • Remove Add Image button (should not leave create screen in middle)

  • All other fields will go into the side-tabbed component (where the tabs are on the left side not on top) <Tabbed :side-tabs="true">
    image

  • 1st tab - Basic - Fields going into this tab: CPU, Memory, Authentication, Start VM on create checkbox

  • Memory field should just be GiB and should use the <UnitInput>
    image

  • Authentication field should be multi-select drop-down <LabledSelect :multiple="true" :searchable="true" ...>

  • New SSH key button, either remove it. Or take out modal and put into two fields side by side and rename to Create SSH Key. Also if you decide to add the key, need to automatically show it after create & have it checked (show up in the drop-down)

  • 2nd tab - Volumes (Change from Disks) - (Will new volumes I create here get added to Volumes list page?)

  • Change table to be a "block" control with Add Volume & Add Existing Volume buttons. Fields that won't change should be on top (Name/Type). Design: Block control is standard and you can get from Lauren or Vincent (<ArrayListGrouped>):

image

  • Can we change "blank" in Source drop-down to "New"?

  • 3rd tab - Networks

  • Change Table to be "block" control. Same as above... design. Name & Model on first row, Network & Type on second, with Mac address on third.

  • For the tooltip, remove the text "Protip:" Change text to say "Guest system address."

  • 4th tab - Advanced Options - put all advanced fields in this tab.

  • Remove tooltip from Host Name field in Advanced. Host Names by default normally have to be lowercase, number & - only. This is a standard. Also you don't have to remember the host name because we don't hide it? They can always come back and get it if they need to. Also as Advanced Users they should really be expected to know what these fields are for and their limits.

Network text changes & "Type" question

Text Changes:

  • On Network list page : If the Network NIC isn't moved into Edit host, then the warning message should change to -
    "You must configure a network in Settings before you can create a new network." have "Settings" be a link to the network settings.

  • If the physical NIC is invalid in settings: on Network list page: CHange the text to say "Physical NIC value in Setting is invalid". Have "Settings" be a link to the network settings.

  • In Network setting if you enter a wrong NIC, the message should say '[nic field info] is not a valid physical NIC."

Questions in Settings & Create Network:

  1. I noticed in Network Setting and Create Network, in the Type drop-down you can only select VLAN. If that is the only option it probably shouldn't be a drop-down (or a field at all)

  2. If you can have more than one "Type", then the behavior should be: If only 1, show it as a regular read-only field (not a drop-down). Once there is more than 1, it should change to active and a drop-down field.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.