25bab0e976
This changes MetalLB contrib to one of addons for deploying MetalLB with Kubernetes cluster deployment. By the default, Kubespray doesn't deploy MetalLB addon.
68 lines
2.4 KiB
YAML
68 lines
2.4 KiB
YAML
---
|
|
- name: "Kubernetes Apps | Check cluster settings for MetalLB"
|
|
fail:
|
|
msg: "MetalLB require kube_proxy_strict_arp = true, see https://github.com/danderson/metallb/issues/153#issuecomment-518651132"
|
|
when:
|
|
- "kube_proxy_mode == 'ipvs' and not kube_proxy_strict_arp"
|
|
|
|
- name: Kubernetes Apps | Check cluster settings for MetalLB
|
|
fail:
|
|
msg: "metallb_ip_range is mandatory to be specified for MetalLB"
|
|
when:
|
|
- metallb_ip_range is not defined or not metallb_ip_range
|
|
|
|
- name: Kubernetes Apps | Check AppArmor status
|
|
command: which apparmor_parser
|
|
register: apparmor_status
|
|
when:
|
|
- podsecuritypolicy_enabled
|
|
- inventory_hostname == groups['kube-master'][0]
|
|
failed_when: false
|
|
|
|
- name: Kubernetes Apps | Set apparmor_enabled
|
|
set_fact:
|
|
apparmor_enabled: "{{ apparmor_status.rc == 0 }}"
|
|
when:
|
|
- podsecuritypolicy_enabled
|
|
- inventory_hostname == groups['kube-master'][0]
|
|
|
|
- name: "Kubernetes Apps | Lay Down MetalLB"
|
|
become: true
|
|
template: { src: "{{ item }}.j2", dest: "{{ kube_config_dir }}/{{ item }}" }
|
|
with_items: ["metallb.yml", "metallb-config.yml"]
|
|
register: "rendering"
|
|
when:
|
|
- "inventory_hostname == groups['kube-master'][0]"
|
|
|
|
- name: "Kubernetes Apps | Install and configure MetalLB"
|
|
kube:
|
|
name: "MetalLB"
|
|
kubectl: "{{ bin_dir }}/kubectl"
|
|
filename: "{{ kube_config_dir }}/{{ item.item }}"
|
|
state: "{{ item.changed | ternary('latest','present') }}"
|
|
become: true
|
|
with_items: "{{ rendering.results }}"
|
|
when:
|
|
- "inventory_hostname == groups['kube-master'][0]"
|
|
|
|
- name: Kubernetes Apps | Check existing secret of MetalLB
|
|
command: "{{ bin_dir }}/kubectl --kubeconfig /etc/kubernetes/admin.conf -n metallb-system get secret memberlist"
|
|
register: metallb_secret
|
|
become: true
|
|
ignore_errors: yes
|
|
when:
|
|
- inventory_hostname == groups['kube-master'][0]
|
|
|
|
- name: Kubernetes Apps | Create random bytes for MetalLB
|
|
command: "openssl rand -base64 32"
|
|
register: metallb_rand
|
|
when:
|
|
- inventory_hostname == groups['kube-master'][0]
|
|
- metallb_secret.rc != 0
|
|
|
|
- name: Kubernetes Apps | Install secret of MetalLB if not existing
|
|
command: "{{ bin_dir }}/kubectl --kubeconfig /etc/kubernetes/admin.conf -n metallb-system create secret generic memberlist --from-literal=secretkey={{ metallb_rand.stdout }}"
|
|
become: true
|
|
when:
|
|
- inventory_hostname == groups['kube-master'][0]
|
|
- metallb_secret.rc != 0
|