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