kompose/docs/conversion.md
Charlie Drage 7e4a2ea77d Adds a more "full" conversion document
This majorly updates the conversion document in order to have version
compatibile checks with V1, V2 and V3 of Docker Compose and Kompose
support.
2017-08-17 16:07:43 -04:00

17 KiB

Conversion Matrix

This document outlines all possible conversion details regarding docker-compose.yaml values to Kubernetes / OpenShift artifacts. This covers major versions of Docker Compose such as 1, 2 and 3.

The current table covers all current possible Docker Compose keys.

Note: due to the fast-pace nature of Docker Compose version revisions, minor versions such as 2.1, 2.2, 3.1, 3.2 or 3.3 are not supported until they are cut into a major version release such as 2 or 3.

Glossary:

  • ✓: Converts
  • -: Not in this Docker Compose Version
  • N: Not yet implemented
  • X: Not applicable / no 1-1 conversion
Keys V1 V2 V3 Kubernetes / OpenShift Notes
build N Builds/Pushes to Docker repository. See --build parameter Only supported on Version 1/2 of Docker Compose
build: context N
build: dockerfile N
build: args N N N
build: cache_from - - N
cap_add, cap_drop Pod.Spec.Container.SecurityContext.Capabilities.Add/Drop
command Pod.Spec.Container.Command
configs N N N
configs: short-syntax N N N
configs: long-syntax N N N
cgroup_parent X X X Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/11986
container_name Metadata.Name + Deployment.Spec.Containers.Name
credential_spec N N N
deploy - -
deploy: mode - -
deploy: replicas - - Deployment.Spec.Replicas / DeploymentConfig.Spec.Replicas
deploy: placement - - N
deploy: update_config - - N
deploy: resources - - Containers.Resources.Limits.Memory Support for memory but not CPU
deploy: restart_policy - - Pod generation This generated a Pod, see the user guide on restart
deploy: labels - - N
devices X X X Not supported within Kubernetes, See issue https://github.com/kubernetes/kubernetes/issues/5607
depends_on X X X
dns X X X Not used within Kubernetes. Kubernetes uses a managed DNS server
dns_search X X X See dns key
tmpfs Pod.Spec.Containers.Volumes.EmptyDir Creates emptyDirvolume with medium set to Memory & mounts given directory inside container
entrypoint Pod.Spec.Container.Command Same as command
env_file N N N
environment Pod.Spec.Container.Env
expose Service.Spec.Ports
extends Extends by utilizing the same image supplied
external_links X X X Kubernetes uses a flat-structure for all containers and thus external_links does not have a 1-1 conversion
extra_hosts N N N
group_add
healthcheck - N N
image Deployment.Spec.Containers.Image
isolation X X X Not applicable as this applies to Windows with HyperV support
labels Metadata.Annotations
links X X x All containers in the same pod are accessible in Kubernetes
logging X x X Kubernetes has built-in logging support at the node-level
network_mode X X X Kubernetes uses it's own cluster networking
networks X X X See networks key
networks: aliases X X X See networks key
networks: addresses X X X See networks key
pid Pod.Spec.HostPID
ports Service.Spec.Ports
ports: short-syntax Service.Spec.Ports
ports: long-syntax - - Service.Spec.Ports
secrets - - N
secrets: short-syntax - - N
secrets: long-syntax - - N
security_opt X X X Kubernetes uses it's own container naming scheme
stop_grace_period Pod.Spec.TerminationGracePeriodSeconds
stop_signal X X X Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/30051
sysctls N N N
ulimits X X X Not supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/3595
userns_mode X X X Not supported within Kubernetes and ignored in Docker Compose Version 3
volumes PersistentVolumeClaim Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster
volumes: short-syntax PersistentVolumeClaim Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster
volumes: long-syntax - - PersistentVolumeClaim Creates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster
restart
Volume X X X
driver X X X
driver_opts X X X
external X X X
labels X X X
Network X X X
driver X X X
driver_opts X X X
enable_ipv6 X X X
ipam X X X
internal X X X
labels X X X
external X X X