diff --git a/ansible/k8s_post_install.yml b/ansible/k8s_post_install.yml index 083c8ae..3b4324d 100644 --- a/ansible/k8s_post_install.yml +++ b/ansible/k8s_post_install.yml @@ -1,58 +1,88 @@ --- -- name: Финальная настройка узлов (CNI Fix) +- name: 1. Исправление сетевых путей (CNI Fix) hosts: masters,workers become: true tasks: - - name: Исправление путей CNI для Debian 13 + - name: Создание симлинка для Cilium CNI (Debian 13 Fix) shell: | mkdir -p /usr/lib/cni ln -sf /opt/cni/bin/cilium-cni /usr/lib/cni/cilium-cni changed_when: true - - name: Перезапуск Kubelet для применения CNI + - name: Перезапуск Kubelet systemctl: name: kubelet state: restarted -- name: Настройка ресурсов кластера (Storage & Network) +- name: 2. Настройка ресурсов кластера (Storage & Network) hosts: masters - become: false # Выполняем от ubuntu через kubectl + become: false + vars: + # Эта переменная должна быть задана в Semaphore Survey + # Если не задана, используем дефолт + ip_range: "{{ metallb_ip_range | default('10.33.33.210-10.33.33.250') }}" tasks: - - name: 1. Установка Local Path Provisioner (Storage) - kubernetes.core.k8s: - src: https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml - state: present + - name: Установка Local Path Provisioner (Storage) + shell: kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml - - name: 2. Установка StorageClass по умолчанию - shell: | - kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' + - name: Установка StorageClass по умолчанию + shell: kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' ignore_errors: true - - name: 3. Установка MetalLB (Manifest) - kubernetes.core.k8s: - src: https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml - state: present + - name: Установка MetalLB (Manifest) + shell: kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml - - name: 4. Ожидание запуска MetalLB Controller - shell: kubectl wait --namespace metallb-system --for=condition=ready pod -l app=metallb,component=controller --timeout=300s + - name: Ожидание запуска MetalLB Controller (может занять время) + shell: kubectl wait --namespace metallb-system --for=condition=ready pod -l app=metallb,component=controller --timeout=120s changed_when: false + ignore_errors: true - - name: 5. Удаление блокирующего Webhook (Fix "operation not permitted") + - name: Удаление блокирующего Webhook (Fix "operation not permitted") shell: kubectl delete validatingwebhookconfiguration metallb-webhook-configuration ignore_errors: true - - name: 6. Применение конфигурации IP Pool - kubernetes.core.k8s: - definition: "{{ lookup('template', 'templates/ippool.j2') }}" - state: present + - name: Создание временного файла конфигурации IP Pool + copy: + dest: /tmp/ippool_config.yaml + content: | + apiVersion: metallb.io/v1beta1 + kind: IPAddressPool + metadata: + name: main-pool + namespace: metallb-system + spec: + addresses: + - {{ ip_range }} + --- + apiVersion: metallb.io/v1beta1 + kind: L2Advertisement + metadata: + name: l2-adv + namespace: metallb-system -- name: Проверка готовности кластера + - name: Применение конфигурации IP Pool + shell: kubectl apply -f /tmp/ippool_config.yaml + + - name: Удаление временного файла + file: + path: /tmp/ippool_config.yaml + state: absent + +- name: 3. Финальная проверка hosts: masters tasks: - - name: Get Nodes Status + - name: Проверка статуса узлов shell: kubectl get nodes - register: nodes_status + register: nodes_out - - name: Show Nodes + - name: Список запущенных подов во всех неймспейсах + shell: kubectl get pods -A + register: pods_out + + - name: Вывод статуса кластера debug: - var: nodes_status.stdout_lines \ No newline at end of file + msg: + - "УЗЛЫ:" + - "{{ nodes_out.stdout_lines }}" + - "ПОДЫ:" + - "{{ pods_out.stdout_lines }}" \ No newline at end of file