Add kompose.image-pull-secret and kompose.image-pull-policy (#1091)

* Add kompose.image-pull-secret

* Add kompose.image-pull-secret tests

* Add kompose.image-pull-policy

* Add kompose.image-pull-policy tests

* ignore .coverprofile

* Fix typo
This commit is contained in:
Kamil Kieliszczyk
2019-02-07 09:50:53 -05:00
committed by Charlie Drage
parent 40c1b8cf87
commit 66ac4aff4f
18 changed files with 387 additions and 7 deletions
+13
View File
@@ -503,6 +503,19 @@ func (k *Kubernetes) UpdateKubernetesObjects(name string, service kobject.Servic
template.Spec.Containers[0].Ports = ports
template.ObjectMeta.Labels = transformer.ConfigLabels(name)
// Configure the image pull policy
switch service.ImagePullPolicy {
case "":
case "Always":
template.Spec.Containers[0].ImagePullPolicy = api.PullAlways
case "Never":
template.Spec.Containers[0].ImagePullPolicy = api.PullNever
case "IfNotPresent":
template.Spec.Containers[0].ImagePullPolicy = api.PullIfNotPresent
default:
return errors.New("Unknown image-pull-policy " + service.ImagePullPolicy + " for service " + name)
}
// Configure the container restart policy.
switch service.Restart {
case "", "always", "any":
+12 -5
View File
@@ -116,7 +116,7 @@ func (k *Kubernetes) CheckUnsupportedKey(komposeObject *kobject.KomposeObject, u
}
// InitPodSpec creates the pod specification
func (k *Kubernetes) InitPodSpec(name string, image string) api.PodSpec {
func (k *Kubernetes) InitPodSpec(name string, image string, pullSecret string) api.PodSpec {
pod := api.PodSpec{
Containers: []api.Container{
{
@@ -125,6 +125,13 @@ func (k *Kubernetes) InitPodSpec(name string, image string) api.PodSpec {
},
},
}
if pullSecret != "" {
pod.ImagePullSecrets = []api.LocalObjectReference{
{
Name: pullSecret,
},
}
}
return pod
}
@@ -191,7 +198,7 @@ func (k *Kubernetes) InitRC(name string, service kobject.ServiceConfig, replicas
ObjectMeta: api.ObjectMeta{
Labels: transformer.ConfigLabels(name),
},
Spec: k.InitPodSpec(name, service.Image),
Spec: k.InitPodSpec(name, service.Image, service.ImagePullSecret),
},
},
}
@@ -281,7 +288,7 @@ func (k *Kubernetes) InitD(name string, service kobject.ServiceConfig, replicas
if len(service.Configs) > 0 {
podSpec = k.InitPodSpecWithConfigMap(name, service.Image, service)
} else {
podSpec = k.InitPodSpec(name, service.Image)
podSpec = k.InitPodSpec(name, service.Image, service.ImagePullSecret)
}
dc := &extensions.Deployment{
@@ -316,7 +323,7 @@ func (k *Kubernetes) InitDS(name string, service kobject.ServiceConfig) *extensi
},
Spec: extensions.DaemonSetSpec{
Template: api.PodTemplateSpec{
Spec: k.InitPodSpec(name, service.Image),
Spec: k.InitPodSpec(name, service.Image, service.ImagePullSecret),
},
},
}
@@ -807,7 +814,7 @@ func (k *Kubernetes) InitPod(name string, service kobject.ServiceConfig) *api.Po
Name: name,
Labels: transformer.ConfigLabels(name),
},
Spec: k.InitPodSpec(name, service.Image),
Spec: k.InitPodSpec(name, service.Image, service.ImagePullSecret),
}
return &pod
}
@@ -489,7 +489,7 @@ func TestRestartOnFailure(t *testing.T) {
func TestInitPodSpec(t *testing.T) {
name := "foo"
k := Kubernetes{}
result := k.InitPodSpec(name, newServiceConfig().Image)
result := k.InitPodSpec(name, newServiceConfig().Image, "")
if result.Containers[0].Name != "foo" && result.Containers[0].Image != "image" {
t.Fatalf("Pod object not found")
}