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

Commit 9876764

Browse files
committed
Only setup kube-vip before kubeadm on first node
Signed-off-by: Chris Privitere <[email protected]>
1 parent 9a82297 commit 9876764

File tree

1 file changed

+36
-17
lines changed

1 file changed

+36
-17
lines changed

templates/experimental-kube-vip/kustomization.yaml

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -56,34 +56,53 @@ patches:
5656
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
5757
sed -i "s,sandbox_image.*$,sandbox_image = \"$(kubeadm config images list | grep pause | sort -r | head -n1)\"," /etc/containerd/config.toml
5858
systemctl restart containerd
59-
ping -c 3 -q {{ .controlPlaneEndpoint }} && echo OK || ip addr add {{ .controlPlaneEndpoint }} dev lo
59+
if [ -f "/run/kubeadm/kubeadm.yaml" ]; then
60+
ip addr add {{ .controlPlaneEndpoint }} dev lo
61+
curl -o /run/metadata.json -fsSL https://metadata.platformequinix.com/metadata
62+
for i in $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[]'); do
63+
ip route add $i via $(cat /run/metadata.json | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | .gateway')
64+
done
65+
KVVERSION="${KUBE_VIP_VERSION:=v0.5.0}"
66+
ctr image pull ghcr.io/kube-vip/kube-vip:$${KVVERSION}
67+
ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:$KVVERSION vip /kube-vip manifest pod \
68+
--interface "lo" \
69+
--vip "{{ .controlPlaneEndpoint }}" \
70+
--controlplane \
71+
--bgp \
72+
--peerAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_as') \
73+
--peerAddress $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[0]') \
74+
--localAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_as') \
75+
--bgpRouterID $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_ip') > /etc/kubernetes/manifests/vip.yaml
76+
rm /run/metadata.json
77+
fi
6078
postKubeadmCommands:
6179
- |
6280
curl -o /run/metadata.json -fsSL https://metadata.platformequinix.com/metadata
6381
for i in $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[]'); do
6482
ip route add $i via $(cat /run/metadata.json | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | .gateway')
6583
done
66-
KVVERSION="${KUBE_VIP_VERSION:=v0.5.0}"
67-
ctr image pull ghcr.io/kube-vip/kube-vip:$${KVVERSION}
68-
ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:$KVVERSION vip /kube-vip manifest pod \
69-
--interface "lo" \
70-
--vip "{{ .controlPlaneEndpoint }}" \
71-
--controlplane \
72-
--bgp \
73-
--peerAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_as') \
74-
--peerAddress $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[0]') \
75-
--localAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_as') \
76-
--bgpRouterID $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_ip') > /etc/kubernetes/manifests/vip.yaml
77-
rm /run/metadata.json
78-
mkdir -p /root/.kube && cp -f /etc/kubernetes/admin.conf /root/.kube/config
79-
echo "source <(kubectl completion bash)" >> /root/.bashrc
80-
echo "alias k=kubectl" >> /root/.bashrc
81-
echo "complete -o default -F __start_kubectl k" >> /root/.bashrc
8284
if [ -f "/run/kubeadm/kubeadm.yaml" ]; then
8385
export CPEM_YAML=https://github.com/equinix/cloud-provider-equinix-metal/releases/download/${CPEM_VERSION:=v3.5.0}/deployment.yaml
8486
export SECRET_DATA='cloud-sa.json=''{"apiKey": "{{ .apiKey }}","projectID": "${PROJECT_ID}", "loadbalancer": "kube-vip://", "facility": "${FACILITY}"}'''
8587
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}")
8688
kubectl apply -f $${CPEM_YAML} || (sleep 1 && kubectl apply -f $${CPEM_YAML}) || (sleep 1 && kubectl apply -f $${CPEM_YAML})
89+
else
90+
KVVERSION="${KUBE_VIP_VERSION:=v0.5.0}"
91+
ctr image pull ghcr.io/kube-vip/kube-vip:$${KVVERSION}
92+
ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:$KVVERSION vip /kube-vip manifest pod \
93+
--interface "lo" \
94+
--vip "{{ .controlPlaneEndpoint }}" \
95+
--controlplane \
96+
--bgp \
97+
--peerAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_as') \
98+
--peerAddress $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].peer_ips[0]') \
99+
--localAS $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_as') \
100+
--bgpRouterID $(cat /run/metadata.json | jq -r '.bgp_neighbors[0].customer_ip') > /etc/kubernetes/manifests/vip.yaml
101+
rm /run/metadata.json
102+
mkdir -p /root/.kube && cp -f /etc/kubernetes/admin.conf /root/.kube/config
103+
echo "source <(kubectl completion bash)" >> /root/.bashrc
104+
echo "alias k=kubectl" >> /root/.bashrc
105+
echo "complete -o default -F __start_kubectl k" >> /root/.bashrc
87106
fi
88107
- patch: |
89108
kind: KubeadmConfigTemplate

0 commit comments

Comments
 (0)