Files
monok8s/README.md

98 lines
2.5 KiB
Markdown

# monok8s
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 RootFS
* k8s style OS upgrade (see Upgrading)
## DISCLAIMER
* 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-use
cluster and get yourself started from there
* USE AT YOUR OWN RISKS. I leverage ChatGPT heavily for this.
## Current Status
### Boostrapping
* [x] initramfs
* [x] booting into alpine
* [x] k8s control-plane
* [ ] k8s worker node
### Kubernetes
* OSUpgrade
* [x] Control Plane - kubeadm upgrade apply
* Upgrade chain
* [x] 1.33.3 -> 1.33.10
* [x] 1.33.10 -> 1.34.6
* [x] 1.34.6 -> 1.35.3
* [ ] Worker node - kubeadm upgrade node
* CNI
* [x] default bridge-cni
* [ ] Cilium
### Network Traffics
* VPP Pod
* [x] fmc - works? But no way to test it yet
* [ ] vpp - does not work
## Table of Contents
1. Flashing
- [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
Prerequisites
* make
* Docker
* git (cloning uboot repo because uboot does not provide direct downloads)
```
make release
```
The default configuration will boot as a first time control-plane.
For control-plane
```
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
make kernel # Builds our kernel from NXP
make initramfs
make itb # Builds out/board.itb (contains the kernel and the initramfs)
```