Files
kubernetes-security-baselin…/ansible/roles/cilium_bootstrap/tasks/main.yml
T
swaphb 1a372b7eac
Kube-bench CIS scan / Scan ephemeral K3s cluster (push) Successful in 1m0s
fix cilium routing and cluster dns
2026-08-16 19:41:40 -04:00

73 lines
2.5 KiB
YAML

---
- name: Discover the k3d API server port from the active kubeconfig
ansible.builtin.raw: >-
awk -F: '/server:/{print $4; exit}' /home/{{ k3d_user }}/.kube/config
become_user: "{{ k3d_user }}"
register: cilium_discovered_api_port
changed_when: false
when: cilium_k8s_service_port | int == 0
- name: Use the discovered k3d API server port
ansible.builtin.set_fact:
cilium_k8s_service_port: "{{ cilium_discovered_api_port.stdout | trim }}"
when: cilium_k8s_service_port | int == 0
- name: Require a reachable Kubernetes API endpoint
ansible.builtin.assert:
that:
- cilium_k8s_service_host | length > 0
- cilium_k8s_service_port | int > 0
fail_msg: Set cilium_k8s_service_host and cilium_k8s_service_port for kube-proxy replacement.
- name: Verify kube-proxy is disabled
ansible.builtin.raw: "{{ k3d_tool_dir }}/kubectl -n kube-system get daemonset kube-proxy"
become_user: "{{ k3d_user }}"
register: kube_proxy_check
changed_when: false
failed_when: false
- name: Refuse Cilium replacement when kube-proxy is present
ansible.builtin.assert:
that:
- kube_proxy_check.rc != 0
fail_msg: kube-proxy is present. Create the cluster with a kube-proxy-free profile first.
- name: Add the Cilium Helm repository
ansible.builtin.raw: "{{ k3d_tool_dir }}/helm repo add cilium https://helm.cilium.io/"
become_user: "{{ k3d_user }}"
changed_when: false
- name: Update Helm repositories
ansible.builtin.raw: "{{ k3d_tool_dir }}/helm repo update"
become_user: "{{ k3d_user }}"
changed_when: false
- name: Install Cilium with kube-proxy replacement
ansible.builtin.raw: >-
{{ k3d_tool_dir }}/helm upgrade --install cilium cilium/cilium
--namespace {{ cilium_namespace }}
--version {{ cilium_chart_version }}
--values {{ cilium_values_file }}
--set kubeProxyReplacement=true
--set k8sServiceHost={{ cilium_k8s_service_host }}
--set k8sServicePort={{ cilium_k8s_service_port }}
--wait --timeout 10m
become_user: "{{ k3d_user }}"
- name: Wait for Cilium agents
ansible.builtin.raw: >-
{{ k3d_tool_dir }}/kubectl -n {{ cilium_namespace }} rollout status
daemonset/cilium --timeout=300s
become_user: "{{ k3d_user }}"
- name: Verify all Kubernetes nodes become Ready after Cilium starts
ansible.builtin.raw: "{{ k3d_tool_dir }}/kubectl get nodes --no-headers"
become_user: "{{ k3d_user }}"
register: cilium_ready_nodes
changed_when: false
retries: 18
delay: 10
until:
- cilium_ready_nodes.rc == 0
- cilium_ready_nodes.stdout is search(' Ready ')