k8s-configmap 创建

在一个pod里面使用ConfigMap大致有三种方式:
1. 命令行参数
2. 环境变量
3. 数据卷文件

创建configmap有两种方式
1. yaml文件创建
2. 通过kubectl命令行创建

最佳实践是通过yaml文件创建,这样能够达到svc、rc、configmap创建的统一,如果是文件,我们可以先通过命令行创建configmap,然后通过kubectl get configmap nginx-conf -o yaml
导出yaml文件。

创建configmap

很多应用程序的配置需要通过配置文件命令行参数环境变量的组合配置来完成。这些配置应该从image内容中解耦,以此来保持容器化应用程序的便携性。

ConfigMap API资源提供了将配置数据注入容器的方式,同时保持容器是不知道Kubernetes的。

ConfigMap可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象。

目录创建configmap

  1. 目录结果

    [root@controller01 deployment]# ls confmap/
    test1  test2
    [root@controller01 deployment]# cat confmap/test2
    key=456
    [root@controller01 deployment]# cat confmap/test1
    key=123
    
  2. 从目录创建

    [root@controller01 deployment]# kubectl create configmap test-conf001 --from-file=confmap
    configmap "test-conf001" created
    

    --from-file指向目录的时候,每个在目录底下的所有文件会被用在ConfigMap里面创建一个键值对,

  3. 查看创建的configmap

    [root@controller01 deployment]# kubectl describe configmap test-conf001
    Name:       test-conf001
    Namespace:  default
    Labels:     
    Annotations:    
    Data
    `====`
    test1:  8 bytes
    test2:  8 bytes
  4. 生成yaml文件

    [root@controller01 deployment]# kubectl get configmap test-conf001 -o  yaml
    apiVersion: v1
    data:
    test1: |
    key=123
    test2: |
    key=456
    kind: ConfigMap
    metadata:
    creationTimestamp: 2017-06-21T08:52:02Z
    name: test-conf001
    namespace: default
    resourceVersion: "2460831"
    selfLink: /api/v1/namespaces/default/configmaps/test-conf001
    uid: e4ddf77f-565e-11e7-901f-6c92bf2e6e88

    我们可以看到文件名对应的是一个key,value是文件内容

通过文件创建

  1. 创建

    [root@controller01 deployment]# kubectl create configmap test-conf002 --from-file=keyone=confmap/test1 --from-file=keytwo=confmap/test2
    configmap "test-conf002" created
  2. 查看

    [root@controller01 deployment]# kubectl get configmap test-conf002 -o yaml
    apiVersion: v1
    data:
    keyone: |
    key=123
    keytwo: |
    key=456
    kind: ConfigMap
    metadata:
    creationTimestamp: 2017-06-21T09:23:53Z
    name: test-conf002
    namespace: default
    resourceVersion: "2464278"
    selfLink: /api/v1/namespaces/default/configmaps/test-conf002
    uid: 57c5470e-5663-11e7-901f-6c92bf2e6e88

通过命令行创建

--from-literal选项采用了子面值 语法,这个语法允许字面值被直接运用到命令行。
1. 创建

[root@controller01 deployment]# kubectl create configmap test-conf003 --from-literal=aa=1 --from-literal=bb=2
configmap "test-conf003" created
You have new mail in /var/spool/mail/root

2. 查看

[root@controller01 deployment]# kubectl get configmap test-conf003 -o yaml
apiVersion: v1
data:
aa: "1"
bb: "2"
kind: ConfigMap
metadata:
creationTimestamp: 2017-06-21T09:36:26Z
name: test-conf003
namespace: default
resourceVersion: "2465633"
selfLink: /api/v1/namespaces/default/configmaps/test-conf003
uid: 1900baf0-5665-11e7-901f-6c92bf2e6e88

你可能感兴趣的:(k8s)