Enable systemd ready notification for k3s server

Disables k8s generic api server systemd ready notification and send
our own ready notification after server available and kubeconfig
available.

Make sure we unset the NOTIFY_SOCKET environment variable by passing
`true` to SdNotify so the agent can start containers.
pull/177/head
Erik Wilson 6 years ago
parent 17f9f355bb
commit 107b5f3985

@ -9,6 +9,7 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
systemd "github.com/coreos/go-systemd/daemon"
"github.com/docker/docker/pkg/reexec" "github.com/docker/docker/pkg/reexec"
"github.com/natefinch/lumberjack" "github.com/natefinch/lumberjack"
"github.com/pkg/errors" "github.com/pkg/errors"
@ -99,6 +100,9 @@ func run(app *cli.Context, cfg *cmds.Server) error {
} }
logrus.Info("Starting k3s ", app.App.Version) logrus.Info("Starting k3s ", app.App.Version)
notifySocket := os.Getenv("NOTIFY_SOCKET")
os.Unsetenv("NOTIFY_SOCKET")
ctx := signal.SigTermCancelContext(context.Background()) ctx := signal.SigTermCancelContext(context.Background())
certs, err := server.StartServer(ctx, &serverConfig) certs, err := server.StartServer(ctx, &serverConfig)
if err != nil { if err != nil {
@ -106,6 +110,10 @@ func run(app *cli.Context, cfg *cmds.Server) error {
} }
logrus.Info("k3s is up and running") logrus.Info("k3s is up and running")
if notifySocket != "" {
os.Setenv("NOTIFY_SOCKET", notifySocket)
systemd.SdNotify(true, "READY=1")
}
if cfg.DisableAgent { if cfg.DisableAgent {
<-ctx.Done() <-ctx.Done()

Loading…
Cancel
Save