With the kube_vip_bgp_peers it is possible to define
multiple BGP peer ASN & address pairs for kube-vip.
Sample:
```
kube_vip_bgp_peers:
- peer_address: 192.168.128.10
peer_asn: 64512
- peer_address: 192.168.128.11
peer_asn: 64512
- peer_address: 192.168.128.12
peer_asn: 64512
```
It is possible to merge further lists with kube_vip_bgp_peers__*
parameters.
Sample:
```
kube_vip_bgp_peers__extra:
- peer_address: 192.168.128.10
peer_asn: 64512
kube_vip_bgp_peers:
- peer_address: 192.168.128.11
peer_asn: 64512
- peer_address: 192.168.128.12
peer_asn: 64512
```
This will result in the following list of BGP peer ASN & address pairs:
```
- peer_address: 192.168.128.10
peer_asn: 64512
- peer_address: 192.168.128.11
peer_asn: 64512
- peer_address: 192.168.128.12
peer_asn: 64512
```
Signed-off-by: Christian Berendt <berendt@osism.tech>
Co-authored-by: Techno Tim <timothystewart6@gmail.com>
105 lines
3.1 KiB
Django/Jinja
105 lines
3.1 KiB
Django/Jinja
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
name: kube-vip-ds
|
|
namespace: kube-system
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
name: kube-vip-ds
|
|
template:
|
|
metadata:
|
|
labels:
|
|
name: kube-vip-ds
|
|
spec:
|
|
affinity:
|
|
nodeAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
nodeSelectorTerms:
|
|
- matchExpressions:
|
|
- key: node-role.kubernetes.io/master
|
|
operator: Exists
|
|
- matchExpressions:
|
|
- key: node-role.kubernetes.io/control-plane
|
|
operator: Exists
|
|
containers:
|
|
- args:
|
|
- manager
|
|
env:
|
|
- name: vip_arp
|
|
value: "{{ 'true' if kube_vip_arp | default(true) | bool else 'false' }}"
|
|
- name: bgp_enable
|
|
value: "{{ 'true' if kube_vip_bgp | default(false) | bool else 'false' }}"
|
|
- name: port
|
|
value: "6443"
|
|
{% if kube_vip_iface %}
|
|
- name: vip_interface
|
|
value: {{ kube_vip_iface }}
|
|
{% endif %}
|
|
- name: vip_cidr
|
|
value: "{{ apiserver_endpoint | ansible.utils.ipsubnet | ansible.utils.ipaddr('prefix') }}"
|
|
- name: cp_enable
|
|
value: "true"
|
|
- name: cp_namespace
|
|
value: kube-system
|
|
- name: vip_ddns
|
|
value: "false"
|
|
- name: svc_enable
|
|
value: "{{ 'true' if kube_vip_lb_ip_range is defined else 'false' }}"
|
|
- name: vip_leaderelection
|
|
value: "true"
|
|
- name: vip_leaseduration
|
|
value: "15"
|
|
- name: vip_renewdeadline
|
|
value: "10"
|
|
- name: vip_retryperiod
|
|
value: "2"
|
|
- name: address
|
|
value: {{ apiserver_endpoint }}
|
|
{% if kube_vip_bgp | default(false) | bool %}
|
|
{% if kube_vip_bgp_routerid is defined %}
|
|
- name: bgp_routerid
|
|
value: "{{ kube_vip_bgp_routerid }}"
|
|
{% endif %}
|
|
{% if _kube_vip_bgp_peers | length > 0 %}
|
|
- name: bgppeers
|
|
value: "{{ _kube_vip_bgp_peers | map(attribute='peer_address') | zip(_kube_vip_bgp_peers| map(attribute='peer_asn')) | map('join', ',') | join(':') }}" # yamllint disable-line rule:line-length
|
|
{% else %}
|
|
{% if kube_vip_bgp_as is defined %}
|
|
- name: bgp_as
|
|
value: "{{ kube_vip_bgp_as }}"
|
|
{% endif %}
|
|
{% if kube_vip_bgp_peeraddress is defined %}
|
|
- name: bgp_peeraddress
|
|
value: "{{ kube_vip_bgp_peeraddress }}"
|
|
{% endif %}
|
|
{% if kube_vip_bgp_peeras is defined %}
|
|
- name: bgp_peeras
|
|
value: "{{ kube_vip_bgp_peeras }}"
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endif %}
|
|
image: ghcr.io/kube-vip/kube-vip:{{ kube_vip_tag_version }}
|
|
imagePullPolicy: Always
|
|
name: kube-vip
|
|
resources: {}
|
|
securityContext:
|
|
capabilities:
|
|
add:
|
|
- NET_ADMIN
|
|
- NET_RAW
|
|
- SYS_TIME
|
|
hostNetwork: true
|
|
serviceAccountName: kube-vip
|
|
tolerations:
|
|
- effect: NoSchedule
|
|
operator: Exists
|
|
- effect: NoExecute
|
|
operator: Exists
|
|
updateStrategy: {}
|
|
status:
|
|
currentNumberScheduled: 0
|
|
desiredNumberScheduled: 0
|
|
numberMisscheduled: 0
|
|
numberReady: 0
|