转换矩阵
此文档概述了关于 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 |