kubernetes - 用一些环境变量替换configmap内容

标签 kubernetes configmap kubernetes-statefulset

我正在运行一个使用volumeClaimTemplates的statefulset。那里一切都很好。

我也有一个configmap,在这里我想用此配置文件所投影到的每个pod的Pod名称来替换一些条目;例如,如果configmap数据是:

ThisHost=<hostname -s>
OtherConfig1=1
OtherConfig1=2
...

然后对于名为mypod-0的有状态集pod,配置文件应包含ThisHost=mypod-0ThisHost=mypod-1mypod-1

我该怎么办?

最佳答案

主机名默认包含在pod中的环境变量HOSTNAME中。
如果您先进行以下操作,则可以修改configmap本身:

  • 挂载configmap并将其设置为ThisHost=hostname -s(这将使用该文本在pod的文件系统中创建一个文件)
  • 启动时将替换命令传递给pod(类似于$ sed 's/hostname/$HOSTNAME/g' -i /path/to/configmapfile)

  • 基本上,您挂载configmap,然后将其替换为pod中可用的环境变量信息。这只是一个替代操作。

    看下面的例子:
    apiVersion: v1
    kind: Pod
    metadata:
    name: command-demo
    labels:
    purpose: demonstrate-command
    spec:
    containers:
    - name: command-demo-container
    image: debian
    command: ["sed"]
    args: ["'s/hostname/$HOSTNAME'", "-i", "/path/to/config/map/mount/point"]
    restartPolicy: OnFailure
    

    args的语法可能需要进行一些调整,但是您明白了。

    请让我知道是否有帮助。

    关于kubernetes - 用一些环境变量替换configmap内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59302937/

    相关文章:

    docker - Kubernetes 节点 ulimit 设置

    kubernetes - Kubernetes Worker Node 应该有公共(public) IP 吗?

    kubernetes - 配置映射可以在Kubernetes中使用容忍度吗?

    kubernetes - 在 Kubernetes 中更新 configmap 时刷新 daemonset pod

    kubernetes - Helm Chart - 处理多行文件结果

    mongodb - 连接到不同命名空间中的 Kubernetes mongo db

    docker - 哪种方法更适合发现容器就绪情况?

    kubernetes - kube-state-metrics 将指标在内存中保留多长时间?

    kubernetes - 在 statefulset 中跳过 pod 部署