Files
dotfiles/k8s/butane.yml

65 lines
1.7 KiB
YAML

variant: fcos
version: 1.5.0
passwd:
users:
- name: core
ssh_authorized_keys:
- "ssh-rsa YOUR_PUBLIC_SSH_KEY_HERE"
storage:
files:
# Load required kernel modules for Kubernetes/CRI-O
- path: /etc/modules-load.d/k8s.conf
mode: 0644
contents:
inline: |
overlay
br_netfilter
# Configure Sysctl for networking
- path: /etc/sysctl.d/k8s.conf
mode: 0644
contents:
inline: |
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
# Configure zincati to check airlock before rebooting after update
- path: /etc/zincati/config.d/50-strategy-fleetlock.toml
contents:
inline: |
[updates]
strategy = "fleetlock"
[updates.fleetlock]
base_url = "http://airlock.example.com/v1/pre-reboot"
systemd:
units:
# Ensure CRI-O (Container Runtime) is enabled and started
- name: crio.service
enabled: true
# Kubelet Service definition
- name: kubelet.service
enabled: true
contents: |
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/kubernetes/kubernetes
After=crio.service
Requires=crio.service
[Service]
ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests
ExecStart=/usr/bin/kubelet \
--container-runtime-endpoint=unix:///var/run/crio/crio.sock \
--register-node=true \
--v=2
Restart=always
StartLimitInterval=0
RestartSec=10
[Install]
WantedBy=multi-user.target