Add label support to named volumes in docker compose v3 to Kubernetes (#1083)

* Support read specific label (kompose.volume.size) from named volume and apply to kubernetes supported volume size

* Fix the PVC size in log message when deploy Kubernetes

* Skip creation of PersistentVolumeClaim if it is already created in the same kubernetes deploy

* Add selector to PersistentVolumeClaim only when specific label (kompose.volume.selector) is used in named volume

* Add test case to named-volume for the new labels
This commit is contained in:
huikaihoo
2018-11-29 12:07:17 -05:00
committed by Charlie Drage
parent ae44008908
commit d48ae64325
6 changed files with 256 additions and 19 deletions
@@ -0,0 +1,16 @@
version: '3'
services:
db:
image: postgres:10.1
ports:
- "5432"
labels:
kompose.volume.size: 200Mi
volumes:
- db-data:/var/lib/postgresql/data
- db-config:/var/lib/postgresql/config
volumes:
db-data:
labels:
kompose.volume.selector: db-data-dev
kompose.volume.size: 500Mi
@@ -0,0 +1,157 @@
{
"kind": "List",
"apiVersion": "v1",
"metadata": {},
"items": [
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "db",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "db"
},
"annotations": {
"kompose.cmd": "%CMD%",
"kompose.version": "%VERSION%",
"kompose.volume.size": "200Mi"
}
},
"spec": {
"ports": [
{
"name": "5432",
"port": 5432,
"targetPort": 5432
}
],
"selector": {
"io.kompose.service": "db"
}
},
"status": {
"loadBalancer": {}
}
},
{
"kind": "Deployment",
"apiVersion": "extensions/v1beta1",
"metadata": {
"name": "db",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "db"
},
"annotations": {
"kompose.cmd": "%CMD%",
"kompose.version": "%VERSION%",
"kompose.volume.size": "200Mi"
}
},
"spec": {
"replicas": 1,
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"io.kompose.service": "db"
}
},
"spec": {
"volumes": [
{
"name": "db-data",
"persistentVolumeClaim": {
"claimName": "db-data"
}
},
{
"name": "db-config",
"persistentVolumeClaim": {
"claimName": "db-config"
}
}
],
"containers": [
{
"name": "db",
"image": "postgres:10.1",
"ports": [
{
"containerPort": 5432
}
],
"resources": {},
"volumeMounts": [
{
"name": "db-data",
"mountPath": "/var/lib/postgresql/data"
},
{
"name": "db-config",
"mountPath": "/var/lib/postgresql/config"
}
]
}
],
"restartPolicy": "Always"
}
},
"strategy": {
"type": "Recreate"
}
},
"status": {}
},
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "db-data",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "db-data"
}
},
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"selector": {
"matchLabels": {
"io.kompose.service": "db-data-dev"
}
},
"resources": {
"requests": {
"storage": "500Mi"
}
}
},
"status": {}
},
{
"kind": "PersistentVolumeClaim",
"apiVersion": "v1",
"metadata": {
"name": "db-config",
"creationTimestamp": null,
"labels": {
"io.kompose.service": "db-config"
}
},
"spec": {
"accessModes": [
"ReadWriteOnce"
],
"resources": {
"requests": {
"storage": "200Mi"
}
}
},
"status": {}
}
]
}