Kompose - 转换 - Kompose 中文

转换矩阵

此文档概述了关于 compose.yaml 值转换为 Kubernetes/OpenShift 项目的所有可能的转换详情。

版本支持

在后台,我们正在使用 compose-go,也就是用于解析 Compose 文件的参考库。我们应该能够加载所有版本的 Compose 文件。我们尽最大努力在发布时尽快保持 Compose 文件的最新状态,以便与 Compose 规范 中定义的最新特性兼容。如果你绝对需要一项我们尚未支持的功能,请提交 PR!

转换表

术语表

  • ✓: 转换
  • -: 不在此 Compose 版本中
  • n: 尚未实现
  • x: 不适用 / 不是一对一转换
V1 V2 V3 Kubernetes / OpenShift 注释
build   构建/推送至 Docker 仓库。请参阅 有关构建和推送镜像的用户指南
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: 短语法 n n   仅创建 configMap
configs: 长语法 n n   如果目标路径为 /,则忽略它,并且仅创建 configMap
cgroup_parent x x x   Kubernetes 不支持。请参阅问题 https://github.com/kubernetes/kubernetes/issues/11986
container_name Metadata.Name + Deployment.Spec.Containers.Name  
credential_spec x x x   仅适用于 Windows 容器
deploy - -    
deploy: 模式 - -    
deploy: 副本 - - Deployment.Spec.Replicas / DeploymentConfig.Spec.Replicas  
deploy: 放置 - - 亲和性  
deploy: 更新配置 - - Workload.Spec.Strategy Deployment / DeploymentConfig
deploy: 资源 - - Containers.Resources.Limits.Memory / Containers.Resources.Limits.CPU 支持内存和 CPU
deploy: 重启策略 - - Pod 生成 这生成了 Pod,请参阅 有关重启的用户指南
deploy: 标签 - - Workload.Metadata.Labels 仅应用于工作负载资源
devices x x x   Kubernetes 不支持,请参阅问题 https://github.com/kubernetes/kubernetes/issues/5607
依赖 x x x    
dns x x x   未在 Kubernetes 中使用。Kubernetes 使用托管 DNS 服务器
dns_search x x x   参见 dns
domainname 子域  
tmpfs Containers.Volumes.EmptyDir 使用 medium 变量在容器内部挂载给定目录,创建 emptyDir 卷
entrypoint Container.Command  
env_file n n    
environment Container.Env  
expose Service.Spec.Ports  
endpoint_mode n n   如果 endpoint_mode=vip,创建的 Service 将强制设置为 NodePort 类型
extends   利用提供的相同镜像进行扩展
external_links x x x   Kubernetes 对所有容器使用平面结构,因此 external_links 没有 1-1 的转换
extra_hosts n n n    
group_add    
healthcheck - n    
hostname HostName  
image Deployment.Spec.Containers.Image  
isolation x x x   不适用,因为适用于支持 HyperV 的 Windows
labels Metadata.Annotations  
links x x x   Kubernetes 中的所有容器都可以访问同一 pod
logging x x x   Kubernetes 在节点级具有内置的日志记录支持
network_mode x x x   Kubernetes 使用自己的集群网络
networks   参见 networks
networks: aliases x x x   参见 networks
networks: addresses x x x   参见 networks
pid HostPID  
ports Service.Spec.Ports  
ports: 快捷语法 Service.Spec.Ports  
ports: 长语法 - - Service.Spec.Ports  
secrets - - Secret 不支持外部机密
secrets: 快捷语法 - - Secret 不支持外部机密
secrets: 长语法 - - Secret 不支持外部机密
security_opt x x x   Kubernetes 使用自己的容器命名方案
stop_grace_period TerminationGracePeriodSeconds  
stop_signal x x x   Kubernetes 中不支持。请参阅问题 https://github.com/kubernetes/kubernetes/issues/30051
sysctls n n n    
ulimits x x x   Kubernetes 中不支持。请参阅问题 https://github.com/kubernetes/kubernetes/issues/3595
userns_mode x x x   Kubernetes 中不支持,并在 Compose 版本 3 中被忽略
volumes PersistentVolumeClaim 创建 PersistentVolumeClaim。仅当集群中已有 PersistentVolume 时才能创建
volumes: 快捷语法 PersistentVolumeClaim 创建 PersistentVolumeClaim。仅当集群中已有 PersistentVolume 时才能创建
volumes: 长语法 - - PersistentVolumeClaim 创建 PersistentVolumeClaim。仅当集群中已有 PersistentVolume 时才能创建
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