Metallb BGP support (#212)
* Add metallb frr and bgp support * Set metallb mode to layer2 as default in sample * Add BGP resource check * Add automatic downloading of metallb-frr * Remove frr manifest
This commit is contained in:
parent
5a7ba98968
commit
dc2976e7f6
@ -43,7 +43,19 @@ extra_agent_args: >-
|
||||
# image tag for kube-vip
|
||||
kube_vip_tag_version: "v0.5.7"
|
||||
|
||||
# metallb type frr or native
|
||||
metal_lb_type: "native"
|
||||
|
||||
# metallb mode layer2 or bgp
|
||||
metal_lb_mode: "layer2"
|
||||
|
||||
# bgp options
|
||||
# metal_lb_bgp_my_asn: "64513"
|
||||
# metal_lb_bgp_peer_asn: "64512"
|
||||
# metal_lb_bgp_peer_address: "192.168.30.1"
|
||||
|
||||
# image tag for metal lb
|
||||
metal_lb_frr_tag_version: "v7.5.1"
|
||||
metal_lb_speaker_tag_version: "v0.13.7"
|
||||
metal_lb_controller_tag_version: "v0.13.7"
|
||||
|
||||
|
||||
@ -15,7 +15,16 @@
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname'] and metal_lb_type == "native"
|
||||
|
||||
- name: Download metallb-frr manifest to first master
|
||||
ansible.builtin.get_url:
|
||||
url: "https://raw.githubusercontent.com/metallb/metallb/{{ metal_lb_controller_tag_version }}/config/manifests/metallb-frr.yaml" # noqa yaml[line-length]
|
||||
dest: "/var/lib/rancher/k3s/server/manifests/metallb-frr-crds.yaml"
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname'] and metal_lb_type == "frr"
|
||||
|
||||
- name: Set image versions for metallb manifest
|
||||
ansible.builtin.replace:
|
||||
@ -27,4 +36,16 @@
|
||||
to: "metallb/speaker:{{ metal_lb_speaker_tag_version }}"
|
||||
loop_control:
|
||||
label: "{{ item.change }} => {{ item.to }}"
|
||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname']
|
||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname'] and metal_lb_type == "native"
|
||||
|
||||
- name: Set image versions for metallb-frr manifest
|
||||
ansible.builtin.replace:
|
||||
path: "/var/lib/rancher/k3s/server/manifests/metallb-frr-crds.yaml"
|
||||
regexp: "{{ item.change | ansible.builtin.regex_escape }}"
|
||||
replace: "{{ item.to }}"
|
||||
with_items:
|
||||
- change: "metallb/speaker:{{ metal_lb_controller_tag_version }}"
|
||||
to: "metallb/speaker:{{ metal_lb_speaker_tag_version }}"
|
||||
loop_control:
|
||||
label: "{{ item.change }} => {{ item.to }}"
|
||||
when: ansible_hostname == hostvars[groups['master'][0]]['ansible_hostname'] and metal_lb_type == "frr"
|
||||
|
||||
@ -79,11 +79,23 @@
|
||||
until: this.rc == 0
|
||||
retries: 5
|
||||
|
||||
- name: Test metallb-system resources
|
||||
- name: Test metallb-system resources for Layer 2 configuration
|
||||
command: >-
|
||||
k3s kubectl -n metallb-system get {{ item }}
|
||||
changed_when: false
|
||||
run_once: true
|
||||
when: metal_lb_mode == "layer2"
|
||||
with_items:
|
||||
- IPAddressPool
|
||||
- L2Advertisement
|
||||
|
||||
- name: Test metallb-system resources for BGP configuration
|
||||
command: >-
|
||||
k3s kubectl -n metallb-system get {{ item }}
|
||||
changed_when: false
|
||||
run_once: true
|
||||
when: metal_lb_mode == "bgp"
|
||||
with_items:
|
||||
- IPAddressPool
|
||||
- BGPPeer
|
||||
- BGPAdvertisement
|
||||
|
||||
@ -13,9 +13,31 @@ spec:
|
||||
{% for range in metal_lb_ip_range %}
|
||||
- {{ range }}
|
||||
{% endfor %}
|
||||
|
||||
{% if metal_lb_mode == "layer2" %}
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: L2Advertisement
|
||||
metadata:
|
||||
name: default
|
||||
namespace: metallb-system
|
||||
{% endif %}
|
||||
{% if metal_lb_mode == "bgp" %}
|
||||
---
|
||||
apiVersion: metallb.io/v1beta2
|
||||
kind: BGPPeer
|
||||
metadata:
|
||||
name: default
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
myASN: {{ metal_lb_bgp_my_asn }}
|
||||
peerASN: {{ metal_lb_bgp_peer_asn }}
|
||||
peerAddress: {{ metal_lb_bgp_peer_address }}
|
||||
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: BGPAdvertisement
|
||||
metadata:
|
||||
name: default
|
||||
namespace: metallb-system
|
||||
{% endif %}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user