+
+
+
+
+
+
+
-
-
-
@@ -24,13 +27,13 @@ const { ready } = storeToRefs(containerStore);
const route = useRoute();
const swarmStore = useSwarmStore();
const { services, customGroups } = storeToRefs(swarmStore);
-const selectedCard = ref<"host" | "swarm" | "group">("host");
+const selectedCard = ref<"host" | "swarm" | "group" | "k8s">("host");
watch(
route,
() => {
- if (route.meta.menu && ["host", "swarm", "group"].includes(route.meta.menu as string)) {
- selectedCard.value = route.meta.menu as "host" | "swarm" | "group";
+ if (route.meta.menu && ["host", "swarm", "group", "k8s"].includes(route.meta.menu as string)) {
+ selectedCard.value = route.meta.menu as "host" | "swarm" | "group" | "k8s";
}
},
{ immediate: true },
diff --git a/assets/stores/config.ts b/assets/stores/config.ts
index f5c0d558..08a588df 100644
--- a/assets/stores/config.ts
+++ b/assets/stores/config.ts
@@ -22,6 +22,7 @@ export interface Config {
name: string;
};
profile?: Profile;
+ mode: "swarm" | "k8s" | "server";
}
export interface Profile {
diff --git a/examples/k8s.dozzle.yml b/examples/k8s.dozzle.yml
index c8c6ba1f..85e5e875 100644
--- a/examples/k8s.dozzle.yml
+++ b/examples/k8s.dozzle.yml
@@ -50,7 +50,6 @@ spec:
containers:
- name: dozzle
image: amir20/dozzle:latest
- imagePullPolicy: Never
ports:
- containerPort: 8080
env:
diff --git a/internal/k8s/client.go b/internal/k8s/client.go
index 7a9cb150..49e31d60 100644
--- a/internal/k8s/client.go
+++ b/internal/k8s/client.go
@@ -96,7 +96,7 @@ func podToContainers(pod *corev1.Pod) []container.Container {
}
var containers []container.Container
for _, c := range pod.Spec.Containers {
- containers = append(containers, container.Container{
+ container := container.Container{
ID: pod.Namespace + ":" + pod.Name + ":" + c.Name,
Name: pod.Name + "/" + c.Name,
Image: c.Image,
@@ -108,7 +108,11 @@ func podToContainers(pod *corev1.Pod) []container.Container {
Tty: c.TTY,
Stats: utils.NewRingBuffer[container.ContainerStat](300),
FullyLoaded: true,
- })
+ }
+ if len(pod.OwnerReferences) > 0 {
+ container.Group = pod.OwnerReferences[0].Name
+ }
+ containers = append(containers, container)
}
return containers
}
diff --git a/internal/support/cli/args.go b/internal/support/cli/args.go
index 0baad012..4c657f6b 100644
--- a/internal/support/cli/args.go
+++ b/internal/support/cli/args.go
@@ -32,7 +32,7 @@ type Args struct {
RemoteHost []string `arg:"env:DOZZLE_REMOTE_HOST,--remote-host,separate" help:"list of hosts to connect remotely"`
RemoteAgent []string `arg:"env:DOZZLE_REMOTE_AGENT,--remote-agent,separate" help:"list of agents to connect remotely"`
NoAnalytics bool `arg:"--no-analytics,env:DOZZLE_NO_ANALYTICS" help:"disables anonymous analytics"`
- Mode string `arg:"env:DOZZLE_MODE" default:"server" help:"sets the mode to run in (server, swarm)"`
+ Mode string `arg:"env:DOZZLE_MODE" default:"server" help:"sets the mode to run in (server, swarm, k8s)"`
TimeoutString string `arg:"--timeout,env:DOZZLE_TIMEOUT" default:"10s" help:"sets the timeout for docker client"`
Timeout time.Duration `arg:"-"`
Namespace []string `arg:"env:DOZZLE_NAMESPACE" help:"sets the namespace to use in k8s"`
diff --git a/internal/web/index.go b/internal/web/index.go
index 7a02d72c..d459c51a 100644
--- a/internal/web/index.go
+++ b/internal/web/index.go
@@ -65,6 +65,7 @@ func (h *handler) executeTemplate(w http.ResponseWriter, req *http.Request) {
config["hosts"] = hosts
config["disableAvatars"] = h.config.DisableAvatars
config["releaseCheckMode"] = h.config.ReleaseCheckMode
+ config["mode"] = h.config.Mode
}
if user != nil {
diff --git a/internal/web/routes.go b/internal/web/routes.go
index 64d8ce29..c5f40b72 100644
--- a/internal/web/routes.go
+++ b/internal/web/routes.go
@@ -46,6 +46,7 @@ type Config struct {
DisableAvatars bool
ReleaseCheckMode ReleaseCheckMode
Labels container.ContainerLabels
+ Mode string
}
type Authorization struct {
diff --git a/main.go b/main.go
index cdab7fff..c2644c84 100644
--- a/main.go
+++ b/main.go
@@ -215,6 +215,7 @@ func createServer(args cli.Args, hostService web.HostService) *http.Server {
DisableAvatars: args.DisableAvatars,
ReleaseCheckMode: releaseCheckMode,
Labels: args.Filter,
+ Mode: args.Mode,
}
assets, err := fs.Sub(content, "dist")