feat: update control plane role

This commit is contained in:
2026-06-30 00:25:44 +01:00
parent 6a127588f0
commit 010f0657b5
4 changed files with 64 additions and 35 deletions
@@ -0,0 +1,13 @@
- name: Ensure Longhorn repository exists
kubernetes.core.helm_repository:
name: longhorn
url: https://charts.longhorn.io
- name: Ensure Longhorn is installed
kubernetes.core.helm:
release_name: longhorn
release_namespace: longhorn-system
chart_ref: longhorn/longhorn
chart_version: 1.12.0
create_namespace: true
run_once: true
@@ -1,65 +1,63 @@
- name: Install kube-vip - name: Install kube-vip static pod
ansible.builtin.import_tasks: kube-vip.yaml ansible.builtin.import_tasks: kube-vip.yaml
- name: Copy kubeadm config
ansible.builtin.template:
src: kubeadm-config.yaml.j2
dest: /tmp/kubeadm-config.yaml
mode: "0600"
- name: Initialise Kubernetes cluster - name: Initialise Kubernetes cluster
ansible.builtin.command: ansible.builtin.command: kubeadm init --config /tmp/kubeadm-config.yaml
argv:
- kubeadm
- init
- --pod-network-cidr=172.16.0.0/16
- --control-plane-endpoint={{ vip_address }}:6443
- --upload-certs
args: args:
creates: /etc/kubernetes/admin.conf creates: /etc/kubernetes/admin.conf
run_once: true run_once: true
- name: Copy Kubernetes Admin Configuration
ansible.builtin.include_tasks: copy-config.yaml
run_once: true
- name: Generate Join Command - name: Generate Join Command
ansible.builtin.command: ansible.builtin.command: kubeadm token create --print-join-command
argv:
- kubeadm
- token
- create
- --print-join-command
register: kubernetes_control_plane_join_command register: kubernetes_control_plane_join_command
run_once: true run_once: true
changed_when: true changed_when: true
- name: Get Certificate Key - name: Get Certificate Key
ansible.builtin.shell: ansible.builtin.shell: set -o pipefail && kubeadm init phase upload-certs --upload-certs | tail -n 1
cmd: set -o pipefail && kubeadm init phase upload-certs --upload-certs | tail -n 1
register: kubernetes_control_plane_certificate_key register: kubernetes_control_plane_certificate_key
run_once: true run_once: true
changed_when: true changed_when: true
- name: Join Additional Control Planes - name: Join Additional Control Planes
ansible.builtin.command: ansible.builtin.command: >-
cmd: "{{ kubernetes_control_plane_join_command.stdout }} --control-plane --certificate-key {{ kubernetes_control_plane_certificate_key.stdout }}" {{ kubernetes_control_plane_join_command.stdout }}
--control-plane
--certificate-key
{{ kubernetes_control_plane_certificate_key.stdout }}
args: args:
creates: /etc/kubernetes/admin.conf creates: /etc/kubernetes/admin.conf
- name: Copy Kubernetes Admin Config
ansible.builtin.command: "{{ item }}" - name: Copy Kubernetes Admin Configuration
loop: ansible.builtin.include_tasks: copy-config.yaml
- mkdir -p $HOME/.kube
- cp /etc/kubernetes/admin.conf $HOME/.kube/config
- chown $(id -u):$(id -g) $HOME/.kube/config
args:
creates: $HOME/.kube/config
- name: Untaint control planes - name: Untaint control planes
ansible.builtin.import_tasks: untaint.yaml ansible.builtin.import_tasks: untaint.yaml
- name: Install Kubernetes CLI
ansible.builtin.apt:
pkg:
- kubectl
state: present
- name: Install Helm - name: Install Tools
ansible.builtin.import_tasks: helm.yaml ansible.builtin.import_tasks: tools.yaml
- name: Install Cilium CNI - name: Install Cilium CNI
ansible.builtin.import_tasks: cilium.yaml ansible.builtin.import_tasks: cilium.yaml
# - name: Install Longhorn CSI
# ansible.builtin.import_tasks: longhorn.yaml
@@ -8,8 +8,11 @@
signed_by: https://packages.buildkite.com/helm-linux/helm-debian/gpgkey signed_by: https://packages.buildkite.com/helm-linux/helm-debian/gpgkey
state: present state: present
- name: Install Helm
- name: Install Kubernetes Tools
ansible.builtin.apt: ansible.builtin.apt:
name: helm pkg:
- kubectl
- helm
state: present state: present
update_cache: true update_cache: true
@@ -0,0 +1,15 @@
# Configuration reference can be found at https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta4/
apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
clusterName: aeon
controlPlaneEndpoint: "{{ vip_address }}"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
failSwapOn: false
memorySwap:
swapBehaviour: LimitedSwap