diff --git a/pkg/kubelet/rkt/rkt.go b/pkg/kubelet/rkt/rkt.go index 5268c9f40f9..a1f47b80efe 100644 --- a/pkg/kubelet/rkt/rkt.go +++ b/pkg/kubelet/rkt/rkt.go @@ -425,11 +425,17 @@ func setApp(imgManifest *appcschema.ImageManifest, c *api.Container, opts *kubec var command, args []string cmd, ok := imgManifest.Annotations.Get(appcDockerEntrypoint) if ok { - command = strings.Fields(cmd) + err := json.Unmarshal([]byte(cmd), &command) + if err != nil { + return fmt.Errorf("cannot unmarshal ENTRYPOINT %q: %v", cmd, err) + } } ag, ok := imgManifest.Annotations.Get(appcDockerCmd) if ok { - args = strings.Fields(ag) + err := json.Unmarshal([]byte(ag), &args) + if err != nil { + return fmt.Errorf("cannot unmarshal CMD %q: %v", ag, err) + } } userCommand, userArgs := kubecontainer.ExpandContainerCommandAndArgs(c, opts.Envs) @@ -813,8 +819,6 @@ func (r *Runtime) preparePod(pod *api.Pod, pullSecrets []api.Secret) (string, *k // TODO handle pod.Spec.HostIPC units := []*unit.UnitOption{ - // This makes the service show up for 'systemctl list-units' even if it exits successfully. - newUnitOption("Service", "RemainAfterExit", "true"), newUnitOption("Service", "ExecStart", runPrepared), // This enables graceful stop. newUnitOption("Service", "KillMode", "mixed"), diff --git a/pkg/kubelet/rkt/rkt_test.go b/pkg/kubelet/rkt/rkt_test.go index 006c07a33b4..9b441059230 100644 --- a/pkg/kubelet/rkt/rkt_test.go +++ b/pkg/kubelet/rkt/rkt_test.go @@ -767,8 +767,16 @@ func baseApp(t *testing.T) *appctypes.App { func baseImageManifest(t *testing.T) *appcschema.ImageManifest { img := &appcschema.ImageManifest{App: baseApp(t)} - img.Annotations.Set(*appctypes.MustACIdentifier(appcDockerEntrypoint), "/bin/foo") - img.Annotations.Set(*appctypes.MustACIdentifier(appcDockerCmd), "bar") + entrypoint, err := json.Marshal([]string{"/bin/foo"}) + if err != nil { + t.Fatal(err) + } + cmd, err := json.Marshal([]string{"bar"}) + if err != nil { + t.Fatal(err) + } + img.Annotations.Set(*appctypes.MustACIdentifier(appcDockerEntrypoint), string(entrypoint)) + img.Annotations.Set(*appctypes.MustACIdentifier(appcDockerCmd), string(cmd)) return img }