Kubernetes里的secret最基本的用法
Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。
Secret可以以Volume或者环境变量的方式使用。
使用如下命令行创建一个secret:
kubectl create secret generic admin-access --from-file=./username.txt --from-file=./password.txt
输入文件username.txt和password.txt需要手动创建,里面分别维护用于测试的用户名和密码。
创建成功后,发现secret的类型为Opaque:
实际上,Kubernetes的secret有三种类型:
1. Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中;
2. Opaque:base64编码格式的Secret,用来存储密码、密钥等;
3. kubernetes.io/dockerconfigjson :用来存储私有docker registry的认证信息。
而我们刚刚创建的secret的类型为Opaque,因此在kubectl get secrets的返回结果里,能看到password和username的值均为base64编码:
要在pod里消费这个secret也很容易,看一个例子:
apiVersion: v1
kind: Pod
metadata:
name: secret-pod
spec:
restartPolicy: Never
volumes:
- name: credentials
secret:
secretName: admin-access
defaultMode: 0440
containers:
- name: secret-container
image: alpine:3.8
command: [ "/bin/sh", "-c", "cat /etc/foo/username.txt /etc/foo/password.txt" ]
volumeMounts:
- name: credentials
mountPath: "/etc/foo"
readOnly: true
创建pod,自动执行,通过log命令查看pod的日志:
发现/bin/sh命令被执行了,pod mount的目录/etc/foo下的username.txt和password.txt通过cat命令显示了输出:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Kubernetes里的secret最基本的用法的更多相关文章
- 如何使用Kubernetes里的NetworkPolicy
创建一个类型为NetworkPolicy的Kubernetes对象的yaml文件. 第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,通过label来做pod的过滤. ...
- 使用Kubernetes里的job计算圆周率后2000位
使用Kubernetes里的job(作业),我们可以很方便地执行一些比较耗时的操作. 新建一个job.ymal文件: 定义了一个Kubernetes job,名称为pi,类型为job,容器名称为pi, ...
- 如何在Kubernetes里创建一个Nginx service
Jerry之前的文章如何在Kubernetes里创建一个Nginx应用,已经使用kubectl命令行创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,因此用Pod的 ...
- 通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法
Kubernetes的pod本身是无状态的(stateless),生命周期通常比较短,只要出现了异常,Kubernetes就会自动创建一个新的Pod来代替它. 而容器产生的数据,会随着Pod消亡而自动 ...
- 如何在Kubernetes里给PostgreSQL创建secret
创建一个initdb.sql文件,输入如下内容: -- This is a postgres initialization script for the postgres container. -- ...
- [置顶]
kubernetes资源类型--secret和Service Account
secret 概念 secret对象类型主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息.将这些信息放在secret对象中比 直接放在pod或dock ...
- Kubernetes里的ConfigMap的用途
顾名思义,ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件. ConfigMap同Kubernetes的另一个概念secret类似,区别是ConfigMap主要 ...
- (十)Kubernetes ConfigMap和Secret
ConfigMap资源 介绍 ConfigMap是让配置文件从镜像中解耦,让镜像的可移植性和可复制性.许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.这些配置信息需要与docker im ...
- Linux里AWK中split函数的用法
跟java里的split函数的用法是很相像的,举例如下: The awk function split(s,a,sep) splits a string s into an awk array a u ...
随机推荐
- web 导出数据到 exls 中
// 文件下载:导出excel表 @RequestMapping(value = "/exportExcel", method = {RequestMethod.GET}) @Re ...
- .net mvc 用jquery ajax成功后页面跳转。
$.ajax({ //url: 'http://192.168.0.102/webApiDemo/api/WebApiTest/PostStudentInforOnePara', //url: &qu ...
- python 十大经典排序算法
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算法有:插入排序.希尔排序.选 ...
- logrtate 切割详解
Logrotate是Linux下一款日志管理工具,可用于日志文件的转储(即删除旧日志文件,创建新日志文件).可以根据日志大小或者按照某时段间隔来转储,内部使用cron程序来执行.Logrotate还可 ...
- flask综合整理1
前言: 框架的对比 Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form.Admin.分页.中间件.信号.缓存.ContenType....): To ...
- 更改CMD默认的初始路径
一直用CMD开启本地服务,每一次都得切换路径,有点尴尬.记录一下,修改CMD默认路径 1.打开注册表编辑器(WIN+R打开运行.输入regedit,或者直接找到路径,双击打开C:\Windows\re ...
- Oracle 客户端、服务器、数据库、数据库对象(表、视图等)的关系
1.数据库服务器 所谓数据库服务器,只是在机器上安装了一个数据库管理软件,这个软件可以管理多个数据库.一般开发人员会针对每一个应用创建一个数据库 2.单实例数据库模式下的数据库服务器.数据库.数据库实 ...
- webservice 注解介绍
JAX-WS 注释 “基于 XML 的 Web Service 的 Java API”(JAX-WS)通过使用注释来指定与 Web Service 实现相关联的元数据以及简化 Web Service ...
- Juniper 防火墙端口映射设置
首先我们登陆到juniper防火墙控制界面 默认地址大家都知道(192.168.1.1) 默认用户和密码netsscreen 下面介绍登陆界面: 让我们开始配置吧 依次展开policy → Polic ...
- java冒泡排序 常规排序和优化排序
冒泡排序原理在于两两比较,看你需要把大值放最前面还是最后面, 我们看看把大值放在后面:比如数组[7, 5, 6] 开始排序第1个数字 :7 arr:[7, 5, 6] 开始排序第2个数字 :5 arr ...