From 87002cb9b3ef382f641888504a6a5db33b5ac500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=90=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BF=D0=BE=D0=B2?= Date: Sun, 26 Oct 2025 09:11:32 +0300 Subject: [PATCH] =?UTF-8?q?refactor:=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20ClusterIP=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20NodePort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Убрана логика патчинга NodePort для Prometheus, Grafana и Kiali - Сервисы теперь остаются с типом ClusterIP - Порты пробрасываются через extraPortMappings в Kind конфиге - Использованы стандартные порты: Prometheus 9090, Grafana 3000, Kiali 20001 - Более простой и надежный подход без ограничений NodePort диапазона --- molecule/presets/k8s/kubernetes.yml | 12 ++++----- scripts/create_k8s_cluster.py | 41 +++++++---------------------- 2 files changed, 15 insertions(+), 38 deletions(-) diff --git a/molecule/presets/k8s/kubernetes.yml b/molecule/presets/k8s/kubernetes.yml index 8a00d1d..0a94f56 100644 --- a/molecule/presets/k8s/kubernetes.yml +++ b/molecule/presets/k8s/kubernetes.yml @@ -48,15 +48,15 @@ kind_clusters: # Документация: https://devops.org.ru # Ingress HTTP: http://localhost:8081 # Ingress HTTPS: https://localhost:8443 - # Prometheus: http://localhost:30900 - # Grafana: http://localhost:30000 (admin/admin) - # Kiali: http://localhost:32001 + # Prometheus: http://localhost:9090 + # Grafana: http://localhost:3000 (admin/admin) + # Kiali: http://localhost:20001 addon_ports: ingress_http: 8081 ingress_https: 8443 - prometheus: 30900 - grafana: 30000 - kiali: 32001 + prometheus: 9090 + grafana: 3000 + kiali: 20001 hosts: # Стандартный набор - 2 хоста для базового тестирования (стабильные ОС) diff --git a/scripts/create_k8s_cluster.py b/scripts/create_k8s_cluster.py index b853893..e497d34 100755 --- a/scripts/create_k8s_cluster.py +++ b/scripts/create_k8s_cluster.py @@ -142,27 +142,27 @@ def main(): 'protocol': 'TCP' }) - # Prometheus порт - мапим NodePort на hostPort + # Prometheus порт - пробрасываем изнутри кластера (9090) на внешний порт if addon_ports.get('prometheus'): port_mappings.append({ - 'containerPort': addon_ports['prometheus'], - 'hostPort': addon_ports['prometheus'], + 'containerPort': 9090, # Внутренний порт Prometheus + 'hostPort': addon_ports['prometheus'], # Внешний порт на хосте 'protocol': 'TCP' }) - # Grafana порт - мапим NodePort на hostPort + # Grafana порт - пробрасываем изнутри кластера (3000) на внешний порт if addon_ports.get('grafana'): port_mappings.append({ - 'containerPort': addon_ports['grafana'], - 'hostPort': addon_ports['grafana'], + 'containerPort': 3000, # Внутренний порт Grafana + 'hostPort': addon_ports['grafana'], # Внешний порт на хосте 'protocol': 'TCP' }) - # Kiali порт - мапим NodePort на hostPort + # Kiali порт - пробрасываем изнутри кластера (20001) на внешний порт if addon_ports.get('kiali'): port_mappings.append({ - 'containerPort': addon_ports['kiali'], - 'hostPort': addon_ports['kiali'], + 'containerPort': 20001, # Внутренний порт Kiali + 'hostPort': addon_ports['kiali'], # Внешний порт на хосте 'protocol': 'TCP' }) @@ -257,29 +257,6 @@ def main(): run_cmd(f"KUBECONFIG=/tmp/istio-kubeconfig-{name}.yaml helm upgrade --install monitoring prometheus-community/kube-prometheus-stack --namespace monitoring --set grafana.adminPassword=admin --set grafana.defaultDashboardsTimezone=browser --wait --timeout 600s") run_cmd(f"kubectl --server=https://{name}-control-plane:6443 --insecure-skip-tls-verify -n monitoring rollout status deploy/monitoring-grafana --timeout=300s") - # Настраиваем NodePort для аддонов - addon_ports = cluster.get('addon_ports', {}) - if addon_ports: - print("\n🔌 Настройка NodePort для аддонов") - - if 'prometheus' in addon_ports: - port = addon_ports['prometheus'] - print(f" - Prometheus: {port}") - patch_json = f'[{{"op": "replace", "path": "/spec/type", "value":"NodePort"}},{{"op": "replace", "path": "/spec/ports/0/nodePort", "value":{port}}}]' - run_cmd(f"kubectl --server=https://{name}-control-plane:6443 --insecure-skip-tls-verify patch svc -n monitoring monitoring-kube-prom-prometheus --type='json' -p='{patch_json}'") - - if 'grafana' in addon_ports: - port = addon_ports['grafana'] - print(f" - Grafana: {port}") - patch_json = f'[{{"op": "replace", "path": "/spec/type", "value":"NodePort"}},{{"op": "replace", "path": "/spec/ports/0/nodePort", "value":{port}}}]' - run_cmd(f"kubectl --server=https://{name}-control-plane:6443 --insecure-skip-tls-verify patch svc -n monitoring monitoring-grafana --type='json' -p='{patch_json}'") - - if 'kiali' in addon_ports: - port = addon_ports['kiali'] - print(f" - Kiali: {port}") - patch_json = f'[{{"op": "replace", "path": "/spec/type", "value":"NodePort"}},{{"op": "replace", "path": "/spec/ports/0/nodePort", "value":{port}}}]' - run_cmd(f"kubectl --server=https://{name}-control-plane:6443 --insecure-skip-tls-verify patch svc -n istio-system kiali --type='json' -p='{patch_json}'") - print(f"✅ Кластер '{name}' готов!") print("\n🎉 Все кластеры созданы!")