zoukankan      html  css  js  c++  java
  • 如何使用Kubernetes的configmap通过环境变量注入到pod里

    在Kubernetes官网里,有这样一篇文章,提到了Kubernetes里的一个最佳实践就是把应用代码同配置信息分开,一种方式就是使用Kubernetes 1.2里引入的configmap概念。

    https://kubernetes.io/blog/2016/04/configuration-management-with-containers/

    configmap实际上就是一系列键值对,存储于etcd里。etcd的官网有这样一句话:

    etcd is a distributed key-value store designed to reliably and quickly preserve and provide access to critical data.

    https://github.com/etcd-io/etcd/blob/master/Documentation/docs.md

    etcd是一个高性能的分布式键值对存储库,用于存储和访问关键数据。

    使用下面的命令行创建一个Kubernetes config map:

    kubectl create configmap test-config --from-literal=test.type=unit --from-literal=test.exec=always

    创建一个名为test-config的键值对,key为test.type,值为unit,key为test.exec, 值为always。

    下面我打算创建一个pod,消费这个名为test-config的configmap。

    创建一个内容如下的yaml文件:

    apiVersion: v1
    
    kind: Pod
    
    metadata:
    
    name: test-configmap
    
    spec:
    
    containers:
    
    - name: test-container
    
    image: alpine:3.8
    
    command: [ "/bin/sh", "-c", "env" ]
    
    env:
    
    - name: TEST_TYPE
    
    valueFrom:
    
    configMapKeyRef:
    
    name: test-config
    
    key: test.type
    
    - name: TEST_EXEC
    
    valueFrom:
    
    configMapKeyRef:
    
    name: test-config
    
    key: test.exec
    
    restartPolicy: Never
    

    这个yaml文件定义的pod基于docker镜像alpine,执行shell命令/bin/sh -c env查看环境变量。

    在env区域,我给该pod注入一个名为TEST_TYPE的环境变量,值从configMap键值对的键名称为test.type的值中取。

    kubectl create -f 创建这个pod:

    使用命令kubectl logs test-configmap查看这个pod运行生成的日志,发现输出的环境变量列表中,出现了TEST_TYPE=unit,这个TEST_TYPE是我在yaml文件里注入的环境变量名称,而unit就来自configmap里test-config的值unit。

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    【洛谷P3901】数列找不同
    【洛谷P2966】Cow Toll Paths
    【CH6901】骑士放置
    【洛谷P2215】上升序列
    【洛谷P1637】三元上升子序列
    【POJ2226】Muddy Fields
    【UVA1194】Machine Schedule
    【CH6803】导弹防御塔
    【CH6802】车的放置
    hdu 3572(构图+最大流)
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/9992364.html
Copyright © 2011-2022 走看看