From 13da2a4222ed0a0c53189a50d71e99279ec6f05a Mon Sep 17 00:00:00 2001 From: Amir Raminfar Date: Mon, 10 Feb 2025 09:29:39 -0800 Subject: [PATCH] feat: supports k8s cluster (#3599) --- assets/components.d.ts | 1 + assets/components/common/HostIcon.vue | 1 + assets/stores/hosts.ts | 2 +- examples/ingress.yml | 18 ++ examples/k8s.dozzle.yml | 71 ++++++ go.mod | 38 ++- go.sum | 189 +++++++-------- internal/agent/client.go | 6 +- internal/agent/client_test.go | 6 +- internal/agent/pb/rpc.pb.go | 147 ++++++------ internal/agent/pb/types.pb.go | 129 +++++----- internal/agent/server.go | 30 ++- internal/auth/users.go | 8 +- internal/container/client.go | 3 +- internal/container/container_store.go | 97 ++++++-- internal/container/container_store_test.go | 59 +---- internal/container/event_generator.go | 68 +----- internal/container/event_generator_test.go | 61 ++--- internal/container/types.go | 8 +- internal/docker/client.go | 37 ++- internal/docker/client_test.go | 24 +- internal/docker/log_reader.go | 101 ++++++++ .../{container => docker}/stats_collector.go | 43 ++-- .../stats_collector_test.go | 47 +++- internal/healthcheck/rpc.go | 2 +- internal/k8s/client.go | 223 ++++++++++++++++++ internal/k8s/log_reader.go | 27 +++ internal/k8s/stats_collector.go | 124 ++++++++++ internal/support/cli/clients.go | 3 +- .../{docker => container}/agent_service.go | 10 +- internal/support/container/client_service.go | 28 +++ .../container_service.go | 19 +- internal/support/docker/client_service.go | 99 -------- internal/support/docker/docker_service.go | 111 +++++++++ internal/support/docker/multi_host_service.go | 40 ++-- .../docker/retriable_client_manager.go | 22 +- .../support/docker/swarm_client_manager.go | 23 +- internal/support/k8s/k8s_cluster_service.go | 133 +++++++++++ internal/support/k8s/k8s_service.go | 92 ++++++++ internal/web/actions.go | 8 +- internal/web/debug.go | 4 +- internal/web/download.go | 28 +-- internal/web/events.go | 22 +- internal/web/events_test.go | 2 +- internal/web/healthcheck.go | 2 +- internal/web/index.go | 2 +- internal/web/logs.go | 27 ++- internal/web/routes.go | 35 ++- internal/web/routes_test.go | 12 +- main.go | 33 ++- 50 files changed, 1591 insertions(+), 734 deletions(-) create mode 100644 examples/ingress.yml create mode 100644 examples/k8s.dozzle.yml create mode 100644 internal/docker/log_reader.go rename internal/{container => docker}/stats_collector.go (69%) rename internal/{container => docker}/stats_collector_test.go (59%) create mode 100644 internal/k8s/client.go create mode 100644 internal/k8s/log_reader.go create mode 100644 internal/k8s/stats_collector.go rename internal/support/{docker => container}/agent_service.go (86%) create mode 100644 internal/support/container/client_service.go rename internal/support/{docker => container}/container_service.go (59%) delete mode 100644 internal/support/docker/client_service.go create mode 100644 internal/support/docker/docker_service.go create mode 100644 internal/support/k8s/k8s_cluster_service.go create mode 100644 internal/support/k8s/k8s_service.go diff --git a/assets/components.d.ts b/assets/components.d.ts index 3a069710..05eef4ba 100644 --- a/assets/components.d.ts +++ b/assets/components.d.ts @@ -12,6 +12,7 @@ declare module 'vue' { 'Carbon:circleSolid': typeof import('~icons/carbon/circle-solid')['default'] 'Carbon:copyFile': typeof import('~icons/carbon/copy-file')['default'] 'Carbon:information': typeof import('~icons/carbon/information')['default'] + 'Carbon:logoKubernetes': typeof import('~icons/carbon/logo-kubernetes')['default'] 'Carbon:macShift': typeof import('~icons/carbon/mac-shift')['default'] 'Carbon:play': typeof import('~icons/carbon/play')['default'] 'Carbon:restart': typeof import('~icons/carbon/restart')['default'] diff --git a/assets/components/common/HostIcon.vue b/assets/components/common/HostIcon.vue index 0838bb7a..50b85917 100644 --- a/assets/components/common/HostIcon.vue +++ b/assets/components/common/HostIcon.vue @@ -2,6 +2,7 @@ +