我们正在将我们的ruby微服务移动到kubernetes,我们曾经在config/application.yml
中保存特定于环境的配置。使用kubernetes,您可以为每个服务创建特定于环境的文件,例如config/kubernetes/production.yml
等。
虽然kubernetes pod配置文件能够保存环境变量,但您似乎无法真正保存结构化数据。
例如,在application.yml
我们有
development: &development
process:
notifier:
type: 'terminal-notifier'
...
production: &production
process:
notifier:
type: 'airbrake'
api_key: 'xxxx'
host: 'xxx.xxx.com'
...
继续使用kubernetes进行这种做法并在application.yml
中打破环境是否合理?或者kubernetes是否有其他一些最佳实践来为pod配置结构化配置?
请注意,在迁移所有服务之前,我们基本上必须按原样保留配置:
kubernetes_staging:
<<: *staging
...
答案 0 :(得分:1)
您可以通过以下几种方式执行此操作:一种是继续执行您在单个文件中执行的操作,另一种方法是使用标签指定要使用的环境配置,另一种是使用命名空间。我个人推荐使用命名空间,这样你就可以为每个环境提供单独的.yml
文件,这些文件可能会旋转相同的pod,但配置不同,所以为了做到这一点,你需要有staging,prod等命名空间。命名空间也是让同一个kubernetes集群具有分段和生产概念的好方法。此外,您可以为某些名称空间指定权限。
以下是名称空间https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/design/namespaces.md
的文档