如何使用kubernetes配置特定于环境的应用程序配置

时间:2015-11-03 08:47:32

标签: provisioning kubernetes

我们正在将我们的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
  ...

1 个答案:

答案 0 :(得分:1)

您可以通过以下几种方式执行此操作:一种是继续执行您在单个文件中执行的操作,另一种方法是使用标签指定要使用的环境配置,另一种是使用命名空间。我个人推荐使用命名空间,这样你就可以为每个环境提供单独的.yml文件,这些文件可能会旋转相同的pod,但配置不同,所以为了做到这一点,你需要有staging,prod等命名空间。命名空间也是让同一个kubernetes集群具有分段和生产概念的好方法。此外,您可以为某些名称空间指定权限。

以下是名称空间https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/design/namespaces.md

的文档