feat: port-forward теперь работает на локальном компьютере
- Скрипт получает kubeconfig из контейнера k8s-controller - Заменяет server 0.0.0.0 на localhost для локального доступа - Port-forward запускается на хосте через локальный kubectl - Все аддоны доступны на localhost: Grafana 3000, Prometheus 9090, Kiali 20001
This commit is contained in:
@@ -80,7 +80,7 @@ def clear_portforwards():
|
||||
pass
|
||||
|
||||
def create_portforwards():
|
||||
"""Создает port-forward для всех сервисов из preset"""
|
||||
"""Создает port-forward для всех сервисов из preset на локальном компьютере"""
|
||||
# Загружаем preset
|
||||
preset_file = "molecule/presets/k8s/kubernetes.yml"
|
||||
with open(preset_file, 'r') as f:
|
||||
@@ -89,7 +89,29 @@ def create_portforwards():
|
||||
cluster_name = preset['kind_clusters'][0]['name']
|
||||
addon_ports = preset['kind_clusters'][0].get('addon_ports', {})
|
||||
|
||||
# Получаем kubeconfig из контейнера k8s-controller
|
||||
print(f"🔌 Создание port-forward для кластера: {cluster_name}")
|
||||
print("📋 Получение kubeconfig из контейнера k8s-controller...")
|
||||
|
||||
# Копируем kubeconfig из контейнера
|
||||
result = subprocess.run(
|
||||
f"docker exec k8s-controller kind get kubeconfig --name {cluster_name}",
|
||||
shell=True, capture_output=True, text=True
|
||||
)
|
||||
|
||||
if result.returncode != 0:
|
||||
print(f"❌ Ошибка получения kubeconfig: {result.stderr}")
|
||||
return
|
||||
|
||||
# Сохраняем kubeconfig во временный файл
|
||||
kubeconfig_file = "/tmp/kubeconfig-lab.yaml"
|
||||
with open(kubeconfig_file, 'w') as f:
|
||||
f.write(result.stdout)
|
||||
|
||||
# Меняем server с 0.0.0.0 на localhost для локального доступа
|
||||
subprocess.run(f"sed -i.bak 's|server: https://0.0.0.0:6443|server: https://localhost:6443|g' {kubeconfig_file}", shell=True)
|
||||
|
||||
print("✅ Kubeconfig подготовлен")
|
||||
|
||||
# Prometheus
|
||||
if addon_ports.get('prometheus'):
|
||||
@@ -97,8 +119,7 @@ def create_portforwards():
|
||||
print(f" - Prometheus: localhost:{port} -> monitoring/monitoring-kube-prometheus-prometheus:9090")
|
||||
subprocess.Popen([
|
||||
"kubectl",
|
||||
"--server=https://{}-control-plane:6443".format(cluster_name),
|
||||
"--insecure-skip-tls-verify",
|
||||
f"--kubeconfig={kubeconfig_file}",
|
||||
"port-forward",
|
||||
"-n", "monitoring",
|
||||
"svc/monitoring-kube-prometheus-prometheus",
|
||||
@@ -111,8 +132,7 @@ def create_portforwards():
|
||||
print(f" - Grafana: localhost:{port} -> monitoring/monitoring-grafana:80")
|
||||
subprocess.Popen([
|
||||
"kubectl",
|
||||
"--server=https://{}-control-plane:6443".format(cluster_name),
|
||||
"--insecure-skip-tls-verify",
|
||||
f"--kubeconfig={kubeconfig_file}",
|
||||
"port-forward",
|
||||
"-n", "monitoring",
|
||||
"svc/monitoring-grafana",
|
||||
@@ -125,8 +145,7 @@ def create_portforwards():
|
||||
print(f" - Kiali: localhost:{port} -> istio-system/kiali:20001")
|
||||
subprocess.Popen([
|
||||
"kubectl",
|
||||
"--server=https://{}-control-plane:6443".format(cluster_name),
|
||||
"--insecure-skip-tls-verify",
|
||||
f"--kubeconfig={kubeconfig_file}",
|
||||
"port-forward",
|
||||
"-n", "istio-system",
|
||||
"svc/kiali",
|
||||
@@ -139,8 +158,7 @@ def create_portforwards():
|
||||
print(f" - Metrics Server: localhost:{port} -> kube-system/metrics-server:4443")
|
||||
subprocess.Popen([
|
||||
"kubectl",
|
||||
"--server=https://{}-control-plane:6443".format(cluster_name),
|
||||
"--insecure-skip-tls-verify",
|
||||
f"--kubeconfig={kubeconfig_file}",
|
||||
"port-forward",
|
||||
"-n", "kube-system",
|
||||
"svc/metrics-server",
|
||||
|
||||
Reference in New Issue
Block a user