From 798d87da32e10ca1b54b977887537a63b846b6cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20W=C3=BCrbach?= Date: Mon, 31 Jul 2017 21:07:46 +0200 Subject: [PATCH] Configure docker on CoreOS/ContainerOS While the installation of docker should be skipped, docker should still be configured to allow overriding the docker config using kops. Fixes https://github.com/kubernetes/kops/issues/3057 --- nodeup/pkg/model/docker.go | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/nodeup/pkg/model/docker.go b/nodeup/pkg/model/docker.go index 1a2d9542e6..0f4a3df16e 100644 --- a/nodeup/pkg/model/docker.go +++ b/nodeup/pkg/model/docker.go @@ -18,6 +18,8 @@ package model import ( "fmt" + "strings" + "github.com/blang/semver" "github.com/golang/glog" "k8s.io/kops/nodeup/pkg/distros" @@ -26,7 +28,6 @@ import ( "k8s.io/kops/pkg/systemd" "k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi/nodeup/nodetasks" - "strings" ) // DockerBuilder install docker (just the packages at the moment) @@ -295,10 +296,16 @@ func (b *DockerBuilder) Build(c *fi.ModelBuilderContext) error { switch b.Distribution { case distros.DistributionCoreOS: glog.Infof("Detected CoreOS; won't install Docker") + if err := b.buildContainerOSConfigurationDropIn(c); err != nil { + return err + } return nil case distros.DistributionContainerOS: glog.Infof("Detected ContainerOS; won't install Docker") + if err := b.buildContainerOSConfigurationDropIn(c); err != nil { + return err + } return nil } @@ -458,6 +465,27 @@ func (b *DockerBuilder) buildSystemdService(dockerVersion semver.Version) *nodet return service } +func (b *DockerBuilder) buildContainerOSConfigurationDropIn(c *fi.ModelBuilderContext) error { + lines := []string{ + "[Service]", + "EnvironmentFile=/etc/sysconfig/docker", + } + contents := strings.Join(lines, "\n") + + t := &nodetasks.File{ + Path: "/etc/systemd/system/docker.service.d/10-kops.conf", + Contents: fi.NewStringResource(contents), + Type: nodetasks.FileType_File, + } + c.AddTask(t) + + if err := b.buildSysconfig(c); err != nil { + return err + } + + return nil +} + func (b *DockerBuilder) buildSysconfig(c *fi.ModelBuilderContext) error { flagsString, err := flagbuilder.BuildFlags(b.Cluster.Spec.Docker) if err != nil {