From f16a130789d7127bd28bc8da7100c8b38410ab3a Mon Sep 17 00:00:00 2001 From: Andrew Rynhard Date: Wed, 21 Nov 2018 07:11:58 -0800 Subject: [PATCH] feat(init): add calico support (#223) --- .../cmd/init/pkg/system/services/crt.go | 22 +++++++++++++++++++ .../cmd/init/pkg/system/services/kubelet.go | 12 +++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/initramfs/cmd/init/pkg/system/services/crt.go b/src/initramfs/cmd/init/pkg/system/services/crt.go index 8f9f48c5a..ffdeeba98 100644 --- a/src/initramfs/cmd/init/pkg/system/services/crt.go +++ b/src/initramfs/cmd/init/pkg/system/services/crt.go @@ -40,6 +40,7 @@ func (c *CRT) ID(data *userdata.UserData) string { } // PreFunc implements the Service interface. +// nolint: gocyclo func (c *CRT) PreFunc(data *userdata.UserData) error { switch data.Services.Init.ContainerRuntime { case constants.ContainerRuntimeDocker: @@ -65,6 +66,25 @@ func (c *CRT) PreFunc(data *userdata.UserData) error { if err := ioutil.WriteFile("/var/etc/crio/seccomp.json", []byte(seccompProfile), 0644); err != nil { return fmt.Errorf("failed to write seccomp.json: %v", err) } + if err := os.MkdirAll("/var/etc/cni/net.d", os.ModeDir); err != nil { + return fmt.Errorf("create /var/etc/cni/net.d: %s", err.Error()) + } + if err := os.MkdirAll("/var/opt/cni/bin", os.ModeDir); err != nil { + return fmt.Errorf("create /var/opt/cni/bin: %s", err.Error()) + } + if err := os.MkdirAll("/var/etc/kubernetes/manifests", os.ModeDir); err != nil { + return fmt.Errorf("create /var/etc/kubernetes/manifests: %s", err.Error()) + } + if err := os.MkdirAll("/var/lib/kubelet", os.ModeDir); err != nil { + return fmt.Errorf("create /var/lib/kubelet: %s", err.Error()) + } + if err := os.MkdirAll("/var/lib/calico", os.ModeDir); err != nil { + return fmt.Errorf("create /var/lib/calico: %s", err.Error()) + } + if err := os.MkdirAll("/var/libexec/kubernetes", os.ModeDir); err != nil { + return fmt.Errorf("create /var/libexec/kubernetes: %s", err.Error()) + } + } return nil @@ -91,8 +111,10 @@ func (c *CRT) Start(data *userdata.UserData) error { {Type: "bind", Destination: "/dev", Source: "/dev", Options: []string{"rbind", "rshared", "rw"}}, {Type: "bind", Destination: "/etc/kubernetes", Source: "/var/etc/kubernetes", Options: []string{"bind", "rw"}}, {Type: "bind", Destination: "/etc/cni", Source: "/var/etc/cni", Options: []string{"bind", "rw"}}, + {Type: "bind", Destination: "/opt/cni", Source: "/var/opt/cni", Options: []string{"bind", "rw"}}, {Type: "bind", Destination: "/run", Source: "/run", Options: []string{"rbind", "rshared", "rw"}}, {Type: "bind", Destination: "/var/lib/kubelet", Source: "/var/lib/kubelet", Options: []string{"rbind", "rshared", "rw"}}, + {Type: "bind", Destination: "/var/lib/calico", Source: "/var/lib/calico", Options: []string{"rbind", "rshared", "rw"}}, {Type: "bind", Destination: "/usr/libexec/kubernetes", Source: "/var/libexec/kubernetes", Options: []string{"rbind", "rshared", "rw"}}, } env = []string{} diff --git a/src/initramfs/cmd/init/pkg/system/services/kubelet.go b/src/initramfs/cmd/init/pkg/system/services/kubelet.go index e41b08323..7c6d72839 100644 --- a/src/initramfs/cmd/init/pkg/system/services/kubelet.go +++ b/src/initramfs/cmd/init/pkg/system/services/kubelet.go @@ -29,19 +29,27 @@ func (k *Kubelet) PreFunc(data *userdata.UserData) error { if err := os.Mkdir("/run/flannel", os.ModeDir); err != nil { return fmt.Errorf("create /run/flannel: %s", err.Error()) } + if err := os.Mkdir("/run/calico", os.ModeDir); err != nil { + return fmt.Errorf("create /run/calico: %s", err.Error()) + } if err := os.MkdirAll("/var/etc/cni/net.d", os.ModeDir); err != nil { return fmt.Errorf("create /var/etc/cni/net.d: %s", err.Error()) } + if err := os.MkdirAll("/var/opt/cni/bin", os.ModeDir); err != nil { + return fmt.Errorf("create /var/opt/cni/bin: %s", err.Error()) + } if err := os.MkdirAll("/var/etc/kubernetes/manifests", os.ModeDir); err != nil { return fmt.Errorf("create /var/etc/kubernetes/manifests: %s", err.Error()) } if err := os.MkdirAll("/var/lib/kubelet", os.ModeDir); err != nil { return fmt.Errorf("create /var/lib/kubelet: %s", err.Error()) } + if err := os.MkdirAll("/var/lib/calico", os.ModeDir); err != nil { + return fmt.Errorf("create /var/lib/calico: %s", err.Error()) + } if err := os.MkdirAll("/var/libexec/kubernetes", os.ModeDir); err != nil { return fmt.Errorf("create /var/libexec/kubernetes: %s", err.Error()) } - return nil } @@ -103,8 +111,10 @@ func (k *Kubelet) Start(data *userdata.UserData) error { {Type: "bind", Destination: "/dev", Source: "/dev", Options: []string{"rbind", "rshared", "rw"}}, {Type: "bind", Destination: "/var/run", Source: "/run", Options: []string{"rbind", "rshared", "rw"}}, {Type: "bind", Destination: "/var/lib/kubelet", Source: "/var/lib/kubelet", Options: []string{"rbind", "rshared", "rw"}}, + {Type: "bind", Destination: "/var/lib/calico", Source: "/var/lib/calico", Options: []string{"rbind", "rshared", "rw"}}, {Type: "bind", Destination: "/etc/kubernetes", Source: "/var/etc/kubernetes", Options: []string{"bind", "rw"}}, {Type: "bind", Destination: "/etc/cni", Source: "/var/etc/cni", Options: []string{"rbind", "rshared", "ro"}}, + {Type: "bind", Destination: "/opt/cni", Source: "/var/opt/cni", Options: []string{"rbind", "rshared", "ro"}}, {Type: "bind", Destination: "/etc/os-release", Source: "/etc/os-release", Options: []string{"bind", "ro"}}, {Type: "bind", Destination: "/usr/libexec/kubernetes", Source: "/var/libexec/kubernetes", Options: []string{"rbind", "rshared", "rw"}}, }