System Requirements

To run MicroShift, you need a machine with at least:

  • a supported 64-bit CPU architecture (amd64/x86_64, arm64, or riscv64)
  • a supported OS (see below)
  • 2 CPU cores
  • 2GB of RAM
  • 1GB of free storage space for MicroShift

Deploying MicroShift on Edge Devices

We recommend (and only test) deploying MicroShift on RHEL 8, CentOS Stream, or Fedora 34+ installing via RPM (e.g. for embedding MicroShift into an rpm-ostree image).

This installation techique has a minimal resource footprint, a strong security posture, the ability to restart/update without disrupting workloads, and optionally auto-updates.

Install CRI-O

MicroShift requires CRI-O to be installed and running on the host:

command -v subscription-manager &> /dev/null \
    && subscription-manager repos --enable rhocp-4.8-for-rhel-8-x86_64-rpms
sudo dnf install -y cri-o cri-tools
sudo systemctl enable crio --now

sudo dnf module enable -y cri-o:1.21
sudo dnf install -y cri-o cri-tools
sudo systemctl enable crio --now

sudo dnf module enable -y cri-o:1.21
sudo dnf install -y cri-o cri-tools
sudo systemctl enable crio --now

Deploying MicroShift

The following steps will deploy MicroShift and enable firewalld. It is always best practice to have firewalls enabled and only to allow the minimum set of ports necessary for MicroShift to operate. Iptables can be used in place of firewalld if desired.

To have systemd start and manage MicroShift on an rpm-based host, run:

sudo dnf copr enable -y @redhat-et/microshift
sudo dnf install -y microshift
sudo firewall-cmd --zone=trusted --add-source=10.42.0.0/16 --permanent
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5353/udp --permanent
sudo firewall-cmd --reload
sudo systemctl enable microshift --now

For more details on MicroShift ports and firewall settings, please see the firewall documentation.

Install Clients

To access the cluster, install the OpenShift client or kubectl.

curl -O https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/ocp/stable/openshift-client-linux.tar.gz
sudo tar -xf openshift-client-linux.tar.gz -C /usr/local/bin oc kubectl

Copy Kubeconfig

Copy the kubeconfig to the default location that can be accessed without administrator privilege.

mkdir ~/.kube
sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config

It is now possible to run kubectl or oc commands against the MicroShift environment. Verify that MicroShift is running:

oc get pods -A

MicroShift on OSTree based systems

As mentioned aboved, MicroShift has been designed to be deployed on edge computing devices. Looking at security standards, an edge optimized operating system will most likely be inmutable and based in transactions for upgrades and rollbacks. OSTree provides these capabilities.

Fedora IoT and RHEL for Edge are both OSTree based systems and MicroShift can be shipped as part of the base rpm-ostree. The recommended way to embed MicroShift in these operating systems is to build your own rpm-ostree with tools like Image Builder. This project will allow you to create your own customized version of Fedora IoT or RHEL for Edge in order to include MicroShift and all the required dependencies like CRI-O.

Last modified October 24, 2023 at 8:51 AM PST : build(deps): bump actions/setup-node from 3 to 4 (#212) (333d7a1)