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
|
pass
|
||||||
|
|
||||||
def create_portforwards():
|
def create_portforwards():
|
||||||
"""Создает port-forward для всех сервисов из preset"""
|
"""Создает port-forward для всех сервисов из preset на локальном компьютере"""
|
||||||
# Загружаем preset
|
# Загружаем preset
|
||||||
preset_file = "molecule/presets/k8s/kubernetes.yml"
|
preset_file = "molecule/presets/k8s/kubernetes.yml"
|
||||||
with open(preset_file, 'r') as f:
|
with open(preset_file, 'r') as f:
|
||||||
@@ -89,7 +89,29 @@ def create_portforwards():
|
|||||||
cluster_name = preset['kind_clusters'][0]['name']
|
cluster_name = preset['kind_clusters'][0]['name']
|
||||||
addon_ports = preset['kind_clusters'][0].get('addon_ports', {})
|
addon_ports = preset['kind_clusters'][0].get('addon_ports', {})
|
||||||
|
|
||||||
|
# Получаем kubeconfig из контейнера k8s-controller
|
||||||
print(f"🔌 Создание port-forward для кластера: {cluster_name}")
|
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
|
# Prometheus
|
||||||
if addon_ports.get('prometheus'):
|
if addon_ports.get('prometheus'):
|
||||||
@@ -97,8 +119,7 @@ def create_portforwards():
|
|||||||
print(f" - Prometheus: localhost:{port} -> monitoring/monitoring-kube-prometheus-prometheus:9090")
|
print(f" - Prometheus: localhost:{port} -> monitoring/monitoring-kube-prometheus-prometheus:9090")
|
||||||
subprocess.Popen([
|
subprocess.Popen([
|
||||||
"kubectl",
|
"kubectl",
|
||||||
"--server=https://{}-control-plane:6443".format(cluster_name),
|
f"--kubeconfig={kubeconfig_file}",
|
||||||
"--insecure-skip-tls-verify",
|
|
||||||
"port-forward",
|
"port-forward",
|
||||||
"-n", "monitoring",
|
"-n", "monitoring",
|
||||||
"svc/monitoring-kube-prometheus-prometheus",
|
"svc/monitoring-kube-prometheus-prometheus",
|
||||||
@@ -111,8 +132,7 @@ def create_portforwards():
|
|||||||
print(f" - Grafana: localhost:{port} -> monitoring/monitoring-grafana:80")
|
print(f" - Grafana: localhost:{port} -> monitoring/monitoring-grafana:80")
|
||||||
subprocess.Popen([
|
subprocess.Popen([
|
||||||
"kubectl",
|
"kubectl",
|
||||||
"--server=https://{}-control-plane:6443".format(cluster_name),
|
f"--kubeconfig={kubeconfig_file}",
|
||||||
"--insecure-skip-tls-verify",
|
|
||||||
"port-forward",
|
"port-forward",
|
||||||
"-n", "monitoring",
|
"-n", "monitoring",
|
||||||
"svc/monitoring-grafana",
|
"svc/monitoring-grafana",
|
||||||
@@ -125,8 +145,7 @@ def create_portforwards():
|
|||||||
print(f" - Kiali: localhost:{port} -> istio-system/kiali:20001")
|
print(f" - Kiali: localhost:{port} -> istio-system/kiali:20001")
|
||||||
subprocess.Popen([
|
subprocess.Popen([
|
||||||
"kubectl",
|
"kubectl",
|
||||||
"--server=https://{}-control-plane:6443".format(cluster_name),
|
f"--kubeconfig={kubeconfig_file}",
|
||||||
"--insecure-skip-tls-verify",
|
|
||||||
"port-forward",
|
"port-forward",
|
||||||
"-n", "istio-system",
|
"-n", "istio-system",
|
||||||
"svc/kiali",
|
"svc/kiali",
|
||||||
@@ -139,8 +158,7 @@ def create_portforwards():
|
|||||||
print(f" - Metrics Server: localhost:{port} -> kube-system/metrics-server:4443")
|
print(f" - Metrics Server: localhost:{port} -> kube-system/metrics-server:4443")
|
||||||
subprocess.Popen([
|
subprocess.Popen([
|
||||||
"kubectl",
|
"kubectl",
|
||||||
"--server=https://{}-control-plane:6443".format(cluster_name),
|
f"--kubeconfig={kubeconfig_file}",
|
||||||
"--insecure-skip-tls-verify",
|
|
||||||
"port-forward",
|
"port-forward",
|
||||||
"-n", "kube-system",
|
"-n", "kube-system",
|
||||||
"svc/metrics-server",
|
"svc/metrics-server",
|
||||||
|
|||||||
Reference in New Issue
Block a user