• 如何使用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的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    Silverlight学习(五)图形标绘
    Silverlight学习(四) domainservice动态多条件查询
    MySQL之单表查询
    mysql外键的三种关系
    mysql之完整性约束
    接口类和抽象类的区别
    mysql中的sql_mode
    html5本地存储技术 localstorage
    mysql数值类型
    mysql
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/9992364.html
Copyright © 2020-2023  润新知