Skip to content

Commit 53cb305

Browse files
Pre-built OS images that include components required by kubeadm control plane provider (#37)
1 parent 1869713 commit 53cb305

File tree

4 files changed

+14
-224
lines changed

4 files changed

+14
-224
lines changed

capi-lab/mini-lab-overrides/extra-vars.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,17 @@ metal_ingress_dns: metal.{{ metal_control_plane_ingress_dns }}
77

88
metal_partition_metal_api_addr: metal.172.17.0.1.nip.io
99
metal_partition_metal_api_basepath: "/"
10+
11+
metal_api_images:
12+
- id: firewall-ubuntu-3.0
13+
name: Firewall 3 Ubuntu
14+
description: Firewall 3 Ubuntu Latest Release
15+
url: https://images.metal-stack.io/metal-os/stable/firewall/3.0-ubuntu/img.tar.lz4
16+
features:
17+
- firewall
18+
- id: ubuntu-24.04
19+
name: Ubuntu 24.04 with Kubernetes 1.30.6
20+
description: Ubuntu 24.04 with Kubernetes 1.30.6
21+
url: https://images.metal-stack.io/metal-os/pull_requests/273-cluster-api-k8s-v1.30.6/cluster-api/cluster-api-k8s-1.30.6/img.tar.lz4
22+
features:
23+
- machine

config/clusterctl-templates/cluster-template.yaml

Lines changed: 0 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -73,62 +73,6 @@ spec:
7373
joinConfiguration:
7474
controlPlane: {}
7575
nodeRegistration: {}
76-
ignition:
77-
containerLinuxConfig:
78-
additionalConfig: |
79-
systemd:
80-
units:
81-
- name: cluster-api-init.service
82-
enable: true
83-
contents: |-
84-
[Unit]
85-
Description=Prepares the node for bootstrapping with cluster-api kubeadm
86-
Before=kubeadm.service
87-
After=network-online.target
88-
Wants=network-online.target
89-
[Service]
90-
Type=oneshot
91-
Restart=on-failure
92-
RestartSec=5
93-
StartLimitBurst=0
94-
EnvironmentFile=/etc/environment
95-
ExecStart=/var/lib/cluster-api-init/bootstrap.sh
96-
[Install]
97-
WantedBy=multi-user.target
98-
files:
99-
- path: /var/lib/cluster-api-init/bootstrap.sh
100-
owner: "root:root"
101-
permissions: "0744"
102-
content: ${BOOTSTRAP_SCRIPT:="
103-
#!/usr/bin/env bash
104-
set -eo pipefail
105-
set +x
106-
107-
apt update
108-
apt install conntrack
109-
110-
CNI_PLUGINS_VERSION="v1.3.0"
111-
DEST="/opt/cni/bin"
112-
mkdir -p "$DEST"
113-
curl -L "https://github.com/containernetworking/plugins/releases/download/$CNI_PLUGINS_VERSION/cni-plugins-linux-amd64-$CNI_PLUGINS_VERSION.tgz" | tar -C "$DEST" -xz
114-
115-
RELEASE="${KUBERNETES_VERSION}"
116-
cd /usr/local/bin
117-
curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
118-
chmod +x {kubeadm,kubelet,kubectl}
119-
120-
RELEASE_VERSION="v0.16.2"
121-
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/$RELEASE_VERSION/cmd/krel/templates/latest/kubelet/kubelet.service" | sed "s:/usr/bin:/usr/local/bin:g" | tee /usr/lib/systemd/system/kubelet.service
122-
mkdir -p /usr/lib/systemd/system/kubelet.service.d
123-
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/$RELEASE_VERSION/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:/usr/local/bin:g" | tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
124-
125-
systemctl enable kubelet.service
126-
"}
127-
- path: /etc/containerd/config.toml
128-
owner: "root:root"
129-
permissions: "0644"
130-
content: |
131-
disabled_plugins = []
13276
---
13377
apiVersion: cluster.x-k8s.io/v1beta1
13478
kind: MachineDeployment
@@ -175,35 +119,3 @@ spec:
175119
controlPlaneEndpoint: ${CONTROL_PLANE_ENDPOINT}
176120
joinConfiguration:
177121
nodeRegistration: {}
178-
ignition:
179-
containerLinuxConfig:
180-
additionalConfig: |
181-
systemd:
182-
units:
183-
- name: cluster-api-init.service
184-
enable: true
185-
contents: |-
186-
[Unit]
187-
Description=Prepares the node for bootstrapping with cluster-api kubeadm
188-
Before=kubeadm.service
189-
After=network-online.target
190-
Wants=network-online.target
191-
[Service]
192-
Type=oneshot
193-
Restart=on-failure
194-
RestartSec=5
195-
StartLimitBurst=0
196-
EnvironmentFile=/etc/environment
197-
ExecStart=/var/lib/cluster-api-init/bootstrap.sh
198-
[Install]
199-
WantedBy=multi-user.target
200-
files:
201-
- path: /var/lib/cluster-api-init/bootstrap.sh
202-
owner: "root:root"
203-
permissions: "0744"
204-
content: ${BOOTSTRAP_SCRIPT}
205-
- path: /etc/containerd/config.toml
206-
owner: "root:root"
207-
permissions: "0644"
208-
content: |
209-
disabled_plugins = []

config/clusterctl-templates/example_variables.rc

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,3 @@ export CONTROL_PLANE_MACHINE_IMAGE=ubuntu-24.04
1717

1818
export WORKER_MACHINE_IMAGE=ubuntu-24.04
1919
export WORKER_MACHINE_SIZE=v1-small-x86
20-
21-
export BOOTSTRAP_SCRIPT="
22-
#!/usr/bin/env bash
23-
set -eo pipefail
24-
set +x
25-
26-
apt update
27-
apt install conntrack
28-
29-
CNI_PLUGINS_VERSION="v1.3.0"
30-
DEST="/opt/cni/bin"
31-
mkdir -p "$DEST"
32-
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_PLUGINS_VERSION}/cni-plugins-linux-amd64-${CNI_PLUGINS_VERSION}.tgz" | tar -C "$DEST" -xz
33-
34-
RELEASE="${KUBERNETES_VERSION}"
35-
cd /usr/local/bin
36-
curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
37-
chmod +x {kubeadm,kubelet,kubectl}
38-
39-
RELEASE_VERSION="v0.16.2"
40-
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubelet/kubelet.service" | sed "s:/usr/bin:/usr/local/bin:g" | tee /usr/lib/systemd/system/kubelet.service
41-
mkdir -p /usr/lib/systemd/system/kubelet.service.d
42-
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:/usr/local/bin:g" | tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
43-
44-
systemctl enable kubelet.service
45-
"

config/samples/example-kubeadm.yaml

Lines changed: 0 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -69,61 +69,6 @@ spec:
6969
joinConfiguration:
7070
controlPlane: {}
7171
nodeRegistration: {}
72-
ignition:
73-
containerLinuxConfig:
74-
additionalConfig: |
75-
systemd:
76-
units:
77-
- name: cluster-api-init.service
78-
enable: true
79-
contents: |-
80-
[Unit]
81-
Description=Prepares the node for bootstrapping with cluster-api kubeadm
82-
Before=kubeadm.service
83-
After=network-online.target
84-
Wants=network-online.target
85-
[Service]
86-
Type=oneshot
87-
Restart=on-failure
88-
RestartSec=5
89-
StartLimitBurst=0
90-
EnvironmentFile=/etc/environment
91-
ExecStart=/var/lib/cluster-api-init/bootstrap.sh
92-
[Install]
93-
WantedBy=multi-user.target
94-
files:
95-
- path: /var/lib/cluster-api-init/bootstrap.sh
96-
owner: "root:root"
97-
permissions: "0744"
98-
content: |
99-
#!/usr/bin/env bash
100-
set -eo pipefail
101-
set +x
102-
103-
apt update
104-
apt install conntrack
105-
106-
CNI_PLUGINS_VERSION="v1.3.0"
107-
DEST="/opt/cni/bin"
108-
mkdir -p "$DEST"
109-
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_PLUGINS_VERSION}/cni-plugins-linux-amd64-${CNI_PLUGINS_VERSION}.tgz" | tar -C "$DEST" -xz
110-
111-
RELEASE="v1.30.6"
112-
cd /usr/local/bin
113-
curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
114-
chmod +x {kubeadm,kubelet,kubectl}
115-
116-
RELEASE_VERSION="v0.16.2"
117-
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubelet/kubelet.service" | sed "s:/usr/bin:/usr/local/bin:g" | tee /usr/lib/systemd/system/kubelet.service
118-
mkdir -p /usr/lib/systemd/system/kubelet.service.d
119-
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:/usr/local/bin:g" | tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
120-
121-
systemctl enable kubelet.service
122-
- path: /etc/containerd/config.toml
123-
owner: "root:root"
124-
permissions: "0644"
125-
content: |
126-
disabled_plugins = []
12772
---
12873
apiVersion: cluster.x-k8s.io/v1beta1
12974
kind: MachineDeployment
@@ -170,58 +115,3 @@ spec:
170115
controlPlaneEndpoint: 203.0.113.129:443
171116
joinConfiguration:
172117
nodeRegistration: {}
173-
ignition:
174-
containerLinuxConfig:
175-
additionalConfig: |
176-
systemd:
177-
units:
178-
- name: cluster-api-init.service
179-
enable: true
180-
contents: |-
181-
[Unit]
182-
Description=Prepares the node for bootstrapping with cluster-api kubeadm
183-
Before=kubeadm.service
184-
After=network-online.target
185-
Wants=network-online.target
186-
[Service]
187-
Type=oneshot
188-
Restart=on-failure
189-
RestartSec=5
190-
StartLimitBurst=0
191-
EnvironmentFile=/etc/environment
192-
ExecStart=/var/lib/cluster-api-init/bootstrap.sh
193-
[Install]
194-
WantedBy=multi-user.target
195-
files:
196-
- path: /var/lib/cluster-api-init/bootstrap.sh
197-
owner: "root:root"
198-
permissions: "0744"
199-
content: |
200-
#!/usr/bin/env bash
201-
set -eo pipefail
202-
set +x
203-
204-
apt update
205-
apt install conntrack
206-
207-
CNI_PLUGINS_VERSION="v1.3.0"
208-
DEST="/opt/cni/bin"
209-
mkdir -p "$DEST"
210-
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_PLUGINS_VERSION}/cni-plugins-linux-amd64-${CNI_PLUGINS_VERSION}.tgz" | tar -C "$DEST" -xz
211-
212-
RELEASE="v1.30.6"
213-
cd /usr/local/bin
214-
curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
215-
chmod +x {kubeadm,kubelet,kubectl}
216-
217-
RELEASE_VERSION="v0.16.2"
218-
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubelet/kubelet.service" | sed "s:/usr/bin:/usr/local/bin:g" | tee /usr/lib/systemd/system/kubelet.service
219-
mkdir -p /usr/lib/systemd/system/kubelet.service.d
220-
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:/usr/local/bin:g" | tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
221-
222-
systemctl enable kubelet.service
223-
- path: /etc/containerd/config.toml
224-
owner: "root:root"
225-
permissions: "0644"
226-
content: |
227-
disabled_plugins = []

0 commit comments

Comments
 (0)