Fix builder & newdeploy not using latest image during CI build (#1033)

This commit is contained in:
Ta-Ching Chen
2018-12-19 22:35:28 +08:00
committed by GitHub
parent 34b9be0bd3
commit 0a135173b4
7 changed files with 34 additions and 44 deletions
+6 -16
View File
@@ -80,6 +80,7 @@ type (
kubernetesClient *kubernetes.Clientset kubernetesClient *kubernetes.Clientset
fetcherImage string fetcherImage string
fetcherImagePullPolicy apiv1.PullPolicy fetcherImagePullPolicy apiv1.PullPolicy
builderImagePullPolicy apiv1.PullPolicy
useIstio bool useIstio bool
} }
) )
@@ -102,20 +103,8 @@ func makeEnvironmentWatcher(fissionClient *crd.FissionClient,
fetcherImage = "fission/fetcher" fetcherImage = "fission/fetcher"
} }
fetcherImagePullPolicy := os.Getenv("FETCHER_IMAGE_PULL_POLICY") fetcherImagePullPolicy := fission.GetImagePullPolicy(os.Getenv("FETCHER_IMAGE_PULL_POLICY"))
if len(fetcherImagePullPolicy) == 0 { builderImagePullPolicy := fission.GetImagePullPolicy(os.Getenv("BUILDER_IMAGE_PULL_POLICY"))
fetcherImagePullPolicy = "IfNotPresent"
}
var pullPolicy apiv1.PullPolicy
switch fetcherImagePullPolicy {
case "Always":
pullPolicy = apiv1.PullAlways
case "Never":
pullPolicy = apiv1.PullNever
default:
pullPolicy = apiv1.PullIfNotPresent
}
envWatcher := &environmentWatcher{ envWatcher := &environmentWatcher{
cache: make(map[string]*builderInfo), cache: make(map[string]*builderInfo),
@@ -124,7 +113,8 @@ func makeEnvironmentWatcher(fissionClient *crd.FissionClient,
fissionClient: fissionClient, fissionClient: fissionClient,
kubernetesClient: kubernetesClient, kubernetesClient: kubernetesClient,
fetcherImage: fetcherImage, fetcherImage: fetcherImage,
fetcherImagePullPolicy: pullPolicy, fetcherImagePullPolicy: fetcherImagePullPolicy,
builderImagePullPolicy: builderImagePullPolicy,
useIstio: useIstio, useIstio: useIstio,
} }
@@ -547,7 +537,7 @@ func (envw *environmentWatcher) createBuilderDeployment(env *crd.Environment, ns
fission.MergeContainerSpecs(&apiv1.Container{ fission.MergeContainerSpecs(&apiv1.Container{
Name: "builder", Name: "builder",
Image: env.Spec.Builder.Image, Image: env.Spec.Builder.Image,
ImagePullPolicy: apiv1.PullIfNotPresent, ImagePullPolicy: envw.builderImagePullPolicy,
TerminationMessagePath: "/dev/termination-log", TerminationMessagePath: "/dev/termination-log",
VolumeMounts: []apiv1.VolumeMount{ VolumeMounts: []apiv1.VolumeMount{
{ {
@@ -328,6 +328,8 @@ spec:
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}" value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
- name: FETCHER_IMAGE_PULL_POLICY - name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}" value: "{{ .Values.pullPolicy }}"
- name: BUILDER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: ENABLE_ISTIO - name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}" value: "{{ .Values.enableIstio }}"
serviceAccount: fission-svc serviceAccount: fission-svc
@@ -309,6 +309,8 @@ spec:
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}" value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
- name: FETCHER_IMAGE_PULL_POLICY - name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}" value: "{{ .Values.pullPolicy }}"
- name: BUILDER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: ENABLE_ISTIO - name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}" value: "{{ .Values.enableIstio }}"
serviceAccount: fission-svc serviceAccount: fission-svc
+12
View File
@@ -184,3 +184,15 @@ func RemoveZeroBytes(src []byte) []byte {
} }
return bs return bs
} }
// GetImagePullPolicy returns the image pull policy base on the input value.
func GetImagePullPolicy(policy string) apiv1.PullPolicy {
switch policy {
case "Always":
return apiv1.PullAlways
case "Never":
return apiv1.PullNever
default:
return apiv1.PullIfNotPresent
}
}
+1 -1
View File
@@ -249,7 +249,7 @@ func (deploy *NewDeploy) getDeploymentSpec(fn *crd.Function, env *crd.Environmen
fission.MergeContainerSpecs(&apiv1.Container{ fission.MergeContainerSpecs(&apiv1.Container{
Name: fn.Metadata.Name, Name: fn.Metadata.Name,
Image: env.Spec.Runtime.Image, Image: env.Spec.Runtime.Image,
ImagePullPolicy: apiv1.PullIfNotPresent, ImagePullPolicy: deploy.runtimeImagePullPolicy,
TerminationMessagePath: "/dev/termination-log", TerminationMessagePath: "/dev/termination-log",
VolumeMounts: []apiv1.VolumeMount{ VolumeMounts: []apiv1.VolumeMount{
{ {
+9 -6
View File
@@ -52,6 +52,7 @@ type (
fetcherImg string fetcherImg string
fetcherImagePullPolicy apiv1.PullPolicy fetcherImagePullPolicy apiv1.PullPolicy
runtimeImagePullPolicy apiv1.PullPolicy
namespace string namespace string
sharedMountPath string sharedMountPath string
sharedSecretPath string sharedSecretPath string
@@ -125,17 +126,19 @@ func MakeNewDeploy(
namespace: namespace, namespace: namespace,
fsCache: fsCache, fsCache: fsCache,
fetcherImg: fetcherImg, fetcherImg: fetcherImg,
fetcherImagePullPolicy: apiv1.PullIfNotPresent, sharedMountPath: "/userfunc",
sharedMountPath: "/userfunc", sharedSecretPath: "/secrets",
sharedSecretPath: "/secrets", sharedCfgMapPath: "/configs",
sharedCfgMapPath: "/configs", useIstio: enableIstio,
useIstio: enableIstio,
requestChannel: make(chan *fnRequest), requestChannel: make(chan *fnRequest),
idlePodReapTime: 2 * time.Minute, idlePodReapTime: 2 * time.Minute,
} }
nd.runtimeImagePullPolicy = fission.GetImagePullPolicy(os.Getenv("RUNTIME_IMAGE_PULL_POLICY"))
nd.fetcherImagePullPolicy = fission.GetImagePullPolicy(os.Getenv("FETCHER_IMAGE_PULL_POLICY"))
if nd.crdClient != nil { if nd.crdClient != nil {
fnStore, fnController := nd.initFuncController() fnStore, fnController := nd.initFuncController()
nd.funcStore = fnStore nd.funcStore = fnStore
+2 -21
View File
@@ -84,17 +84,6 @@ type (
} }
) )
func getImagePullPolicy(policy string) apiv1.PullPolicy {
switch policy {
case "Always":
return apiv1.PullAlways
case "Never":
return apiv1.PullNever
default:
return apiv1.PullIfNotPresent
}
}
func MakeGenericPool( func MakeGenericPool(
fissionClient *crd.FissionClient, fissionClient *crd.FissionClient,
kubernetesClient *kubernetes.Clientset, kubernetesClient *kubernetes.Clientset,
@@ -112,14 +101,6 @@ func MakeGenericPool(
if len(fetcherImage) == 0 { if len(fetcherImage) == 0 {
fetcherImage = "fission/fetcher" fetcherImage = "fission/fetcher"
} }
fetcherImagePullPolicy := os.Getenv("FETCHER_IMAGE_PULL_POLICY")
if len(fetcherImagePullPolicy) == 0 {
fetcherImagePullPolicy = "IfNotPresent"
}
runtimeImagePullPolicy := os.Getenv("RUNTIME_IMAGE_PULL_POLICY")
if len(runtimeImagePullPolicy) == 0 {
runtimeImagePullPolicy = "IfNotPresent"
}
// TODO: in general we need to provide the user a way to configure pools. Initial // TODO: in general we need to provide the user a way to configure pools. Initial
// replicas, autoscaling params, various timeouts, etc. // replicas, autoscaling params, various timeouts, etc.
@@ -144,9 +125,9 @@ func MakeGenericPool(
sharedCfgMapPath: "/configs", sharedCfgMapPath: "/configs",
} }
gp.runtimeImagePullPolicy = getImagePullPolicy(runtimeImagePullPolicy) gp.runtimeImagePullPolicy = fission.GetImagePullPolicy(os.Getenv("RUNTIME_IMAGE_PULL_POLICY"))
gp.fetcherImagePullPolicy = fission.GetImagePullPolicy(os.Getenv("FETCHER_IMAGE_PULL_POLICY"))
gp.fetcherImagePullPolicy = getImagePullPolicy(fetcherImagePullPolicy)
log.Printf("fetcher image: %v, pull policy: %v", gp.fetcherImage, gp.fetcherImagePullPolicy) log.Printf("fetcher image: %v, pull policy: %v", gp.fetcherImage, gp.fetcherImagePullPolicy)
// create fetcher SA in this ns, if not already created // create fetcher SA in this ns, if not already created