【问题标题】:Can i get a configMap value from an external file?我可以从外部文件中获取 configMap 值吗?
【发布时间】:2020-08-25 06:39:53
【问题描述】:

我已经定义了这个 configMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
  labels:
    app: my-config
data:
  myConfiguration.json: |
    {
    "configKey": [
        {
          "key" : "value"
        },
        {
          "key" : "value"
        }
    }

这就是我在我的 pod 中使用它的方式:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: someimage
  name: someimage
spec:
  selector:
    matchLabels:
      app: someimage
  replicas: 1
  template:
    metadata:
      labels:
        app: someimage
    spec:
      containers:
        - image: someimage
          name: someimage
          command:
            - mb
            - --configfile
            - /configFolder/myConfig.json
          ports:
            - containerPort: 2525
          volumeMounts:
            - name: config-volume
              mountPath: /configFolder
      hostname: somehost
      restartPolicy: Always
      nodeSelector:
        beta.kubernetes.io/os: linux
      volumes:
        - name: config-volume
          configMap:
            name: my-config
            items:
              - key: myConfiguration.json
                path: myConfiguration.json

我的问题是:是否可以将 myconfiguration(json 字符串)的值保存在与 configmap 分开的单独文件中?为了保持清洁?我需要如何更改部署和 configmap yaml 定义以便不必更改应用程序?

重要提示:我不能使用任何单独的模板工具。

谢谢

【问题讨论】:

    标签: kubernetes configmap


    【解决方案1】:

    是的,你可以!使用 Kustomize。

    Kustomize 是 1.14 中引入的 kubectl 子命令,它具有许多有助于自定义部署的功能。

    为此,您必须使用ConfigMaps Generators。这将需要一个额外的文件kustomization.yml

    所以如果您的部署 yaml 文件是 deployment.yaml 并且您的 configMap 的名称是 my-config,那么 kustomization.yaml 应该是这样的

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    resources:
      - deployment.yaml
    configMapGenerator:
    - name: my-config
      files:
      - myConfiguration.json
      - myConfiguration2.json # you can use multiple files
    

    要运行 kustomize,您必须使用 kubectl apply-k 选项。

    编辑:Kustomize 会将您的 ConfigMap 的哈希值附加到它们的名称中。有了它,它将能够跟踪您的配置更改,并在它们发生更改时为您触发重新部署。

    因此,当您更改 configMaps 时,无需删除您的 pod。

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 2018-03-26
      • 2021-11-24
      • 2023-03-27
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多