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
fetcherImage string
fetcherImagePullPolicy apiv1.PullPolicy
builderImagePullPolicy apiv1.PullPolicy
useIstio bool
}
)
@@ -102,20 +103,8 @@ func makeEnvironmentWatcher(fissionClient *crd.FissionClient,
fetcherImage = "fission/fetcher"
}
fetcherImagePullPolicy := os.Getenv("FETCHER_IMAGE_PULL_POLICY")
if len(fetcherImagePullPolicy) == 0 {
fetcherImagePullPolicy = "IfNotPresent"
}
var pullPolicy apiv1.PullPolicy
switch fetcherImagePullPolicy {
case "Always":
pullPolicy = apiv1.PullAlways
case "Never":
pullPolicy = apiv1.PullNever
default:
pullPolicy = apiv1.PullIfNotPresent
}
fetcherImagePullPolicy := fission.GetImagePullPolicy(os.Getenv("FETCHER_IMAGE_PULL_POLICY"))
builderImagePullPolicy := fission.GetImagePullPolicy(os.Getenv("BUILDER_IMAGE_PULL_POLICY"))
envWatcher := &environmentWatcher{
cache: make(map[string]*builderInfo),
@@ -124,7 +113,8 @@ func makeEnvironmentWatcher(fissionClient *crd.FissionClient,
fissionClient: fissionClient,
kubernetesClient: kubernetesClient,
fetcherImage: fetcherImage,
fetcherImagePullPolicy: pullPolicy,
fetcherImagePullPolicy: fetcherImagePullPolicy,
builderImagePullPolicy: builderImagePullPolicy,
useIstio: useIstio,
}
@@ -547,7 +537,7 @@ func (envw *environmentWatcher) createBuilderDeployment(env *crd.Environment, ns
fission.MergeContainerSpecs(&apiv1.Container{
Name: "builder",
Image: env.Spec.Builder.Image,
ImagePullPolicy: apiv1.PullIfNotPresent,
ImagePullPolicy: envw.builderImagePullPolicy,
TerminationMessagePath: "/dev/termination-log",
VolumeMounts: []apiv1.VolumeMount{
{
@@ -328,6 +328,8 @@ spec:
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
- name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: BUILDER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}"
serviceAccount: fission-svc
@@ -309,6 +309,8 @@ spec:
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
- name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: BUILDER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}"
serviceAccount: fission-svc
+12
View File
@@ -184,3 +184,15 @@ func RemoveZeroBytes(src []byte) []byte {
}
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{
Name: fn.Metadata.Name,
Image: env.Spec.Runtime.Image,
ImagePullPolicy: apiv1.PullIfNotPresent,
ImagePullPolicy: deploy.runtimeImagePullPolicy,
TerminationMessagePath: "/dev/termination-log",
VolumeMounts: []apiv1.VolumeMount{
{
+9 -6
View File
@@ -52,6 +52,7 @@ type (
fetcherImg string
fetcherImagePullPolicy apiv1.PullPolicy
runtimeImagePullPolicy apiv1.PullPolicy
namespace string
sharedMountPath string
sharedSecretPath string
@@ -125,17 +126,19 @@ func MakeNewDeploy(
namespace: namespace,
fsCache: fsCache,
fetcherImg: fetcherImg,
fetcherImagePullPolicy: apiv1.PullIfNotPresent,
sharedMountPath: "/userfunc",
sharedSecretPath: "/secrets",
sharedCfgMapPath: "/configs",
useIstio: enableIstio,
fetcherImg: fetcherImg,
sharedMountPath: "/userfunc",
sharedSecretPath: "/secrets",
sharedCfgMapPath: "/configs",
useIstio: enableIstio,
requestChannel: make(chan *fnRequest),
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 {
fnStore, fnController := nd.initFuncController()
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(
fissionClient *crd.FissionClient,
kubernetesClient *kubernetes.Clientset,
@@ -112,14 +101,6 @@ func MakeGenericPool(
if len(fetcherImage) == 0 {
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
// replicas, autoscaling params, various timeouts, etc.
@@ -144,9 +125,9 @@ func MakeGenericPool(
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)
// create fetcher SA in this ns, if not already created