feat(kubernetes): add initial setup for ArgoCD, Cert-Manager, MetalLB, and Traefik
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev>
This commit is contained in:
4
roles/kubernetes_metallb/defaults/main.yml
Normal file
4
roles/kubernetes_metallb/defaults/main.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
metallb_version: v0.15.2
|
||||
metallb_ip_range: "192.168.178.200-192.168.178.220"
|
||||
metallb_manifest_url: "https://raw.githubusercontent.com/metallb/metallb/{{ metallb_version }}/config/manifests/metallb-native.yaml"
|
||||
62
roles/kubernetes_metallb/tasks/main.yml
Normal file
62
roles/kubernetes_metallb/tasks/main.yml
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
- name: Ensure metallb-system namespace exists
|
||||
kubernetes.core.k8s:
|
||||
name: metallb-system
|
||||
api_version: v1
|
||||
kind: Namespace
|
||||
state: present
|
||||
tags:
|
||||
- metallb
|
||||
- namespace
|
||||
|
||||
- name: Download MetalLB manifest
|
||||
ansible.builtin.get_url:
|
||||
url: "{{ metallb_manifest_url }}"
|
||||
dest: "/tmp/metallb.yaml"
|
||||
mode: "0644"
|
||||
validate_certs: true
|
||||
run_once: true
|
||||
tags:
|
||||
- metallb
|
||||
- download
|
||||
|
||||
- name: Apply MetalLB core manifests
|
||||
kubernetes.core.k8s:
|
||||
src: "/tmp/metallb.yaml"
|
||||
state: present
|
||||
namespace: metallb-system
|
||||
tags:
|
||||
- metallb
|
||||
- apply_manifest
|
||||
|
||||
- name: Create IPAddressPool for MetalLB
|
||||
kubernetes.core.k8s:
|
||||
state: present
|
||||
namespace: metallb-system
|
||||
definition: "{{ lookup('ansible.builtin.template', 'ipaddresspool.yml.j2') | from_yaml }}"
|
||||
tags:
|
||||
- metallb
|
||||
- ip_pool
|
||||
|
||||
- name: Create L2Advertisement for MetalLB
|
||||
kubernetes.core.k8s:
|
||||
state: present
|
||||
namespace: metallb-system
|
||||
definition: "{{ lookup('ansible.builtin.template', 'l2advertisement.yml.j2') | from_yaml }}"
|
||||
tags:
|
||||
- metallb
|
||||
- l2_advertisement
|
||||
|
||||
- name: Setup DNS on Netcup
|
||||
community.general.netcup_dns:
|
||||
api_key: "{{ netcup_api_key }}"
|
||||
api_password: "{{ netcup_api_password }}"
|
||||
customer_id: "{{ netcup_customer_id }}"
|
||||
domain: "{{ domain }}"
|
||||
name: "{{ service.name }}.k3s"
|
||||
type: "A"
|
||||
value: "{{ service.ip }}"
|
||||
loop: "{{ services }}"
|
||||
loop_control:
|
||||
loop_var: service
|
||||
delegate_to: localhost
|
||||
9
roles/kubernetes_metallb/templates/ipaddresspool.yml.j2
Normal file
9
roles/kubernetes_metallb/templates/ipaddresspool.yml.j2
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: IPAddressPool
|
||||
metadata:
|
||||
name: default-pool
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
addresses:
|
||||
- "{{ metallb_ip_range }}"
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: L2Advertisement
|
||||
metadata:
|
||||
name: default-l2advertisement
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
ipAddressPools:
|
||||
- default-pool
|
||||
Reference in New Issue
Block a user