From 5a4873eab1c4306498909ad1e4f5c7f46af64d61 Mon Sep 17 00:00:00 2001 From: Andrew Prokhorenkov Date: Fri, 11 Oct 2019 12:13:52 -0500 Subject: [PATCH 1/3] feat(pods): add pull policy to containers config --- src/handlers/config.go | 1 + src/handlers/pods.go | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/handlers/config.go b/src/handlers/config.go index 4162a1c5..54020e3b 100644 --- a/src/handlers/config.go +++ b/src/handlers/config.go @@ -13,6 +13,7 @@ type Container struct { CPULimit string `json:"cpu-limit"` MemoryLimit string `json:"memory-limit"` Image string `json:"image"` + PullPolicy string `json:"pull_policy"` Env map[string]string `json:"env"` TargetPort int32 `json:"target-port"` Args []string `json:"args"` diff --git a/src/handlers/pods.go b/src/handlers/pods.go index ec9fc781..ee18c580 100644 --- a/src/handlers/pods.go +++ b/src/handlers/pods.go @@ -262,7 +262,19 @@ func createK8sPod(hash string, accessToken string, userName string) error { MountPath: containerSettings.UserVolumeLocation, Name: "user-data", }) - + + } + + var pullPolicy k8sv1.PullPolicy + switch containerSettings.PullPolicy { + case "IfNotPresent": + pullPolicy = k8sv1.PullPolicy(k8sv1.PullIfNotPresent) + case "Always": + pullPolicy = k8sv1.PullPolicy(k8sv1.Always) + case "Never": + pullPolicy = k8sv1.PullPolicy(k8sv1.Never) + default: + pullPolicy = k8sv1.PullPolicy(k8sv1.PullIfNotPresent) } pod := &k8sv1.Pod{ @@ -282,7 +294,7 @@ func createK8sPod(hash string, accessToken string, userName string) error { SecurityContext: &k8sv1.SecurityContext{ Privileged: &falseVal, }, - ImagePullPolicy: k8sv1.PullPolicy(k8sv1.PullIfNotPresent), + ImagePullPolicy: pullPolicy, Env: envVars, Command: containerSettings.Command, Args: containerSettings.Args, From 73bce304877c2f3dcc5647f6eddf4eee9ebc68e9 Mon Sep 17 00:00:00 2001 From: Andrew Prokhorenkov Date: Mon, 14 Oct 2019 13:47:11 -0500 Subject: [PATCH 2/3] fix(dep): pin the version of klog, some dependency mismatch in "master" see details: https://github.com/kubernetes/client-go/issues/656 --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 0a2aca3d..c3a2d2ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,8 @@ FROM golang:1.12 as build-deps WORKDIR /hatchery ENV GOPATH=/hatchery +RUN go get k8s.io/klog && cd $GOPATH/src/k8s.io/klog && git checkout v0.4.0 + RUN go get -tags k8s.io/client-go/kubernetes \ k8s.io/apimachinery/pkg/apis/meta/v1 \ k8s.io/api/core/v1 \ From 1edb0d8732bdcc584a82e9eb68ddf7e5a1c2607d Mon Sep 17 00:00:00 2001 From: Andrew Prokhorenkov Date: Mon, 14 Oct 2019 13:55:49 -0500 Subject: [PATCH 3/3] fix(pods): correct enum naming --- src/handlers/pods.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/handlers/pods.go b/src/handlers/pods.go index ee18c580..4d476bdd 100644 --- a/src/handlers/pods.go +++ b/src/handlers/pods.go @@ -270,9 +270,9 @@ func createK8sPod(hash string, accessToken string, userName string) error { case "IfNotPresent": pullPolicy = k8sv1.PullPolicy(k8sv1.PullIfNotPresent) case "Always": - pullPolicy = k8sv1.PullPolicy(k8sv1.Always) + pullPolicy = k8sv1.PullPolicy(k8sv1.PullAlways) case "Never": - pullPolicy = k8sv1.PullPolicy(k8sv1.Never) + pullPolicy = k8sv1.PullPolicy(k8sv1.PullNever) default: pullPolicy = k8sv1.PullPolicy(k8sv1.PullIfNotPresent) }