Kubernetes - Best way to create configMap and secret

时间:2018-07-25 05:10:50

标签: kubernetes

I have at least 4 config files for my service.

Like, application.properties, log config file, query file, ...

There are 4 config files which I am storing into kubernetes ConfigMaps and they are for different purposes. Currently, I am creating 4 configMaps for these 4 files and it becomes more work to configure them in deployment file.

We basically keep all these files in GIT and would be driving changes from GIT. So, if we need to modify something in the configMap, we will first update our file in GIT and then recreate a configMap.

Is there any other better way to just update few changes?

Does it make sense to keep all these 4 files in a single configMap.

Any advice please.

1 个答案:

答案 0 :(得分:2)

这是根据我到目前为止所学到的经验得出的个人看法,可能会有不同或更简单甚至更好的方法,所以请稍作选择。

考虑到您有多个服务或项目等,并且每个项目都有其自己的配置文件或环境变量,服务需要这些文件或环境变量才能正常运行。

我要做的是:

  1. 确定哪些配置选项是机密,哪些是正常的env变量。
  2. 为此创建两个文件,它们的名称可能是..secret-config.yml和env-config.yml
  3. 确保为每个文档设置适当的种类。这是一个示例配置文件,可以存储类似的秘密文件。

    apiVersion: v1
    data:
      ENV_1: test
      ENV_1: test2
      ENV_1: test3
    kind: ConfigMap
    metadata:
      annotations:
        field.cattle.io/creatorId: user-8rtg2
      name: my-service-configs
      namespace: my-namespace
    
  4. 现在假设您已在管道或Deployment-config中配置了CI-CD环境,则在服务部署步骤后使用更新值更新这些密钥/配置映射,只需添加几个步骤即可。

    sh deploy_to_kubernets
    sh update_config_maps
    sh update_secrets
    

现在要自我解释:

  • 为什么要在回购中存储kubernetes YML配置文件?

    因为我们要确保所有相关的配置都可访问并存储在相关的位置。这很有意义,因为我们将在CI流程中使用它。

  • 如何从CI创建或更新配置和机密?

    现在对我来说,由于我在kubernetes上使用了rancher API,因此我可以使用该API访问集群并创建或更新资源。我相信您可以找到类似的方法在集群上执行此操作。

因此,最后,只需将您的配置存储在服务中,因为它是服务的一部分,并且是代码正常工作所必需的(找出一种方法来编码或隐藏秘密值,以免它们暴露在代码中)。确保根据使用的变量类型创建密钥和配置映射。  有了这个,您将能够自动创建配置映射,并且每个配置映射都将处于适当的上下文中。