snel.kubernetes-cluster/roles/k8s_metallb/tasks/main.yml

58 lines
1.6 KiB
YAML

---
- name: Namespace for MetalLB
delegate_to: "{{ kubectl_host }}"
kubernetes.core.k8s:
kubeconfig: "{{ kubeconfig }}"
resource_definition:
kind: Namespace
metadata:
name: metallb-system
labels:
pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/enforce: privileged
pod-security.kubernetes.io/warn: privileged
- name: Helm add MetalLB repo
delegate_to: "{{ kubectl_host }}"
run_once: true
kubernetes.core.helm_repository:
name: metallb
repo_url: "https://metallb.github.io/metallb"
- name: Helm deploy MetalLB
delegate_to: "{{ kubectl_host }}"
kubernetes.core.helm:
kubeconfig: "{{ kubeconfig }}"
chart_ref: metallb/metallb
release_name: metallb
release_namespace: metallb-system
create_namespace: false
wait: true
timeout: "30m"
# https://github.com/metallb/metallb/blob/main/charts/metallb/values.yaml
- name: Addresss pool for MetalLB
delegate_to: "{{ kubectl_host }}"
kubernetes.core.k8s:
kubeconfig: "{{ kubeconfig }}"
resource_definition:
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: all-nodes
namespace: metallb-system
spec:
addresses: "{{ ingress_ips | product(['/32']) | map('join') | list }}"
- name: L2Advertisement for MetalLB
delegate_to: "{{ kubectl_host }}"
kubernetes.core.k8s:
kubeconfig: "{{ kubeconfig }}"
resource_definition:
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: advertisement
namespace: metallb-system