func run()

in cmd/k8s-cloudkms-plugin/main.go [121:147]


func run(pluginManager *plugin.PluginManager, h *plugin.HealthCheckerManager, m *plugin.Metrics) error {
	signalsChan := make(chan os.Signal, 1)
	signal.Notify(signalsChan, syscall.SIGINT, syscall.SIGTERM)

	metricsErrCh := m.Serve()
	healthzErrCh := h.Serve()

	gRPCSrv, kmsErrorCh := pluginManager.Start()
	defer gRPCSrv.GracefulStop()

	for {
		select {
		case sig := <-signalsChan:
			return fmt.Errorf("captured %v, shutting down kms-plugin", sig)
		case kmsError := <-kmsErrorCh:
			return kmsError
		case metricsErr := <-metricsErrCh:
			// Limiting this to warning only - will run without metrics.
			glog.Warning(metricsErr)
			metricsErrCh = nil
		case healthzErr := <-healthzErrCh:
			// Limiting this to warning only - will run without healthz.
			glog.Warning(healthzErr)
			healthzErrCh = nil
		}
	}
}