diff --git a/config/config.go b/config/config.go index 0981ac28ef..444c1a69f8 100644 --- a/config/config.go +++ b/config/config.go @@ -41,6 +41,7 @@ type K8sConfig struct { type Parameters struct { Namespace string + Restart bool Writer io.Writer } diff --git a/internal/cli/cmd/config.go b/internal/cli/cmd/config.go index 954d489165..6572aa0a14 100644 --- a/internal/cli/cmd/config.go +++ b/internal/cli/cmd/config.go @@ -20,8 +20,10 @@ import ( "os" "github.com/cilium/cilium-cli/config" + "github.com/cilium/cilium-cli/defaults" "github.com/spf13/cobra" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func newCmdConfig() *cobra.Command { @@ -80,12 +82,33 @@ func newCmdConfigSet() *cobra.Command { if err := check.Set(context.Background(), args[0], args[1]); err != nil { fatalf("Unable to set config: %s", err) } + if !params.Restart { + fmt.Println("⚠️ Restart Cilium pods for configmap changes to take effect") + return nil + } + if err := k8sClient.DeletePodCollection(context.Background(), params.Namespace, metav1.DeleteOptions{}, metav1.ListOptions{LabelSelector: defaults.CiliumPodSelector}); err != nil { + fmt.Printf("⚠️ Unable to restart Cilium pods: %s\n", err) + } else { + fmt.Println("♻️ Restarted Cilium pods") + } return nil }, } - cmd.Flags().StringVarP(¶ms.Namespace, "namespace", "n", "kube-system", "Namespace Cilium is running in") - + cmd.Flags().StringVarP( + ¶ms.Namespace, + "namespace", + "n", + "kube-system", + "Namespace Cilium is running in", + ) + cmd.Flags().BoolVarP( + ¶ms.Restart, + "restart", + "r", + true, + "Restart Cilium pods", + ) return cmd } @@ -108,7 +131,13 @@ func newCmdConfigDelete() *cobra.Command { }, } - cmd.Flags().StringVarP(¶ms.Namespace, "namespace", "n", "kube-system", "Namespace Cilium is running in") + cmd.Flags().StringVarP( + ¶ms.Namespace, + "namespace", + "n", + "kube-system", + "Namespace Cilium is running in", + ) return cmd }