Kiali anonymous, журнал Helm, kubeconfig для контейнеров, UI аддонов

- Kiali: убран login, anonymous по умолчанию; удалены поля логина/пароля из UI и API
- Журнал Helm: install/upgrade/delete, message и колонка в journal.js
- Аддоны: values свёрнуты при подгрузке для установленных
- GET …/kubeconfig/docker: host.docker.internal:порт + tls-server-name; кнопка в UI
- apply_apiserver_endpoint_to_kubeconfig_file; KIND_K8S_APISERVER_GATEWAY_HOST в compose/env.example
- README и api_routes.md обновлены
This commit is contained in:
Sergey Antropoff
2026-04-04 18:54:10 +03:00
parent 349b78d24d
commit 4b703801e1
13 changed files with 415 additions and 123 deletions
+23 -20
View File
@@ -754,11 +754,23 @@ def uninstall_metrics_server(cluster_name: str) -> tuple[bool, str]:
return True, text or "metrics-server удалён (или отсутствовал)."
def _kiali_user_values_define_auth_strategy(values: dict[str, Any] | None) -> bool:
"""
True, если в пользовательских values kiali-server уже задан ``auth.strategy``
(тогда Helm не подставляет ``anonymous`` поверх).
"""
if not values:
return False
auth = values.get("auth")
if not isinstance(auth, dict):
return False
strat = auth.get("strategy")
return isinstance(strat, str) and bool(strat.strip())
def install_istio_and_kiali(
cluster_name: str,
*,
kiali_username: str,
kiali_password: str,
istio_chart_version: str | None = None,
kiali_chart_version: str | None = None,
istio_base_values: dict[str, Any] | None = None,
@@ -766,7 +778,11 @@ def install_istio_and_kiali(
kiali_user_values: dict[str, Any] | None = None,
) -> tuple[bool, str]:
"""
Istio base + istiod (опциональные values из UI) + секрет Kiali + kiali-server.
Istio base + istiod (опциональные values из UI) + kiali-server.
Kiali: стратегия ``login`` в актуальных версиях не поддерживается upstream. По умолчанию
выставляется ``auth.strategy=anonymous`` (удобно для kind и port-forward); иначе
задайте ``auth`` в YAML values (``token``, ``openid`` и т.д., см. kiali.io).
Для каждого чарта: если словарь ``None`` — без файла ``-f`` (дефолты чарта);
если непустой dict — полный values как в редакторе.
@@ -826,22 +842,6 @@ def install_istio_and_kiali(
if istiod_tmp is not None:
istiod_tmp.unlink(missing_ok=True)
# Секрет для стратегии login (ключи username / passphrase — ожидание Kiali).
secret = {
"apiVersion": "v1",
"kind": "Secret",
"metadata": {"name": "kiali", "namespace": "istio-system"},
"type": "Opaque",
"stringData": {
"username": kiali_username,
"passphrase": kiali_password,
},
}
rcs, msgs = _kubectl_apply_manifest(cluster_name, secret)
if rcs != 0:
raise HelmAddonError(f"Secret kiali: {msgs}", exit_code=rcs)
log_parts.append(msgs)
kiali_extra: list[Path] = []
kiali_tmp: Path | None = None
try:
@@ -851,13 +851,16 @@ def install_istio_and_kiali(
kiali_tmp = Path(name)
kiali_tmp.write_text(dump_helm_values_yaml(kiali_user_values), encoding="utf-8")
kiali_extra.append(kiali_tmp)
kiali_helm_extra: list[str] = []
if not _kiali_user_values_define_auth_strategy(kiali_user_values):
kiali_helm_extra.extend(["--set", "auth.strategy=anonymous"])
rc3, o3, e3 = _helm_upgrade_install(
cluster_name,
"kiali-server",
"kiali/kiali-server",
"istio-system",
chart_version=kiali_ver,
extra_args=["--set", "auth.strategy=login"],
extra_args=kiali_helm_extra or None,
extra_values_files=kiali_extra or None,
)
finally: