Kompose - Conversion

Conversion Matrix

This document outlines all possible conversion details regarding compose.yaml values to Kubernetes / OpenShift artifacts.

Version Support

Under the hood, we’re using compose-go, the reference library for parsing Compose files. We should be able to load all versions of Compose files. We’re doing our best to keep it up to date as soon as possible in our releases to be compatible with the latest features defined in the Compose specification. If you absolutely need a feature we don’t support yet, please open a PR!

Conversion Table

Glossary:

  • ✓: Converts
  • -: Not in this Compose Version
  • n: Not yet implemented
  • x: Not applicable / no 1-1 conversion
Keys V1 V2 V3 Kubernetes / OpenShift Notes
build   Builds/Pushes to Docker repository. See user guide on build and push image
build: context    
build: dockerfile    
build: args n n n    
build: cache_from - - n    
cap_add Container.SecurityContext.Capabilities.Add  
cap_drop Container.SecurityContext.Capabilities.Drop  
command Container.Args  
configs n n    
configs: short-syntax n n   Only create configMap
configs: long-syntax n n   If target path is /, ignore this and only create configMap
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 x x x   Only applicable to Windows containers
deploy - -    
deploy: mode - -    
deploy: replicas - - Deployment.Spec.Replicas / DeploymentConfig.Spec.Replicas  
deploy: placement - - Affinity  
deploy: update_config - - Workload.Spec.Strategy Deployment / DeploymentConfig
deploy: resources - - Containers.Resources.Limits.Memory / Containers.Resources.Limits.CPU Support for memory as well as cpu
deploy: restart_policy - - Pod generation This generated a Pod, see the user guide on restart
deploy: labels - - Workload.Metadata.Labels Only applied to workload resource
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
domainname SubDomain  
tmpfs Containers.Volumes.EmptyDir Creates emptyDirvolume with medium set to Memory & mounts given directory inside container
entrypoint Container.Command  
env_file n n    
environment Container.Env  
expose Service.Spec.Ports  
endpoint_mode n n   If endpoint_mode=vip, the created Service will be forced to set to NodePort type
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    
hostname HostName  
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 its own cluster networking
networks   See networks key
networks: aliases x x x   See networks key
networks: addresses x x x   See networks key
pid HostPID  
ports Service.Spec.Ports  
ports: short-syntax Service.Spec.Ports  
ports: long-syntax - - Service.Spec.Ports  
secrets - - Secret External Secret is not Supported
secrets: short-syntax - - Secret External Secret is not Supported
secrets: long-syntax - - Secret External Secret is not Supported
security_opt x x x   Kubernetes uses its own container naming scheme
stop_grace_period 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 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    
           
Configs x x x    
environment x y y    
file y y y    
content x y y    
labels x x x    
external x x x