Kubernetes 我应该在何时将envFrom用于configmaps?

Kubernetes 我应该在何时将envFrom用于configmaps?,kubernetes,environment-variables,configmap,Kubernetes,Environment Variables,Configmap,根据1.6版及更高版本的Kubernetes文档,我们可以使用: envFrom: - configMapRef: name: <config-file> 如果文件中有多个变量,但只想提取单个key=value对,您会使用第二个示例吗?我试图了解在CKAD考试中可能遇到的场景的不同用例。我已经使用了这两种情况,并且我的一些部署使用了数十个环境变量。这在很大程度上取决于您的具体情况以及您管理设置的方式 一般来说,如果您的应用程序使用了configmaps中的所有或大部

根据1.6版及更高版本的Kubernetes文档,我们可以使用:

envFrom:
  - configMapRef:
      name: <config-file>

如果文件中有多个变量,但只想提取单个key=value对,您会使用第二个示例吗?我试图了解在CKAD考试中可能遇到的场景的不同用例。

我已经使用了这两种情况,并且我的一些部署使用了数十个环境变量。这在很大程度上取决于您的具体情况以及您管理设置的方式

一般来说,如果您的应用程序使用了configmaps中的所有或大部分密钥,那么对于特定的应用程序,如果您有特定的configmaps,那么envFrom显然更易于使用和维护。例如,当您的一位队友需要添加新的功能标志时,只需将其添加到configmap就足以在您的所有部署中启用它

另一方面,如果您更多地按主题组织configmaps,或者如果多个应用程序需要来自同一configmap的特定键,则configMapKeyRef更好。您将只获取应用程序中所需的密钥,并确保不会意外覆盖任何内容。缺点是,为了添加相同的功能标志,您的队友现在必须编辑configmap和部署

请记住,这两个选项都不是唯一的,您可能最终会使用两者的混合。例如,类似这样的事情可能有意义:

来自: 这可能包含环境范围的设置。例如应用程序使用的域名或仅用于生产的功能标志。 -configMapRef: 名称:生产设置 您可以在此处存储此特定应用程序的所有设置。 -configMapRef: 名称:我的应用程序设置 环境: 这可能是多个应用程序共享的存储桶。因此,您可能希望将其保留为不同的配置映射,并让每个应用程序选择所需的密钥。 -名称:S3_BUCKET 价值来源: configMapKeyRef: 名称:s3设置 钥匙:铲斗
1是,2是使用envFrom加载乘法值,然后像第2个示例中那样使用它们
env:
        # Define the environment variable
        - name: SPECIAL_LEVEL_KEY
          valueFrom:
            configMapKeyRef:
              # The ConfigMap containing the value you want to assign to SPECIAL_LEVEL_KEY
              name: special-config
              # Specify the key associated with the value
              key: special.how