Rolling restart the sidecar injector during a restart

Signed-off-by: joshvanl <me@joshvanl.dev>
This commit is contained in:
joshvanl 2023-09-20 10:39:54 +01:00
parent 2903e50ebc
commit 9ca7c09402
1 changed files with 34 additions and 11 deletions

View File

@ -14,9 +14,11 @@ limitations under the License.
package cmd package cmd
import ( import (
"errors"
"fmt" "fmt"
"os" "os"
"strings" "strings"
"sync"
"time" "time"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@ -168,22 +170,43 @@ func logErrorAndExit(err error) {
} }
func restartControlPlaneService() error { func restartControlPlaneService() error {
controlPlaneServices := []string{"deploy/dapr-sentry", "deploy/dapr-operator", "statefulsets/dapr-placement-server"} controlPlaneServices := []string{
"deploy/dapr-sentry",
"deploy/dapr-sidecar-injector",
"deploy/dapr-operator",
"statefulsets/dapr-placement-server",
}
namespace, err := kubernetes.GetDaprNamespace() namespace, err := kubernetes.GetDaprNamespace()
if err != nil { if err != nil {
print.FailureStatusEvent(os.Stdout, "Failed to fetch Dapr namespace") print.FailureStatusEvent(os.Stdout, "Failed to fetch Dapr namespace")
} }
for _, name := range controlPlaneServices {
errs := make([]error, len(controlPlaneServices))
var wg sync.WaitGroup
wg.Add(len(controlPlaneServices))
for i, name := range controlPlaneServices {
go func(i int, name string) {
defer wg.Done()
print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Restarting %s..", name)) print.InfoStatusEvent(os.Stdout, fmt.Sprintf("Restarting %s..", name))
_, err := utils.RunCmdAndWait("kubectl", "rollout", "restart", name, "-n", namespace) _, err := utils.RunCmdAndWait("kubectl", "rollout", "restart", "-n", namespace, name)
if err != nil { if err != nil {
return fmt.Errorf("error in restarting deployment %s. Error is %w", name, err) errs[i] = fmt.Errorf("error in restarting deployment %s. Error is %w", name, err)
return
} }
_, err = utils.RunCmdAndWait("kubectl", "rollout", "status", name, "-n", namespace) _, err = utils.RunCmdAndWait("kubectl", "rollout", "status", "-n", namespace, name)
if err != nil { if err != nil {
return fmt.Errorf("error in checking status for deployment %s. Error is %w", name, err) errs[i] = fmt.Errorf("error in checking status for deployment %s. Error is %w", name, err)
return
} }
}(i, name)
} }
wg.Wait()
if err := errors.Join(errs...); err != nil {
return err
}
print.SuccessStatusEvent(os.Stdout, "All control plane services have restarted successfully!") print.SuccessStatusEvent(os.Stdout, "All control plane services have restarted successfully!")
return nil return nil
} }