kubernetes configmap 核心作用是让配置信息和镜像解耦,pod可以使用configmap的数据生成配置文件。如果后端的pod配置文件要改变时,只需要更改下configmap里面的数据,让后会动态的改变pod容器里面的配置信息。

configmap的数据是以键值的形式

configMap 的使用

第一步:创建configmap

kubectl create configmap nginx-conf --from-literal=NGINX_PORT=8080 --from-literal=SERVER_NAME=dingbin

这里创建了2个数据,一个是NGINX_PORT=8080,一个是SERVER_NAME=dingbin

显示创建的configmap

pod如何引用configmap的数据,第一种是通过环境变量的方式来引用。看下面的yaml文件

apiVersion: v1
kind: Pod
metadata:
name: pod-cm
namespace: default
labels:
app: myapp
tier: frontend
spec:
containers:
- name: myapp-cm
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort:
env: #这里开始是引用configmap
- name: Nginx_PORT
valueFrom:
configMapKeyRef:
name: nginx-conf #这个是刚刚创建的configmap的名字
key: NGINX_PORT #这是configmap里面数据的键
- name: NGINX_SERVERNAME
valueFrom:
configMapKeyRef:
name: nginx-conf
key: SERVER_NAME

创建上面的pod,

这种就是pod通过env来引用configmap里面的数据

第二种方法是pod把configmap当作存储卷来挂载的方式

新建一个nginx的虚拟主机的配置文件  vim nginx-server.conf

重新创建一个configmap  ,这次是直接把这个文件当作键的值

kubectl create configmap nginx-server --from-file=./nginx-server.conf

pod 通过挂载的方式来引用configmap,yaml文件

apiVersion: v1
kind: Pod
metadata:
name: pod-cm2
namespace: default
labels:
app: myapp
tier: frontend
spec:
containers:
- name: myapp-cm
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort:
volumeMounts: #这里挂载
- name: html 挂载的卷名
mountPath: /etc/nginx/conf.d/ #挂载在容器的路径
readOnly: true
volumes: #定义卷
- name: html #卷的名字
configMap: 类型是configMap
name: nginx-server 这里是刚创建configmap的名字

创建pod

在容器中创建 /data/web/html   ,新建一个index.html

随便找一个节点,添加一个hosts解析

如果配置发生变化,只需要更改configmap里的数据,会自动更新pod容易里面的配置文件,如下

上图是容器里面的配置文件。

注意,容器的配置文件是更改了,但是还是需要重新reload下nginx,否则nginx监听的端口是没有改变的

kubernetes  secret 和configmap很像,不同的是secret是数据是私密的数据,会加密成base64的格式,比如一般密码,私钥等要用secret

secret由三种类型,第一种是docker-registry 是专门给docker使用的,第二种是generic是通用型,比如你要存储密码可以使用,第三种是证书的私钥使用的

创建个generic的测试下效果:

创建好了,至于引用的方式和configmap一样,可以是env的方式,也可以是挂载的方式,

apiVersion: v1
kind: Pod
metadata:
name: pod-secret
namespace: default
labels:
app: myapp
tier: frontend
spec:
containers:
- name: myapp-secret1
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort:
env:
- name: MYSQL_PASSWOED
valueFrom:
secretKeyRef:
name: mysql-password #secret的名字
key: password #secret数据的键

以上是configmap和secret的使用,不足之处希望大家可以指出!

kubernetes Configmap secret的使用的更多相关文章

  1. Kubernetes configMap(配置文件存储)

    Kubernetes configMap(配置文件存储) 官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure ...

  2. k8s配置中心-configmap,Secret密码

    目录 k8s配置中心-configmap,Secret 创建ConfigMap 使用ConfigMap subPath参数 Secret 官方文档 编写secret清单 使用secret 在 Pod ...

  3. kubernetes ConfigMap和Secret:配置应用程序

    7.1.配置容器化应用程序 7.2.向容器传递命令行参数 7.2.1.待Docker中定义命令与参数 1.了解ENTRYPOINT与CMD ENTRYPOINT定义容器启动时被调用的可以执行程序 CM ...

  4. (十)Kubernetes ConfigMap和Secret

    ConfigMap资源 介绍 ConfigMap是让配置文件从镜像中解耦,让镜像的可移植性和可复制性.许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.这些配置信息需要与docker im ...

  5. 09-kubernetes configMap secret

    目录 配置容器化应用配置的方式 命令创建和测试configMap 创建一个Pod 挂在测试 命令行文件类创建方式 创建Pod测试 创建后测试 贴近实际进行测试 创建后测试 secret 举例测试 ge ...

  6. kubernetes之secret

    Secret解决了密码.token.密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中.Secret可以以Volume或者环境变量的方式使用. Secret类型: Opa ...

  7. Kubernetes ConfigMap详解,多种方式创建、多种方式使用

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 配置是程序绕不开的话题,在Kubernetes中使用ConfigMap来配置,它本质其实就是键值对.本文讲解如何 ...

  8. Kubernetes的Secret对象的使用

    Secret可以想要访问的加密数据,存放到Etcd中,Pod可以通过的Volume的方式,访问到Secret保存的信息 ,当数据修改的时候,Pod挂载的Secret文件也会被修改 一.创建Secret ...

  9. Kubernetes ConfigMap热更新

    ConfigMap是用来存储配置文件的kubernetes资源对象,所有的配置内容都存储在etcd中. 总结 更新 ConfigMap 后: 使用该 ConfigMap 挂载的 Env 不会同步更新 ...

随机推荐

  1. 回炉重铸系列之javaEE基础

    这篇文章主要介绍 servlet filter listener interceptor 之 知识点.博文主要从 概念,生命周期,使命介绍其区别.详情如下:   概念 生命周期 使命 servlet ...

  2. QT 打包exe

    QT打包主要方法: 1.把无措的代码进行Release编译 2.在运行完后,找到运行后生成的目录,以下是我的文件,名为result,运行类型有两种,一种是Debug,另一种是Release,我们需要的 ...

  3. 牛客 201 J Princess Principal (括号, 栈模拟)

    大意: 给定序列$a$, $a_i$为偶数代表第$\frac{a_i}{2}$种左括号, 否则为第$\frac{a_i-1}{2}$种右括号. 询问区间是否是合法括号序列. #include < ...

  4. [转载]Grid Search

    [转载]Grid Search 初学机器学习,之前的模型都是手动调参的,效果一般.同学和我说他用了一个叫grid search的方法.可以实现自动调参,顿时感觉非常高级.吃饭的时候想调参的话最差不过也 ...

  5. css———详解height与line_height

    定义 height指的是块级别元素的高度: line-height指的是元素内容的高度. height和line-height的联系 CSS中起高度作用的应该就是height以及line-height ...

  6. Nginx如何配置禁止访问某个目录

    location ~* \.(txt|doc)${ root /data/www/wwwroot/test; deny all; }

  7. Java BIO、NIO、AIO 基础,应用场景

    Java对BIO.NIO.AIO的支持: Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必 ...

  8. mysql tinyint(1) 在java中被转化为boolean

    数据库表字段类型为:tinyint 长度为1 在java中对应的类型是boolean 查询时直接在页面展示成true或false 如果是2,3,4 这样的也是默认成true,非常不友好. 解决方案: ...

  9. Mysql(三):表操作

    一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/6324TV/p/8481061.html 二 表介绍 表相当于文 ...

  10. vi和vim的使用

    本章内容: vi编辑器简介 vim基本使用 vim使用技巧 一.vim简介 vim是一个全屏幕纯文本编辑器,是vi编辑器的增强版. 二.vim的基本使用 1.vim的工作模式 命令模式:是主要使用快键 ...