在 Kubernetes 上暂存和生产
Staging and Production on Kubernetes
我正在为 2 个 命名空间 共享同一个集群:staging 和 production。两个命名空间之间的唯一区别是:
- 安装到某些 pods 的卷(staging 和 production 之间的独立持久性,很明显!)
- 几个用于相对寻址的 web-URL
- 用于复杂持久性的数据库的几个 IP
我已经设法解决 (2) 和 (3) 如下,以便维护一个单一的 YAML 文件用于所有 ReplicationControllers:
- 使用命名空间本地的 ConfigMaps 来定义通过环境变量传递到 pods
的任何配置
- 使用 Services 和 Endpoints 来处理指向不同内部 IP 的 DNS 条目
但是,我无法找到令人满意的方法来参考 gcePersistentDisk 的 pdName - 我似乎无法使用 ConfigMap,因此有点难过。解决这个问题的合适方法是什么?最好的选择似乎是使用不同的字符串维护 2 个单独的 YAML 文件,但这有代码味道,因为它违反了 DRY.
此外,非常感谢对我上面提到的其余设置的任何建设性评论:-)
您可能会创建一个 PersistentVolumeClaim in each namespace. Take a look at Can a PVC be bound to a specific PV? 关于如何 "pre-bind" PersistentVolumes 到 PersistentVolumeClaims。
可能不是理想的解决方案,但它可能会起作用,直到 PVC 支持标签选择器。
我正在为 2 个 命名空间 共享同一个集群:staging 和 production。两个命名空间之间的唯一区别是:
- 安装到某些 pods 的卷(staging 和 production 之间的独立持久性,很明显!)
- 几个用于相对寻址的 web-URL
- 用于复杂持久性的数据库的几个 IP
我已经设法解决 (2) 和 (3) 如下,以便维护一个单一的 YAML 文件用于所有 ReplicationControllers:
- 使用命名空间本地的 ConfigMaps 来定义通过环境变量传递到 pods 的任何配置
- 使用 Services 和 Endpoints 来处理指向不同内部 IP 的 DNS 条目
但是,我无法找到令人满意的方法来参考 gcePersistentDisk 的 pdName - 我似乎无法使用 ConfigMap,因此有点难过。解决这个问题的合适方法是什么?最好的选择似乎是使用不同的字符串维护 2 个单独的 YAML 文件,但这有代码味道,因为它违反了 DRY.
此外,非常感谢对我上面提到的其余设置的任何建设性评论:-)
您可能会创建一个 PersistentVolumeClaim in each namespace. Take a look at Can a PVC be bound to a specific PV? 关于如何 "pre-bind" PersistentVolumes 到 PersistentVolumeClaims。
可能不是理想的解决方案,但它可能会起作用,直到 PVC 支持标签选择器。