kubernetes Configmap secret的使用
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的使用的更多相关文章
- Kubernetes configMap(配置文件存储)
Kubernetes configMap(配置文件存储) 官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure ...
- k8s配置中心-configmap,Secret密码
目录 k8s配置中心-configmap,Secret 创建ConfigMap 使用ConfigMap subPath参数 Secret 官方文档 编写secret清单 使用secret 在 Pod ...
- kubernetes ConfigMap和Secret:配置应用程序
7.1.配置容器化应用程序 7.2.向容器传递命令行参数 7.2.1.待Docker中定义命令与参数 1.了解ENTRYPOINT与CMD ENTRYPOINT定义容器启动时被调用的可以执行程序 CM ...
- (十)Kubernetes ConfigMap和Secret
ConfigMap资源 介绍 ConfigMap是让配置文件从镜像中解耦,让镜像的可移植性和可复制性.许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.这些配置信息需要与docker im ...
- 09-kubernetes configMap secret
目录 配置容器化应用配置的方式 命令创建和测试configMap 创建一个Pod 挂在测试 命令行文件类创建方式 创建Pod测试 创建后测试 贴近实际进行测试 创建后测试 secret 举例测试 ge ...
- kubernetes之secret
Secret解决了密码.token.密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中.Secret可以以Volume或者环境变量的方式使用. Secret类型: Opa ...
- Kubernetes ConfigMap详解,多种方式创建、多种方式使用
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 配置是程序绕不开的话题,在Kubernetes中使用ConfigMap来配置,它本质其实就是键值对.本文讲解如何 ...
- Kubernetes的Secret对象的使用
Secret可以想要访问的加密数据,存放到Etcd中,Pod可以通过的Volume的方式,访问到Secret保存的信息 ,当数据修改的时候,Pod挂载的Secret文件也会被修改 一.创建Secret ...
- Kubernetes ConfigMap热更新
ConfigMap是用来存储配置文件的kubernetes资源对象,所有的配置内容都存储在etcd中. 总结 更新 ConfigMap 后: 使用该 ConfigMap 挂载的 Env 不会同步更新 ...
随机推荐
- 剑指offer42:数组和一个数字S,输出两个数的乘积最小的
1 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. ...
- LRU算法简介
LRU是什么? 按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常注明的计算机操作系统基础理论得来的:最近使用的页面数据会在未来一段时期内仍然被使用,已经 ...
- vue—生命周期的基本介绍
Vue生命周期: 什么是生命周期: Vue 实例从创建到销毁的过程,就是生命周期.也就是从开始创建.初始化数据.编译模板.挂载Dom→渲染.更新→渲染.卸载等一系列过程,我们称这是 Vue 的生命周期 ...
- python 之 Urllib库的基本使用
目录 python 之 Urllib库的基本使用 官方文档 什么是Urllib urlopen url参数的使用 data参数的使用 timeout参数的使用 响应 响应类型.状态码.响应头 requ ...
- 分享一些JVM常见的面试题(转)
出处: 分享一些JVM常见的面试题 前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 ...
- Wannafly挑战赛2D Delete (最短路好题)
大意: 给定DAG, 给定点$S,T$, 每次询问给出点$x$, 求删除$x$后的$S->T$的最短路, 询问之间独立. 删除点$x$的最短路一定要经过一条边$(u,v)$, 满足$u$拓扑序在 ...
- Jobs(一)前端页面
Java Web工程中的Intellij中Java Web工程的基本目录: 启动web工程后,显示的默认页面是index.html.需要注意的是,本来IDE自建的是index.jsp,我暂时改成了in ...
- docker 入门5 - 栈 【翻译】
入门,第 5 部分:堆栈 先决条件 安装 Docker 版本 1.13 或更高版本. 获取第 3 部分先决条件中所述的 Docker Compose. 获取 Docker Machine,如第 4 部 ...
- ACCESS打得开mdb,但打不开表,弹框提示未知错误。
我的电脑有个一个奇怪的错误ACCESS能打开mdb数据库,但是打不开表,一打开就提示错误,只有俩字“未知”.重装OFFICE也不行!而且电脑上使用Access数据库的应用软件都不行了!都提示“未知”错 ...
- 自定义策略-简单实践 <一>
1.建立 netcore mvc 项目. 2.startup.cs 中添加服务 services.AddAuthorization(option=> { var requirements ...