@@ -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
- |
@@ -199,23 +215,25 @@ spec:
199
215
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
200
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