refactor: использование ClusterIP вместо NodePort

- Убрана логика патчинга NodePort для Prometheus, Grafana и Kiali
- Сервисы теперь остаются с типом ClusterIP
- Порты пробрасываются через extraPortMappings в Kind конфиге
- Использованы стандартные порты: Prometheus 9090, Grafana 3000, Kiali 20001
- Более простой и надежный подход без ограничений NodePort диапазона
This commit is contained in:
Сергей Антропов
2025-10-26 09:11:32 +03:00
parent e2b9d94075
commit 87002cb9b3
2 changed files with 15 additions and 38 deletions

View File

@@ -48,15 +48,15 @@ kind_clusters:
# Документация: https://devops.org.ru # Документация: https://devops.org.ru
# Ingress HTTP: http://localhost:8081 # Ingress HTTP: http://localhost:8081
# Ingress HTTPS: https://localhost:8443 # Ingress HTTPS: https://localhost:8443
# Prometheus: http://localhost:30900 # Prometheus: http://localhost:9090
# Grafana: http://localhost:30000 (admin/admin) # Grafana: http://localhost:3000 (admin/admin)
# Kiali: http://localhost:32001 # Kiali: http://localhost:20001
addon_ports: addon_ports:
ingress_http: 8081 ingress_http: 8081
ingress_https: 8443 ingress_https: 8443
prometheus: 30900 prometheus: 9090
grafana: 30000 grafana: 3000
kiali: 32001 kiali: 20001
hosts: hosts:
# Стандартный набор - 2 хоста для базового тестирования (стабильные ОС) # Стандартный набор - 2 хоста для базового тестирования (стабильные ОС)

View File

@@ -142,27 +142,27 @@ def main():
'protocol': 'TCP' 'protocol': 'TCP'
}) })
# Prometheus порт - мапим NodePort на hostPort # Prometheus порт - пробрасываем изнутри кластера (9090) на внешний порт
if addon_ports.get('prometheus'): if addon_ports.get('prometheus'):
port_mappings.append({ port_mappings.append({
'containerPort': addon_ports['prometheus'], 'containerPort': 9090, # Внутренний порт Prometheus
'hostPort': addon_ports['prometheus'], 'hostPort': addon_ports['prometheus'], # Внешний порт на хосте
'protocol': 'TCP' 'protocol': 'TCP'
}) })
# Grafana порт - мапим NodePort на hostPort # Grafana порт - пробрасываем изнутри кластера (3000) на внешний порт
if addon_ports.get('grafana'): if addon_ports.get('grafana'):
port_mappings.append({ port_mappings.append({
'containerPort': addon_ports['grafana'], 'containerPort': 3000, # Внутренний порт Grafana
'hostPort': addon_ports['grafana'], 'hostPort': addon_ports['grafana'], # Внешний порт на хосте
'protocol': 'TCP' 'protocol': 'TCP'
}) })
# Kiali порт - мапим NodePort на hostPort # Kiali порт - пробрасываем изнутри кластера (20001) на внешний порт
if addon_ports.get('kiali'): if addon_ports.get('kiali'):
port_mappings.append({ port_mappings.append({
'containerPort': addon_ports['kiali'], 'containerPort': 20001, # Внутренний порт Kiali
'hostPort': addon_ports['kiali'], 'hostPort': addon_ports['kiali'], # Внешний порт на хосте
'protocol': 'TCP' '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"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") 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(f"✅ Кластер '{name}' готов!")
print("\n🎉 Все кластеры созданы!") print("\n🎉 Все кластеры созданы!")