make cluster-config

This commit is contained in:
2026-03-25 06:29:07 +08:00
parent befd1a470e
commit db19bc72f7
4 changed files with 95 additions and 5 deletions

View File

@@ -20,12 +20,17 @@ Then run
make release make release
``` ```
Then run, follow the instructions
```
make cluster-config
```
## Flashing ## Flashing
#### USB Drive #### USB Drive
1. `make release` 1. `make release`
2. Format the USB in vfat 2. Format the USB in vfat
3. Copy out/[RELEASE].img.gz and out/board.itb your usb drive's root 3. Copy out/[RELEASE].img.gz and out/board.itb to your usb drive's root
4. Run 4. Run
``` ```
usb start usb start

View File

@@ -0,0 +1,26 @@
# Required
KUBERNETES_VERSION=v1.35.3
NODE_NAME=monok8s-master
APISERVER_ADVERTISE_ADDRESS=192.168.1.50
# Optional but strongly recommended
CLUSTER_NAME=monok8s
POD_SUBNET=10.244.0.0/16
SERVICE_SUBNET=10.96.0.0/12
CLUSTER_DOMAIN=cluster.local
# Optional
# Extra API server SANs, comma-separated
SANS=127.0.0.1,localhost,monok8s-master
# Single-node mode: allow workloads on the control plane
ALLOW_SCHEDULING_ON_CONTROL_PLANE=yes
# CRI-O socket
CONTAINER_RUNTIME_ENDPOINT=unix:///var/run/crio/crio.sock
# Usually leave this alone
KUBECONFIG_USER_HOME=/root
# Emergency override only
SKIP_IMAGE_CHECK=no

View File

@@ -16,6 +16,11 @@ KUBELET_BIN := $(PACKAGES_DIR)/kubernetes/kubelet
KUBEADM_BIN := $(PACKAGES_DIR)/kubernetes/kubeadm KUBEADM_BIN := $(PACKAGES_DIR)/kubernetes/kubeadm
KUBECTL_BIN := $(PACKAGES_DIR)/kubernetes/kubectl KUBECTL_BIN := $(PACKAGES_DIR)/kubernetes/kubectl
CONFIGS_DIR := configs
SCRIPTS_DIR := scripts
CLUSTER_ENV_DEFAULT := $(CONFIGS_DIR)/cluster.env.default
CLUSTER_ENV := $(OUT_DIR)/cluster.env
BOARD_ITB := $(OUT_DIR)/board.itb BOARD_ITB := $(OUT_DIR)/board.itb
INITRAMFS := $(OUT_DIR)/initramfs.cpio.gz INITRAMFS := $(OUT_DIR)/initramfs.cpio.gz
RELEASE_IMAGE := $(OUT_DIR)/monok8s-$(TAG).img.gz RELEASE_IMAGE := $(OUT_DIR)/monok8s-$(TAG).img.gz
@@ -101,9 +106,6 @@ $(KUBEADM_BIN): | $(PACKAGES_DIR)
$(KUBECTL_BIN): | $(PACKAGES_DIR) $(KUBECTL_BIN): | $(PACKAGES_DIR)
curl -L -o $@ "https://dl.k8s.io/$(KUBE_VERSION)/bin/linux/$(ARCH)/kubectl" curl -L -o $@ "https://dl.k8s.io/$(KUBE_VERSION)/bin/linux/$(ARCH)/kubectl"
$(KUBEADM_BIN): | $(PACKAGES_DIR)
curl -L -o $@ "https://dl.k8s.io/$(KUBE_VERSION)/bin/linux/$(ARCH)/kubeadm"
$(BUSYBOX_TAR): | $(PACKAGES_DIR) $(BUSYBOX_TAR): | $(PACKAGES_DIR)
curl -L -o $@ "https://github.com/mirror/busybox/archive/refs/tags/$(BUSYBOX_VERSION).tar.gz" curl -L -o $@ "https://github.com/mirror/busybox/archive/refs/tags/$(BUSYBOX_VERSION).tar.gz"
@@ -217,6 +219,17 @@ check-functions:
@echo "Missing functions:" @echo "Missing functions:"
@comm -23 /tmp/called.txt /tmp/defined.txt || true @comm -23 /tmp/called.txt /tmp/defined.txt || true
# ---- cluster targets ------------------------------------------------------------
cluster-config: $(CLUSTER_ENV_DEFAULT) $(SCRIPTS_DIR)/merge-env.sh | $(OUT_DIR)
sh $(SCRIPTS_DIR)/merge-env.sh $(CLUSTER_ENV_DEFAULT) $(CLUSTER_ENV)
cluster-defconfig: $(CLUSTER_ENV_DEFAULT) | $(OUT_DIR)
cp $(CLUSTER_ENV_DEFAULT) $(CLUSTER_ENV)
cluster-print:
@cat $(CLUSTER_ENV)
# ---- User targets ------------------------------------------------------------ # ---- User targets ------------------------------------------------------------
release: $(RELEASE_IMAGE) release: $(RELEASE_IMAGE)
@@ -240,4 +253,5 @@ distclean: clean
pkgclean: pkgclean:
rm -rf $(PACKAGES_DIR) rm -rf $(PACKAGES_DIR)
.PHONY: release kernel initramfs itb build-base clean distclean .PHONY: release kernel initramfs itb build-base clean distclean pkgclean \
cluster-config cluster-defconfig cluster-print

45
scripts/merge-env.sh Executable file
View File

@@ -0,0 +1,45 @@
#!/bin/sh
set -eu
INPUT="${1:?input file required}"
OUTPUT="${2:?output file required}"
mkdir -p "$(dirname "$OUTPUT")"
awk '
function trim(s) {
sub(/^[[:space:]]+/, "", s)
sub(/[[:space:]]+$/, "", s)
return s
}
BEGIN {
for (k in ENVIRON) {
env[k] = ENVIRON[k]
}
}
/^[[:space:]]*#/ || /^[[:space:]]*$/ {
print
next
}
{
line = $0
eq = index(line, "=")
if (eq == 0) {
print line
next
}
key = trim(substr(line, 1, eq - 1))
val = substr(line, eq + 1)
if (key in env) {
print key "=" env[key]
} else {
print line
}
}
' "$INPUT" > "$OUTPUT"