gpt4 book ai didi

kubernetes - 指向文件的环境变量的Configmap

转载 作者:行者123 更新时间:2023-12-02 12:12:38 25 4
gpt4 key购买 nike

我有一个名为envapp_conf_path变量,它指向一个\location\file.yaml,该变量又包含应用程序正常工作所需的所有值。应用程序需要此app_conf_path,该位置必须具有file.yaml的位置才能运行该应用程序。如何为这种类型的设置创建configmap。现在,我在file.yaml中包含该persistentvolume,并具有指向该envmountlocation变量。我是最近才知道configmaps的。任何帮助,将不胜感激。

最佳答案

I have a env variable called app_conf_path which points to a \location\file.yaml which in turn contains all the values required for the application to work.The application needs this app_conf_path which has the location of file.yaml to run the application. How can i create a configmap for this type of setup?



我将开始讨论ConfigMaps的概念:
  • ConfigMap是配置设置的字典。它由字符串的键值对组成。
  • ConfigMap可用于使代码与配置分开。
  • 您可以生成configmap from directoriesfrom literal values或我们想要的配置文件:from a file
  • ConfigMap可以被视为kubernetes中的一个卷:

    • The data stored in a ConfigMap object can be referenced in a volume of type configMap and then consumed by containerized applications running in a Pod.
    • When referencing a configMap object, you can simply provide its name in the volume to reference it. You can also customize the path to use for a specific entry in the ConfigMap

  • 从文件创建ConfigMap:
  • 要创建配置映射,请运行以下命令:
  • kubectl create configmap <CONFIGMAP_NAME> --from-file=/location/file.yaml
  • 您还可以将多个文件添加到单个configmap中,只需重复--from-file参数即可,例如:
  • kubectl create configmap <CONFIGMAP_NAME> \
    --from-file=path/db.properties \
    --from-file=path/ui.properties

    I want to stop mounting the persistentvolume which has this file.yaml and the file.yaml is a simple yaml file with details of dbconnectionstrings and paths for other apps



    根据上面看到的概念,您可以停止使用 ConfigMap来完全避免将文件挂载到PV以提供配置文件的意图。
  • 我想建议你The ITHollow ConfigMap Example。我打算在这里使用它,但是您的应用程序已经内置了可以在外部查找配置文件的功能。我将保留此链接,以便您可以看到如何将ConfigMap用于需要外部配置且未经过硬编码在特定文件中查找的其他应用。


  • 可重现的示例:
  • 这将是一个示例,向您展示如何实现问题所需要的部分。
  • 这将是一个简单的ubuntu容器,在/tmp/file.yaml中安装了一个配置文件,该文件路径将是一个名为app_conf_path的Env变量。
  • 首先,我将创建一个名为file.yaml的文件并添加3个值:
  • $ cat file.yaml 
    key1: value1
    key2: value2
    key3: value3

    注意:的名称 file.yaml并不是很常见,我使用它来模拟您的环境,通常我们使用类似 app.properties的名称,并且它不需要任何以前的结构,只是 key:value对形式的所有值,例如在我的示例中。
  • 现在,我们将从app.config文件创建名为file.yaml的配置映射。该文件位于我运行命令的同一文件夹中,因此不必指定完整路径:
  • $ kubectl create configmap app.config --from-file=file.yaml
    configmap/app.config created

    文件名成为configmap内部的引用,以后将使用。
  • 让我们看看我们创建的配置图:
  • $ kubectl describe configmap app.config
    Name: app.config
    Namespace: default
    Labels: <none>
    Annotations: <none>

    Data
    ====
    file.yaml:
    ----
    key1: value1
    key2: value2
    key3: value3

    Events: <none>
  • 现在您的目标是add the configmap data to a volume,并添加将app_conf_path指向/tmp/file.yaml的ENV变量,这是该的app-deploy.yaml:
  • apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: my-app
    labels:
    app: my-app
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: my-app
    template:
    metadata:
    labels:
    app: my-app
    spec:
    containers:
    - name: ubuntu
    image: ubuntu
    command: [ "/bin/bash", "-c", "--" ]
    args: [ "while true; do sleep 3000; done;" ]
    volumeMounts:
    - name: config-volume
    mountPath: /tmp
    env:
    - name: app_conf_path
    value: "/tmp/file.yaml"
    volumes:
    - name: config-volume
    configMap:
    name: app.config

    注意:这是一个非常有趣的步骤。我们使用 volume创建一个 configmap,并将所需位置设置为 mountvolumeconfigmap的每个部分都是该文件夹中的一个文件。由于我们仅通过1个文件创建了该文件,因此它是唯一将要挂载的文件。我们还将 ENV name设置为所需的 value,作为文件的路径。
  • 现在,应用它,并使用kubectl exec -it <POD_NAME> -- /bin/bash在pod内打开一个 shell ,以查看我们的结果:
  • $ kubectl apply -f app-deploy.yaml 
    deployment.apps/my-app created

    $ kubectl get pods
    NAME READY STATUS RESTARTS AGE
    my-app-68b5b69fc8-xxqpw 1/1 Running 0 3s

    $ kubectl exec -it my-app-68b5b69fc8-xxqpw -- /bin/bash

    root@my-app-68b5b69fc8-xxqpw:/# printenv | grep app_conf_path
    app_conf_path=/tmp/file.yaml

    root@my-app-68b5b69fc8-xxqpw:/# cat $app_conf_path
    key1: value1
    key2: value2
    key3: value3

    现在,我们达到了您的要求。

    在容器内,有一个名为 file.yaml的配置文件,其中包含我们用于生成配置文件的配置设置。

    您不必担心分别创建和维护卷。

    如果您还有任何疑问,请在评论中告诉我。

    关于kubernetes - 指向文件的环境变量的Configmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61055004/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com