diff --git a/README.md b/README.md index 2db0fe6..5895fad 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,29 @@ # monok8s -Alpine-based Kubernetes cluster image for Mono's Gateway Development Kit +An Alpine-based Kubernetes cluster image for Mono's Gateway Development Kit https://docs.mono.si/gateway-development-kit/getting-started ## Features * A/B deployment - * Read-only OS + * Read-only RootFS * k8s style OS upgrade (see Upgrading) ## IMPORTANT NOTES + * This is not your everyday linux image! It is best suited for users that is already familiar + with k8s. For first-timers, you may want to try the default config that gives you a ready-to-used + cluster then get yourself started from there + * The 3 RJ45 ports are label in eth1, eth2, eth0 respectively by the kernel (left to right) - * So `ip addr eth0` is your right most port - * If the fan stopped spinning. Unplug ASAP! Otherwise CPU temp goes to the moon. + So `ip addr eth0` is your right most port ### Table of Contents 1. Flashing - - [USB](docs/flashing-usb.md) - - [Over network (tftp)](docs/flashing-network.md) + - [USB](docs/flashing-usb.md) + - [Over network (tftp)](docs/flashing-network.md) 2. [Upgrading](docs/ota.md) +3. Getting shell access to the host + - UART. The thing you did in first time flashing. + - [Install an ssh pod](docs/installing-ssh-pod.md) (Recommended) ## Build Find the latest package versions and update build.env @@ -25,17 +31,41 @@ Find the latest package versions and update build.env * [busybox](https://github.com/mirror/busybox/archive/refs/tags/) * [CRI-O](https://github.com/cri-o/cri-o/releases) * [Kubelet](https://kubernetes.io/releases/download/) + * [UBoot](https://github.com/u-boot/) Then run ``` make release ``` -Inspect and modify config/cluster.env, then run +The default configuration will boot as a first time control-plane. Adjust to your own needs. + +For control-plane ``` -make cluster-config +make cluster-config \ + MKS_HOSTNAME=monok8s-master \ + MKS_CLUSTER_ROLE=control-plane \ + MKS_INIT_CONTROL_PLANE=true \ + MKS_MGMT_ADDRESS=10.0.0.10/24 \ + MKS_APISERVER_ADVERTISE_ADDRESS=10.0.0.10 ``` +For worker +``` +make cluster-config \ + MKS_HOSTNAME=monok8s-worker \ + MKS_CLUSTER_ROLE=worker \ + MKS_INIT_CONTROL_PLANE=no \ + MKS_MGMT_ADDRESS=10.0.0.10/24 \ + MKS_APISERVER_ADVERTISE_ADDRESS=10.0.0.10 \ + MKS_API_SERVER_ENDPOINT=10.0.0.1:6443 \ + MKS_CNI_PLUGIN=none \ + MKS_BOOTSTRAP_TOKEN=abcd12.ef3456789abcdef0 \ + MKS_DISCOVERY_TOKEN_CA_CERT_HASH=sha256:9f1c2b3a4d5e6f7890abc1234567890abcdef1234567890abcdef1234567890ab +``` + +Check inside [configs/cluster.env.default](configs/cluster.env.default) for configuration details + ### Making sub stages ```bash make build-base # The image that builds the kernel and everything diff --git a/alpine/build-rootfs.sh b/alpine/build-rootfs.sh index 30e9bd3..8779a65 100755 --- a/alpine/build-rootfs.sh +++ b/alpine/build-rootfs.sh @@ -160,8 +160,19 @@ e2fsck -fy "$ROOTFS_IMG" echo "##################################################### Compressing OTA Image" zstd -19 -T0 -f "$ROOTFS_IMG" -o "$ROOTFS_IMG_ZST" -sha256sum "$ROOTFS_IMG" > "$ROOTFS_IMG.sha256" -sha256sum "$ROOTFS_IMG_ZST" > "$ROOTFS_IMG_ZST.sha256" + +tee >(wc -c > "${ROOTFS_IMG}.size") < "$ROOTFS_IMG" | sha256sum > "${ROOTFS_IMG}.sha256" +tee >(wc -c > "${ROOTFS_IMG_ZST}.size") < "$ROOTFS_IMG_ZST" | sha256sum > "${ROOTFS_IMG_ZST}.sha256" + +cat > catalog.txt <