# Исправление проблемы с Ingress ## Проблема После создания Kubernetes кластера Ingress ресурсы не доступны по доменным именам. ## Причина 1. **extraPortMappings не добавлялись в конфигурацию Kind** - порты 80 и 443 не пробрасывались на host 2. **Записи в /etc/hosts не добавлялись автоматически** при применении манифестов ## Решение ### Вариант 1: Быстрое исправление (без пересоздания кластера) 1. **Добавьте запись в `/etc/hosts` вручную:** ```bash echo "127.0.0.1 grafana.local #k8s" | sudo tee -a /etc/hosts ``` 2. **Создайте port-forward для Ingress напрямую:** ```bash # Подключитесь к кластеру export KUBECONFIG=$(docker exec k8s-controller cat /root/.kube/config) # Замените 0.0.0.0 на localhost в kubeconfig export KUBECONFIG=$(echo "$KUBECONFIG" | sed 's/0\.0\.0\.0:6443/localhost:6443/g' > /tmp/kubeconfig-local.yaml && echo /tmp/kubeconfig-local.yaml) # Создайте port-forward для Ingress HTTP kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller 8081:80 & # Проверьте доступность curl -H "Host: grafana.local" http://localhost:8081 ``` 3. **Откройте в браузере:** ``` http://grafana.local:8081 ``` ### Вариант 2: Пересоздание кластера (рекомендуется) Исправления уже внесены в код. Просто пересоздайте кластер: ```bash # Удалите старый кластер make k8s destroy kubernetes # Создайте новый (с исправлениями) make k8s create kubernetes # Примените манифест с Ingress make k8s manifest apply kubernetes manifests/test-grafana-ingress.yaml # Запись в /etc/hosts добавится автоматически # Проверьте cat /etc/hosts | grep k8s # Откройте в браузере open http://grafana.local:8081 ``` ## Проверка ```bash # 1. Проверьте Ingress docker exec k8s-controller kubectl --server=https://lab-control-plane:6443 --insecure-skip-tls-verify get ingress --all-namespaces # 2. Проверьте ports control-plane docker port lab-control-plane # Должны быть: # 6443/tcp -> 0.0.0.0:6443 # 80/tcp -> 0.0.0.0:8081 <- после исправления # 443/tcp -> 0.0.0.0:8443 <- после исправления # 3. Проверьте доступность curl -H "Host: grafana.local" http://localhost:8081 ``` ## Что было исправлено 1. В `scripts/create_k8s_cluster.py` исправлена логика добавления `extraPortMappings` в конфигурацию Kind 2. Порты 80 и 443 теперь правильно пробрасываются на host (8081 и 8443) 3. Манифест Ingress можно применить и автоматически добавить запись в `/etc/hosts` ## Дополнительно Если Ingress всё ещё не работает: 1. **Проверьте статус подов Ingress Controller:** ```bash docker exec k8s-controller kubectl --server=https://lab-control-plane:6443 --insecure-skip-tls-verify get pods -n ingress-nginx ``` 2. **Проверьте логи Ingress Controller:** ```bash docker exec k8s-controller kubectl --server=https://lab-control-plane:6443 --insecure-skip-tls-verify logs -n ingress-nginx -l app.kubernetes.io/component=controller ``` 3. **Проверьте события:** ```bash docker exec k8s-controller kubectl --server=https://lab-control-plane:6443 --insecure-skip-tls-verify get events -n monitoring ```