kubernetes系列(十二) - 存储之Secret
1. Secret简介
Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec 中。
Secret 可以以以下两种方式使用:
volume挂载- 环境变量
2. Secret类型
Secret有三种类型:
Service Account
用来访问Kubernetes API,由Kubernetes 自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中
Opaque
base64编码格式的Secret,用来存储密码、密钥等.
kubernetes.io/dockerconfigjson
用来存储私有
docker registry的认证信息
kubernetes.io/tls
用来存储
tsl证书。一般是用来配合ingress实现https证书的配置,具体见ingress那章
3. Service Account
- 用来访问
Kubernetes API Service,由Kubernetes 自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中 - 即不是所有的pod都有权访问
api service,不然会给api service造成很大的压力。 service account不需要我们自己管理!
示例
如下,因为kube-proxy肯定会跟api-servie交互,所以查看他的service account

4. Opaque
4.1 Opaque类型说明
Opaque类型的数据是一个 map类型,要求value是base64编码格式
示例
- 如下是base64编码和解码的:

4.2 Opaque创建方式
4.2.1 命令行创建
- 使用字面值创建
- 通过命令行创建不用将value指定为
base64,但是yaml形式必须指定,不然创建会失败!
kubectl create secret generic my-sec --from-literal=key1=value1
如下,类型为Opaque:

- 使用文件或者文件夹创建
跟configmap一样,都是使用
--from-file
kubectl create secret generic my-sec --from-file=/一个文件夹或者一个文件
4.2.2 yaml资源清单创建
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: MWYyZDF1MmU2N2Rm
username: YWRtaW4=
4.3 Opaque使用方式
4.3.1 将Secret挂载到Volume
- 使用方式跟
configMap差不多
apiVersion: v1
kind: Pod
metadata:
labels:
name: seret-test
name: seret-test
spec:
# volume中导入secret
volumes:
- name: secrets
secret:
secretName: mysecret
containers:
- image: hub.coreqi.cn/library/myapp:v1
name: db
# mounts中使用volume中的secret
volumeMounts:
- name: secrets
mountPath: "/etc/secrets"
readOnly: true
4.3.2 将Secret导出到环境变量中
- 使用方式跟
configMap差不多
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: pod-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: pod-deployment
spec:
containers:
- name: pod-1
image: lzw5399/tocgenerator
ports:
- containerPort: 80
# 将secret的值赋给环境变量
env:
- name: TEST_USER
valueFrom:
secretKeyRef:
name: mysecret
key: username
- name: TEST_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: password
5. Dockerconfigjson
用来存储私有docker registry的认证信息
5.1 创建docker-registry类型的secret
kubectl create secret docker-registry myregistrykey --docker-server=hub.codepie.fun --docker-username=baoshu --docker-password=yourpwd --docker-email=baoshu@test.com
如下可以看到,创建出来的类型是kubernetes.io/dockerconfigjson

5.2 yaml中使用dockerconfigjson
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: foo
image: roc/coreqi:v1
# 引用创建出来的dockerconfigjson
imagePullSecrets:
- name: myregistrykey
6. Tsl
用来存储tsl证书。一般是用来配合ingress实现https证书的配置,可以参见ingress那篇
6.1 创建tsl
6.1.1 直接指定文件创建
kubectl create secret tls toc-secret --key tls.key --cert tls.crt

6.1.2 以yaml资源清单方式创建
apiVersion: v1
kind: Secret
metadata:
name: mywebsite-secret
data:
tls.crt: **************************
tls.key: **************************
6.2. 使用tsl secret
- 这里演示的是配置
ingress,实现https域名访问
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: tocgenerator-ingress
spec:
tls:
- hosts:
- toc.codepie.fun
# 使用tsl
secretName: toc-secret
rules:
- host: toc.codepie.fun
http:
paths:
- path: /
backend:
serviceName: tocgenerator-svc
servicePort: 80
kubernetes系列(十二) - 存储之Secret的更多相关文章
- kubernetes系列(十四) - 存储之PersistentVolume
1. PersistentVolume(PV)简介 1.1 为什么需要Persistent Volume(PV) 1.2 PersistentVolume(PV)和Volume的区别 1.3 PV和P ...
- struts2官方 中文教程 系列十二:控制标签
介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...
- Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】
2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...
- SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据
原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...
- Alamofire源码解读系列(十二)之请求(Request)
本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点.这无疑给我们一个Req ...
- 爬虫系列(十二) selenium的基本使用
一.selenium 简介 随着网络技术的发展,目前大部分网站都采用动态加载技术,常见的有 JavaScript 动态渲染和 Ajax 动态加载 对于爬取这些网站,一般有两种思路: 分析 Ajax 请 ...
- Alamofire源码解读系列(十二)之时间轴(Timeline)
本篇带来Alamofire中关于Timeline的一些思路 前言 Timeline翻译后的意思是时间轴,可以表示一个事件从开始到结束的时间节点.时间轴的概念能够应用在很多地方,比如说微博的主页就是一个 ...
- 打开order by的大门,一探究竟《死磕MySQL系列 十二》
在日常开发工作中,你一定会经常遇到要根据指定字段进行排序的需求. 这时,你的SQL语句类似这样. select id,phone,code from evt_sms where phone like ...
- 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
随机推荐
- go mod 与单元测试
目录 go mod 创建mod 默认模块名 指定模块名 引入其他模块 go 单元测试 创建源文件和测试文件 calc.go calc_test.go 运行测试用例 go mod 为解决go模块间的相互 ...
- opencv 移植
1.ubunut系统搭建opencv+python开发环境 1.1.ubuntu系统安装pip3工具 sudo apt-get install python3-pip //安装python模块安装工具 ...
- fedora gtk+ 2.0环境安装配置
1.安装gtk yum install gtk2 gtk2-devel gtk2-devel-docs 2.测试是否安装成功 pkg-config --cflags --libs gtk+-2.0 执 ...
- centos 8分区方案
https://www.cnblogs.com/yogurtwu/p/10717001.html https://zhuanlan.zhihu.com/p/126308255 常见目录解释 Linux ...
- Shell总结01-shell解释器
常见Shell解释器种类 就像不同地区有不同方言一样,不同的Linux/Unix系统使用着不同类型的shell,其中sh是UNIX上的最基本的shell,遵循POSIX接口规范 操作系统 默认shel ...
- [每日一题2020.06.12]P3375 【模板】KMP字符串匹配
题目链接 关于kmp : https://www.cnblogs.com/roccoshi/p/13096988.html 关于kmp, 想了很久, 我觉得不应该放在这里写, 另开一贴记录一下. #i ...
- Spark如何与深度学习框架协作,处理非结构化数据
随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...
- visual studio 2005/2010/2013/2015/2017 vc++ c#代码编辑常用快捷键-代码编辑器的展开和折叠
visual studio 2005/2010/2013/2015/2017 vc++ c#代码编辑快捷键-代码编辑器的展开和折叠 VS2015代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代 ...
- redis概要学习
redis 概要学习 redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Re ...
- window 开机重启运行bat文件(运行java的jar包)
1:直接打开电脑的目录:(记得勾选查看隐藏项目) C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,在里面新建start.bat ...