From 68e4490c83b424f647154ec2af5e633fadc16b25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Depriester?= Date: Fri, 28 Nov 2025 19:41:32 +0100 Subject: [PATCH] feat(kubernetes): allow backup volumes from a custom list of namespaces --- cmd/manager/manager.go | 2 ++ pkg/orchestrators/kubernetes.go | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/cmd/manager/manager.go b/cmd/manager/manager.go index 00b5a11e..bb7667e5 100644 --- a/cmd/manager/manager.go +++ b/cmd/manager/manager.go @@ -92,6 +92,8 @@ func init() { envs["KUBERNETES_NAMESPACE"] = "kubernetes.namespace" managerCmd.Flags().BoolVarP(&Orchestrators.Kubernetes.AllNamespaces, "kubernetes.all-namespaces", "", false, "Backup volumes of all namespaces.") envs["KUBERNETES_ALL_NAMESPACES"] = "kubernetes.all-namespaces" + managerCmd.Flags().StringVarP(&Orchestrators.Kubernetes.WatchNamespaces, "kubernetes.watch-namespaces", "", "", "List of namespaces to watch for volumes to backup.") + envs["KUBERNETES_WATCH_NAMESPACES"] = "kubernetes.watch-namespaces" managerCmd.Flags().StringVarP(&Orchestrators.Kubernetes.KubeConfig, "kubernetes.kubeconfig", "", "", "Path to your kuberconfig file.") envs["KUBERNETES_KUBECONFIG"] = "kubernetes.kubeconfig" managerCmd.Flags().StringVarP(&Orchestrators.Kubernetes.AgentServiceAccount, "kubernetes.agent-service-account", "", "", "Specify service account for agents.") diff --git a/pkg/orchestrators/kubernetes.go b/pkg/orchestrators/kubernetes.go index a47c4a23..0530b896 100644 --- a/pkg/orchestrators/kubernetes.go +++ b/pkg/orchestrators/kubernetes.go @@ -24,6 +24,7 @@ import ( type KubernetesConfig struct { Namespace string AllNamespaces bool + WatchNamespaces string KubeConfig string AgentServiceAccount string AgentLabelsInline string @@ -224,8 +225,8 @@ func (o *KubernetesOrchestrator) DeployAgent(image string, cmd, envs []string, v RestartPolicy: "Never", Volumes: kvs, ServiceAccountName: o.config.AgentServiceAccount, - SecurityContext: &apiv1.PodSecurityContext{ - SupplementalGroups: managerPod.Spec.SecurityContext.SupplementalGroups, + SecurityContext: &apiv1.PodSecurityContext{ + SupplementalGroups: managerPod.Spec.SecurityContext.SupplementalGroups, }, Containers: []apiv1.Container{ @@ -556,6 +557,20 @@ func (o *KubernetesOrchestrator) getNamespaces() (namespaces []string, err error for _, namespace := range nms.Items { namespaces = append(namespaces, namespace.Name) } + } else if o.config.WatchNamespaces != "" { + nms, err := o.client.CoreV1().Namespaces().List(metav1.ListOptions{}) + if err != nil { + err = fmt.Errorf("failed to retrieve the list of namespaces: %s", err) + return []string{}, err + } + watchNamespaces := strings.Split(o.config.WatchNamespaces, ",") + for _, namespace := range nms.Items { + for _, ns := range watchNamespaces { + if ns == namespace.Name { + namespaces = append(namespaces, namespace.Name) + } + } + } } else { namespaces = append(namespaces, o.config.Namespace) }