Skip to content

Commit 5d81265

Browse files
committed
feat: Enable kube-vip CP load-balancer in masquerade mode
This enables actual load balancing across CP nodes, an improvement on the current configuration that only routes traffic to the API server running on the CP node where kube-vip leader is running.
1 parent 6a50339 commit 5d81265

File tree

3 files changed

+24
-19
lines changed

3 files changed

+24
-19
lines changed

charts/cluster-api-runtime-extensions-nutanix/defaultclusterclasses/nutanix-cluster-class.yaml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,20 +194,21 @@ spec:
194194
value: "10"
195195
- name: vip_retryperiod
196196
value: "2"
197+
- name: lb_enable
198+
value: "true"
199+
- name: lb_port
200+
value: "6443"
201+
- name: lb_fwdmethod
202+
value: masquerade
197203
- name: address
198204
value: '{{ .Address }}'
199205
- name: prometheus_server
200-
image: ghcr.io/kube-vip/kube-vip:v0.9.1
206+
image: ghcr.io/kube-vip/kube-vip-iptables:v0.9.1
201207
imagePullPolicy: IfNotPresent
202208
name: kube-vip
203209
resources: {}
204210
securityContext:
205-
capabilities:
206-
add:
207-
- NET_ADMIN
208-
- NET_RAW
209-
drop:
210-
- ALL
211+
privileged: true
211212
volumeMounts:
212213
- mountPath: /etc/kubernetes/admin.conf
213214
name: kubeconfig

hack/addons/update-kube-vip-manifests.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,20 @@ docker container run --rm ghcr.io/kube-vip/kube-vip:"${KUBE_VIP_VERSION}" \
2222
--arp \
2323
--address='127.0.0.1' \
2424
--controlplane \
25+
--enableLoadBalancer \
26+
--lbForwardingMethod=masquerade \
2527
--leaderElection \
2628
--leaseDuration=15 \
2729
--leaseRenewDuration=10 \
2830
--leaseRetry=2 \
2931
--prometheusHTTPServer='' |
3032
gojq --yaml-input --yaml-output \
31-
'del(.metadata.creationTimestamp, .status) |
32-
.spec.containers[].imagePullPolicy |= "IfNotPresent" |
33-
(.spec.containers[0].env[] | select(.name == "port").value) |= "{{ .Port }}" |
34-
(.spec.containers[0].env[] | select(.name == "address").value) |= "{{ .Address }}"
35-
' >"${ASSETS_DIR}/${FILE_NAME}"
33+
"del(.metadata.creationTimestamp, .status) |
34+
.spec.containers[].imagePullPolicy |= \"IfNotPresent\" |
35+
(.spec.containers[0].env[] | select(.name == \"port\").value) |= \"{{ .Port }}\" |
36+
(.spec.containers[0].env[] | select(.name == \"address\").value) |= \"{{ .Address }}\" |
37+
.spec.containers[0].image |= \"ghcr.io/kube-vip/kube-vip-iptables:${KUBE_VIP_VERSION}\"
38+
" >"${ASSETS_DIR}/${FILE_NAME}"
3639

3740
# add 8 spaces to each line so that the kustomize template can be properly indented
3841
sed -i -e 's/^/ /' "${ASSETS_DIR}/${FILE_NAME}"

hack/examples/files/kube-vip.yaml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,21 @@
3434
value: "10"
3535
- name: vip_retryperiod
3636
value: "2"
37+
- name: lb_enable
38+
value: "true"
39+
- name: lb_port
40+
value: "6443"
41+
- name: lb_fwdmethod
42+
value: masquerade
3743
- name: address
3844
value: '{{ .Address }}'
3945
- name: prometheus_server
40-
image: ghcr.io/kube-vip/kube-vip:v0.9.1
46+
image: ghcr.io/kube-vip/kube-vip-iptables:v0.9.1
4147
imagePullPolicy: IfNotPresent
4248
name: kube-vip
4349
resources: {}
4450
securityContext:
45-
capabilities:
46-
add:
47-
- NET_ADMIN
48-
- NET_RAW
49-
drop:
50-
- ALL
51+
privileged: true
5152
volumeMounts:
5253
- mountPath: /etc/kubernetes/admin.conf
5354
name: kubeconfig

0 commit comments

Comments
 (0)