Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.

Commit 8d2e4db

Browse files
authored
Merge pull request #420 from cprivitere/cprivitere/issue419
Fix errors in new templates
2 parents 9e1aab6 + 5f522c3 commit 8d2e4db

File tree

7 files changed

+163
-112
lines changed

7 files changed

+163
-112
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ CURL_RETRIES=3
4545
ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
4646
TOOLS_DIR := hack/tools
4747
TOOLS_BIN_DIR := $(abspath $(TOOLS_DIR)/bin)
48+
PATH := $(TOOLS_BIN_DIR):$(PATH)
4849
BIN_DIR := $(abspath $(ROOT_DIR)/bin)
4950
GO_INSTALL = ./scripts/go_install.sh
5051

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,11 @@ You should then follow the [Cluster API Quick Start Guide](https://cluster-api.s
3434

3535
If you do not change the generated `yaml` files, it will use defaults. You can look in the [templates/cluster-template.yaml](./templates/cluster-template.yaml) file for details.
3636

37-
* `CLUSTER_NAME` (defaults to `my-cluster`)
38-
* `CONTROL_PLANE_MACHINE_COUNT` (defaults to `1`)
37+
* `CPEM_VERSION` (defaults to `v3.5.0`)
3938
* `KUBE_VIP_VERSION` (defaults to `v0.5.0`)
4039
* `NODE_OS` (defaults to `ubuntu_18_04`)
4140
* `POD_CIDR` (defaults to `192.168.0.0/16`)
4241
* `SERVICE_CIDR` (defaults to `172.26.0.0/16`)
43-
* `WORKER_MACHINE_COUNT` (defaults to `0`)
4442

4543
### Reserved Hardware
4644

templates/cluster-template-crs-cni.yaml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ spec:
4848
sysctl --system
4949
export DEBIAN_FRONTEND=noninteractive
5050
apt-get update -y
51-
apt-get remove -y docker docker-engine docker.io containerd runc
51+
apt-get remove -y docker docker-engine containerd runc
5252
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release linux-generic jq
5353
mkdir -p /etc/apt/keyrings
5454
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
@@ -58,14 +58,14 @@ spec:
5858
apt-get update -y
5959
TRIMMED_KUBERNETES_VERSION=$(echo {{ .kubernetesVersion }} | sed 's/\./\\\\./g' | sed 's/^v//')
6060
RESOLVED_KUBERNETES_VERSION=$(apt-cache madison kubelet | awk -v VERSION=$${TRIMMED_KUBERNETES_VERSION} '$3~ VERSION { print $3 }' | head -n1)
61-
apt-get install -y containerd kubelet=$${RESOLVED_KUBERNETES_VERSION} kubeadm=$${RESOLVED_KUBERNETES_VERSION} kubectl=$${RESOLVED_KUBERNETES_VERSION}
61+
apt-get install -y containerd.io kubelet=$${RESOLVED_KUBERNETES_VERSION} kubeadm=$${RESOLVED_KUBERNETES_VERSION} kubectl=$${RESOLVED_KUBERNETES_VERSION}
6262
cat <<EOF > /etc/crictl.yaml
6363
runtime-endpoint: unix:///run/containerd/containerd.sock
6464
image-endpoint: unix:///run/containerd/containerd.sock
6565
EOF
6666
containerd config default > /etc/containerd/config.toml
6767
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
68-
sed -i "s,sandbox_image.*$,sandbox_image = $(kubeadm config images list | grep pause | sort -r | head -n1)," /etc/containerd/config.toml
68+
sed -i "s,sandbox_image.*$,sandbox_image = \"$(kubeadm config images list | grep pause | sort -r | head -n1)\"," /etc/containerd/config.toml
6969
systemctl restart containerd
7070
---
7171
apiVersion: cluster.x-k8s.io/v1beta1
@@ -157,13 +157,12 @@ spec:
157157
netmask 255.255.255.255
158158
EOF
159159
systemctl restart networking
160+
mkdir -p /root/.kube && cp -f /etc/kubernetes/admin.conf /root/.kube/config
161+
echo "source <(kubectl completion bash)" >> /root/.bashrc
162+
echo "alias k=kubectl" >> /root/.bashrc
163+
echo "complete -o default -F __start_kubectl k" >> /root/.bashrc
160164
if [ -f "/run/kubeadm/kubeadm.yaml" ]; then
161-
export KUBECONFIG=/etc/kubernetes/admin.conf
162-
mkdir -p /root/.kube && cp -f $${KUBECONFIG} /root/.kube/config
163-
echo "source <(kubectl completion bash)" >> /root/.bashrc
164-
echo "alias k=kubectl" >> /root/.bashrc
165-
echo "complete -o default -F __start_kubectl k" >> /root/.bashrc
166-
export CPEM_YAML=https://github.com/equinix/cloud-provider-equinix-metal/releases/download/v3.5.0/deployment.yaml
165+
export CPEM_YAML=https://github.com/equinix/cloud-provider-equinix-metal/releases/download/${CPEM_VERSION:=v3.5.0}/deployment.yaml
167166
export SECRET_DATA='cloud-sa.json=''{"apiKey": "{{ .apiKey }}","projectID": "${PROJECT_ID}", "eipTag": "cluster-api-provider-packet:cluster-id:${CLUSTER_NAME}", "eipHealthCheckUseHostIP": true}'''
168167
kubectl create secret generic -n kube-system metal-cloud-config --from-literal="$${SECRET_DATA}" || (sleep 1 && kubectl create secret generic -n kube-system metal-cloud-config --from-literal="$${SECRET_DATA}") || (sleep 1 && kubectl create secret generic -n kube-system metal-cloud-config --from-literal="$${SECRET_DATA}")
169168
kubectl apply -f $${CPEM_YAML} || (sleep 1 && kubectl apply -f $${CPEM_YAML}) || (sleep 1 && kubectl apply -f $${CPEM_YAML})
@@ -187,7 +186,7 @@ spec:
187186
sysctl --system
188187
export DEBIAN_FRONTEND=noninteractive
189188
apt-get update -y
190-
apt-get remove -y docker docker-engine docker.io containerd runc
189+
apt-get remove -y docker docker-engine containerd runc
191190
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release linux-generic jq
192191
major_vers=$(lsb_release -r | awk '{ print $2 }' | cut -d. -f1)
193192
if [[ "$major_vers" -ge 20 ]]; then
@@ -201,14 +200,14 @@ spec:
201200
apt-get update -y
202201
TRIMMED_KUBERNETES_VERSION=$(echo {{ .kubernetesVersion }} | sed 's/\./\\\\./g' | sed 's/^v//')
203202
RESOLVED_KUBERNETES_VERSION=$(apt-cache madison kubelet | awk -v VERSION=$${TRIMMED_KUBERNETES_VERSION} '$3~ VERSION { print $3 }' | head -n1)
204-
apt-get install -y containerd kubelet=$${RESOLVED_KUBERNETES_VERSION} kubeadm=$${RESOLVED_KUBERNETES_VERSION} kubectl=$${RESOLVED_KUBERNETES_VERSION}
203+
apt-get install -y containerd.io kubelet=$${RESOLVED_KUBERNETES_VERSION} kubeadm=$${RESOLVED_KUBERNETES_VERSION} kubectl=$${RESOLVED_KUBERNETES_VERSION}
205204
containerd config default > /etc/containerd/config.toml
206205
cat <<EOF > /etc/crictl.yaml
207206
runtime-endpoint: unix:///run/containerd/containerd.sock
208207
image-endpoint: unix:///run/containerd/containerd.sock
209208
EOF
210209
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
211-
sed -i "s,sandbox_image.*$,sandbox_image = $(kubeadm config images list | grep pause | sort -r | head -n1)," /etc/containerd/config.toml
210+
sed -i "s,sandbox_image.*$,sandbox_image = \"$(kubeadm config images list | grep pause | sort -r | head -n1)\"," /etc/containerd/config.toml
212211
systemctl restart containerd
213212
ping -c 3 -q {{ .controlPlaneEndpoint }} && echo OK || ip addr add {{ .controlPlaneEndpoint }} dev lo
214213
machineTemplate:

templates/cluster-template-kube-vip-crs-cni.yaml

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ spec:
4848
sysctl --system
4949
export DEBIAN_FRONTEND=noninteractive
5050
apt-get update -y
51-
apt-get remove -y docker docker-engine docker.io containerd runc
51+
apt-get remove -y docker docker-engine containerd runc
5252
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release linux-generic jq
5353
mkdir -p /etc/apt/keyrings
5454
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
@@ -58,14 +58,14 @@ spec:
5858
apt-get update -y
5959
TRIMMED_KUBERNETES_VERSION=$(echo {{ .kubernetesVersion }} | sed 's/\./\\\\./g' | sed 's/^v//')
6060
RESOLVED_KUBERNETES_VERSION=$(apt-cache madison kubelet | awk -v VERSION=$${TRIMMED_KUBERNETES_VERSION} '$3~ VERSION { print $3 }' | head -n1)
61-
apt-get install -y containerd kubelet=$${RESOLVED_KUBERNETES_VERSION} kubeadm=$${RESOLVED_KUBERNETES_VERSION} kubectl=$${RESOLVED_KUBERNETES_VERSION}
61+
apt-get install -y containerd.io kubelet=$${RESOLVED_KUBERNETES_VERSION} kubeadm=$${RESOLVED_KUBERNETES_VERSION} kubectl=$${RESOLVED_KUBERNETES_VERSION}
6262
cat <<EOF > /etc/crictl.yaml
6363
runtime-endpoint: unix:///run/containerd/containerd.sock
6464
image-endpoint: unix:///run/containerd/containerd.sock
6565
EOF
6666
containerd config default > /etc/containerd/config.toml
6767
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
68-
sed -i "s,sandbox_image.*$,sandbox_image = $(kubeadm config images list | grep pause | sort -r | head -n1)," /etc/containerd/config.toml
68+
sed -i "s,sandbox_image.*$,sandbox_image = \"$(kubeadm config images list | grep pause | sort -r | head -n1)\"," /etc/containerd/config.toml
6969
systemctl restart containerd
7070
---
7171
apiVersion: cluster.x-k8s.io/v1beta1
@@ -150,16 +150,32 @@ spec:
150150
provider-id: equinixmetal://{{ `{{ v1.instance_id }}` }}
151151
postKubeadmCommands:
152152
- |-
153+
curl -o /run/metadata.json -fsSL https://metadata.platformequinix.com/metadata
154+
for i in $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[]'); do
155+
ip route add $i via $(cat /run/metadata.json | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | .gateway')
156+
done
153157
if [ -f "/run/kubeadm/kubeadm.yaml" ]; then
154-
export KUBECONFIG=/etc/kubernetes/admin.conf
155-
mkdir -p /root/.kube && cp -f $${KUBECONFIG} /root/.kube/config
156-
echo "source <(kubectl completion bash)" >> /root/.bashrc
157-
echo "alias k=kubectl" >> /root/.bashrc
158-
echo "complete -o default -F __start_kubectl k" >> /root/.bashrc
159-
export CPEM_YAML=https://github.com/equinix/cloud-provider-equinix-metal/releases/download/v3.5.0/deployment.yaml
158+
export CPEM_YAML=https://github.com/equinix/cloud-provider-equinix-metal/releases/download/${CPEM_VERSION:=v3.5.0}/deployment.yaml
160159
export SECRET_DATA='cloud-sa.json=''{"apiKey": "{{ .apiKey }}","projectID": "${PROJECT_ID}", "loadbalancer": "kube-vip://", "facility": "${FACILITY}"}'''
161160
kubectl create secret generic -n kube-system metal-cloud-config --from-literal="$${SECRET_DATA}" || (sleep 1 && kubectl create secret generic -n kube-system metal-cloud-config --from-literal="$${SECRET_DATA}") || (sleep 1 && kubectl create secret generic -n kube-system metal-cloud-config --from-literal="$${SECRET_DATA}")
162161
kubectl apply -f $${CPEM_YAML} || (sleep 1 && kubectl apply -f $${CPEM_YAML}) || (sleep 1 && kubectl apply -f $${CPEM_YAML})
162+
else
163+
KVVERSION="${KUBE_VIP_VERSION:=v0.5.0}"
164+
ctr image pull ghcr.io/kube-vip/kube-vip:$${KVVERSION}
165+
ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:$KVVERSION vip /kube-vip manifest pod \
166+
--interface "lo" \
167+
--vip "{{ .controlPlaneEndpoint }}" \
168+
--controlplane \
169+
--bgp \
170+
--peerAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_as') \
171+
--peerAddress $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[0]') \
172+
--localAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_as') \
173+
--bgpRouterID $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_ip') > /etc/kubernetes/manifests/vip.yaml
174+
rm /run/metadata.json
175+
mkdir -p /root/.kube && cp -f /etc/kubernetes/admin.conf /root/.kube/config
176+
echo "source <(kubectl completion bash)" >> /root/.bashrc
177+
echo "alias k=kubectl" >> /root/.bashrc
178+
echo "complete -o default -F __start_kubectl k" >> /root/.bashrc
163179
fi
164180
preKubeadmCommands:
165181
- |
@@ -180,7 +196,7 @@ spec:
180196
sysctl --system
181197
export DEBIAN_FRONTEND=noninteractive
182198
apt-get update -y
183-
apt-get remove -y docker docker-engine docker.io containerd runc
199+
apt-get remove -y docker docker-engine containerd runc
184200
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release linux-generic jq
185201
mkdir -p /etc/apt/keyrings
186202
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
@@ -190,32 +206,34 @@ spec:
190206
apt-get update -y
191207
TRIMMED_KUBERNETES_VERSION=$(echo {{ .kubernetesVersion }} | sed 's/\./\\\\./g' | sed 's/^v//')
192208
RESOLVED_KUBERNETES_VERSION=$(apt-cache madison kubelet | awk -v VERSION=$${TRIMMED_KUBERNETES_VERSION} '$3~ VERSION { print $3 }' | head -n1)
193-
apt-get install -y containerd kubelet=$${RESOLVED_KUBERNETES_VERSION} kubeadm=$${RESOLVED_KUBERNETES_VERSION} kubectl=$${RESOLVED_KUBERNETES_VERSION}
209+
apt-get install -y containerd.io kubelet=$${RESOLVED_KUBERNETES_VERSION} kubeadm=$${RESOLVED_KUBERNETES_VERSION} kubectl=$${RESOLVED_KUBERNETES_VERSION}
194210
cat <<EOF > /etc/crictl.yaml
195211
runtime-endpoint: unix:///run/containerd/containerd.sock
196212
image-endpoint: unix:///run/containerd/containerd.sock
197213
EOF
198214
containerd config default > /etc/containerd/config.toml
199215
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
200-
sed -i "s,sandbox_image.*$,sandbox_image = $(kubeadm config images list | grep pause | sort -r | head -n1)," /etc/containerd/config.toml
216+
sed -i "s,sandbox_image.*$,sandbox_image = \"$(kubeadm config images list | grep pause | sort -r | head -n1)\"," /etc/containerd/config.toml
201217
systemctl restart containerd
202-
ping -c 3 -q {{ .controlPlaneEndpoint }} && echo OK || ip addr add {{ .controlPlaneEndpoint }} dev lo
203-
curl -o /run/metadata.json -fsSL https://metadata.platformequinix.com/metadata
204-
for i in $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[]'); do
205-
ip route add $i via $(cat /run/metadata.json | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | .gateway')
206-
done
207-
KVVERSION="${KUBE_VIP_VERSION:=v0.5.0}"
208-
ctr image pull ghcr.io/kube-vip/kube-vip:$${KVVERSION}
209-
ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:$KVVERSION vip /kube-vip manifest pod \
210-
--interface "lo" \
211-
--vip "{{ .controlPlaneEndpoint }}" \
212-
--controlplane \
213-
--bgp \
214-
--peerAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_as') \
215-
--peerAddress $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[0]') \
216-
--localAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_as') \
217-
--bgpRouterID $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_ip') > /etc/kubernetes/manifests/vip.yaml
218-
rm /run/metadata.json
218+
if [ -f "/run/kubeadm/kubeadm.yaml" ]; then
219+
ip addr add {{ .controlPlaneEndpoint }} dev lo
220+
curl -o /run/metadata.json -fsSL https://metadata.platformequinix.com/metadata
221+
for i in $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[]'); do
222+
ip route add $i via $(cat /run/metadata.json | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | .gateway')
223+
done
224+
KVVERSION="${KUBE_VIP_VERSION:=v0.5.0}"
225+
ctr image pull ghcr.io/kube-vip/kube-vip:$${KVVERSION}
226+
ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:$KVVERSION vip /kube-vip manifest pod \
227+
--interface "lo" \
228+
--vip "{{ .controlPlaneEndpoint }}" \
229+
--controlplane \
230+
--bgp \
231+
--peerAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_as') \
232+
--peerAddress $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[0]') \
233+
--localAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_as') \
234+
--bgpRouterID $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_ip') > /etc/kubernetes/manifests/vip.yaml
235+
rm /run/metadata.json
236+
fi
219237
machineTemplate:
220238
infrastructureRef:
221239
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1

0 commit comments

Comments
 (0)