48
48
sysctl --system
49
49
export DEBIAN_FRONTEND=noninteractive
50
50
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
52
52
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release linux-generic jq
53
53
mkdir -p /etc/apt/keyrings
54
54
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
@@ -58,14 +58,14 @@ spec:
58
58
apt-get update -y
59
59
TRIMMED_KUBERNETES_VERSION=$(echo {{ .kubernetesVersion }} | sed 's/\./\\\\./g' | sed 's/^v//')
60
60
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}
62
62
cat <<EOF > /etc/crictl.yaml
63
63
runtime-endpoint: unix:///run/containerd/containerd.sock
64
64
image-endpoint: unix:///run/containerd/containerd.sock
65
65
EOF
66
66
containerd config default > /etc/containerd/config.toml
67
67
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
69
69
systemctl restart containerd
70
70
---
71
71
apiVersion : cluster.x-k8s.io/v1beta1
@@ -150,16 +150,32 @@ spec:
150
150
provider-id : equinixmetal://{{ `{{ v1.instance_id }}` }}
151
151
postKubeadmCommands :
152
152
- |-
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
153
157
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
160
159
export SECRET_DATA='cloud-sa.json=''{"apiKey": "{{ .apiKey }}","projectID": "${PROJECT_ID}", "loadbalancer": "kube-vip://", "facility": "${FACILITY}"}'''
161
160
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}")
162
161
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
163
179
fi
164
180
preKubeadmCommands :
165
181
- |
@@ -180,7 +196,7 @@ spec:
180
196
sysctl --system
181
197
export DEBIAN_FRONTEND=noninteractive
182
198
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
184
200
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release linux-generic jq
185
201
mkdir -p /etc/apt/keyrings
186
202
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
@@ -190,32 +206,34 @@ spec:
190
206
apt-get update -y
191
207
TRIMMED_KUBERNETES_VERSION=$(echo {{ .kubernetesVersion }} | sed 's/\./\\\\./g' | sed 's/^v//')
192
208
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}
194
210
cat <<EOF > /etc/crictl.yaml
195
211
runtime-endpoint: unix:///run/containerd/containerd.sock
196
212
image-endpoint: unix:///run/containerd/containerd.sock
197
213
EOF
198
214
containerd config default > /etc/containerd/config.toml
199
215
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
201
217
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
219
237
machineTemplate :
220
238
infrastructureRef :
221
239
apiVersion : infrastructure.cluster.x-k8s.io/v1beta1
0 commit comments