Remove duplicate of configmap (#1206)

* also change the name of the generated cm
This commit is contained in:
Hang Yan 2019-12-26 08:53:41 +08:00 committed by GitHub
parent 4cbe106351
commit 73ec0abab2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 231 additions and 29 deletions

View File

@ -581,6 +581,30 @@ func (k *Kubernetes) SortServicesFirst(objs *[]runtime.Object) {
*objs = ret
}
// RemoveDupObjects remove objects that are dups...eg. configmaps from env.
// since we know for sure that the duplication can only happends on ConfigMap, so
// this code will looks like this for now.
func (k *Kubernetes) RemoveDupObjects(objs *[]runtime.Object) {
var result []runtime.Object
exist := map[string]bool{}
for _, obj := range *objs {
if us, ok := obj.(*api.ConfigMap); ok {
k := us.GroupVersionKind().String() + us.GetNamespace() + us.GetName()
if exist[k] {
log.Debugf("Remove duplicate configmap: %s", us.GetName())
continue
} else {
result = append(result, obj)
exist[k] = true
}
} else {
result = append(result, obj)
}
}
*objs = result
}
// SortedKeys Ensure the kubernetes objects are in a consistent order
func SortedKeys(komposeObject kobject.KomposeObject) []string {
var sortedKeys []string

View File

@ -250,7 +250,7 @@ func (k *Kubernetes) InitConfigMapForEnv(name string, service kobject.ServiceCon
APIVersion: "v1",
},
ObjectMeta: api.ObjectMeta{
Name: name + "-" + envName,
Name: envName,
Labels: transformer.ConfigLabels(name + "-" + envName),
},
Data: envs,
@ -835,7 +835,7 @@ func (k *Kubernetes) ConfigEnvs(name string, service kobject.ServiceConfig, opt
ValueFrom: &api.EnvVarSource{
ConfigMapKeyRef: &api.ConfigMapKeySelector{
LocalObjectReference: api.LocalObjectReference{
Name: name + "-" + envName,
Name: envName,
},
Key: k,
}},
@ -1097,6 +1097,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
// sort all object so Services are first
k.SortServicesFirst(&allobjects)
k.RemoveDupObjects(&allobjects)
return allobjects, nil
}

View File

@ -427,6 +427,7 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
// sort all object so Services are first
o.SortServicesFirst(&allobjects)
o.RemoveDupObjects(&allobjects)
return allobjects, nil
}

View File

@ -79,7 +79,7 @@
"name": "ALLOW_EMPTY_PASSWORD",
"valueFrom": {
"configMapKeyRef": {
"name": "redis-foo-env",
"name": "foo-env",
"key": "ALLOW_EMPTY_PASSWORD"
}
}
@ -88,7 +88,7 @@
"name": "BAR",
"valueFrom": {
"configMapKeyRef": {
"name": "redis-bar-env",
"name": "bar-env",
"key": "BAR"
}
}
@ -97,7 +97,7 @@
"name": "FOO",
"valueFrom": {
"configMapKeyRef": {
"name": "redis-bar-env",
"name": "bar-env",
"key": "FOO"
}
}
@ -117,7 +117,7 @@
"kind": "ConfigMap",
"apiVersion": "v1",
"metadata": {
"name": "redis-foo-env",
"name": "foo-env",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis-foo-env"
@ -131,7 +131,7 @@
"kind": "ConfigMap",
"apiVersion": "v1",
"metadata": {
"name": "redis-bar-env",
"name": "bar-env",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "redis-bar-env"

View File

@ -10,4 +10,8 @@ services:
- ./hadoop-hive-namenode.env
ports:
- "50070:50070"
- "8020:8020"
- "8020:8020"
another-namenode:
image: bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8
env_file:
- ./hadoop-hive-namenode.env

View File

@ -38,6 +38,83 @@
"loadBalancer": {}
}
},
{
"kind": "Deployment",
"apiVersion": "extensions/v1beta1",
"metadata": {
"name": "another-namenode",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "another-namenode"
},
"annotations": {
"kompose.cmd": "%CMD%",
"kompose.version": "%VERSION%"
}
},
"spec": {
"replicas": 1,
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"io.kompose.service": "another-namenode"
},
"annotations": {
"kompose.cmd": "%CMD%",
"kompose.version": "%VERSION%"
}
},
"spec": {
"containers": [
{
"name": "another-namenode",
"image": "bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8",
"env": [
{
"name": "BAR",
"valueFrom": {
"configMapKeyRef": {
"name": "hadoop-hive-namenode-env",
"key": "BAR"
}
}
},
{
"name": "FOO",
"valueFrom": {
"configMapKeyRef": {
"name": "hadoop-hive-namenode-env",
"key": "FOO"
}
}
}
],
"resources": {}
}
],
"restartPolicy": "Always"
}
},
"strategy": {}
},
"status": {}
},
{
"kind": "ConfigMap",
"apiVersion": "v1",
"metadata": {
"name": "hadoop-hive-namenode-env",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "another-namenode-hadoop-hive-namenode-env"
}
},
"data": {
"BAR": "FOO",
"FOO": "BAR"
}
},
{
"kind": "Deployment",
"apiVersion": "extensions/v1beta1",
@ -91,7 +168,7 @@
"name": "BAR",
"valueFrom": {
"configMapKeyRef": {
"name": "namenode-hadoop-hive-namenode-env",
"name": "hadoop-hive-namenode-env",
"key": "BAR"
}
}
@ -104,7 +181,7 @@
"name": "FOO",
"valueFrom": {
"configMapKeyRef": {
"name": "namenode-hadoop-hive-namenode-env",
"name": "hadoop-hive-namenode-env",
"key": "FOO"
}
}
@ -128,21 +205,6 @@
},
"status": {}
},
{
"kind": "ConfigMap",
"apiVersion": "v1",
"metadata": {
"name": "namenode-hadoop-hive-namenode-env",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "namenode-hadoop-hive-namenode-env"
}
},
"data": {
"BAR": "FOO",
"FOO": "BAR"
}
},
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",

View File

@ -42,10 +42,10 @@
"kind": "ConfigMap",
"apiVersion": "v1",
"metadata": {
"name": "namenode-hadoop-hive-namenode-env",
"name": "hadoop-hive-namenode-env",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "namenode-hadoop-hive-namenode-env"
"io.kompose.service": "another-namenode-hadoop-hive-namenode-env"
}
},
"data": {
@ -53,6 +53,116 @@
"FOO": "BAR"
}
},
{
"kind": "DeploymentConfig",
"apiVersion": "v1",
"metadata": {
"name": "another-namenode",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "another-namenode"
},
"annotations": {
"kompose.cmd": "%CMD%",
"kompose.version": "%VERSION%"
}
},
"spec": {
"strategy": {
"resources": {}
},
"triggers": [
{
"type": "ConfigChange"
},
{
"type": "ImageChange",
"imageChangeParams": {
"automatic": true,
"containerNames": [
"another-namenode"
],
"from": {
"kind": "ImageStreamTag",
"name": "another-namenode:2.0.0-hadoop2.7.4-java8"
}
}
}
],
"replicas": 1,
"test": false,
"selector": {
"io.kompose.service": "another-namenode"
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"io.kompose.service": "another-namenode"
}
},
"spec": {
"containers": [
{
"name": "another-namenode",
"image": " ",
"env": [
{
"name": "BAR",
"valueFrom": {
"configMapKeyRef": {
"name": "hadoop-hive-namenode-env",
"key": "BAR"
}
}
},
{
"name": "FOO",
"valueFrom": {
"configMapKeyRef": {
"name": "hadoop-hive-namenode-env",
"key": "FOO"
}
}
}
],
"resources": {}
}
],
"restartPolicy": "Always"
}
}
},
"status": {}
},
{
"kind": "ImageStream",
"apiVersion": "v1",
"metadata": {
"name": "another-namenode",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "another-namenode"
}
},
"spec": {
"tags": [
{
"name": "2.0.0-hadoop2.7.4-java8",
"annotations": null,
"from": {
"kind": "DockerImage",
"name": "bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8"
},
"generation": null,
"importPolicy": {}
}
]
},
"status": {
"dockerImageRepository": ""
}
},
{
"kind": "DeploymentConfig",
"apiVersion": "v1",
@ -128,7 +238,7 @@
"name": "BAR",
"valueFrom": {
"configMapKeyRef": {
"name": "namenode-hadoop-hive-namenode-env",
"name": "hadoop-hive-namenode-env",
"key": "BAR"
}
}
@ -141,7 +251,7 @@
"name": "FOO",
"valueFrom": {
"configMapKeyRef": {
"name": "namenode-hadoop-hive-namenode-env",
"name": "hadoop-hive-namenode-env",
"key": "FOO"
}
}