1. Secret简介

Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec 中。

Secret 可以以以下两种方式使用:

  • volume挂载
  • 环境变量

2. Secret类型

Secret有三种类型:

  1. Service Account

用来访问Kubernetes API,由Kubernetes 自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中

  1. Opaque

base64编码格式的Secret,用来存储密码、密钥等.

  1. kubernetes.io/dockerconfigjson

用来存储私有docker registry的认证信息

  1. 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 命令行创建

  1. 使用字面值创建
  • 通过命令行创建不用将value指定为base64,但是yaml 形式必须指定,不然创建会失败!
kubectl create secret generic my-sec --from-literal=key1=value1

如下,类型为Opaque:

  1. 使用文件或者文件夹创建

跟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的更多相关文章

  1. kubernetes系列(十四) - 存储之PersistentVolume

    1. PersistentVolume(PV)简介 1.1 为什么需要Persistent Volume(PV) 1.2 PersistentVolume(PV)和Volume的区别 1.3 PV和P ...

  2. struts2官方 中文教程 系列十二:控制标签

    介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...

  3. Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】

    2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...

  4. SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据

    原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...

  5. Alamofire源码解读系列(十二)之请求(Request)

    本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的特性,这也恰恰表明,Request是所有请求的基础部分和发起点.这无疑给我们一个Req ...

  6. 爬虫系列(十二) selenium的基本使用

    一.selenium 简介 随着网络技术的发展,目前大部分网站都采用动态加载技术,常见的有 JavaScript 动态渲染和 Ajax 动态加载 对于爬取这些网站,一般有两种思路: 分析 Ajax 请 ...

  7. Alamofire源码解读系列(十二)之时间轴(Timeline)

    本篇带来Alamofire中关于Timeline的一些思路 前言 Timeline翻译后的意思是时间轴,可以表示一个事件从开始到结束的时间节点.时间轴的概念能够应用在很多地方,比如说微博的主页就是一个 ...

  8. 打开order by的大门,一探究竟《死磕MySQL系列 十二》

    在日常开发工作中,你一定会经常遇到要根据指定字段进行排序的需求. 这时,你的SQL语句类似这样. select id,phone,code from evt_sms where phone like  ...

  9. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

随机推荐

  1. go mod 与单元测试

    目录 go mod 创建mod 默认模块名 指定模块名 引入其他模块 go 单元测试 创建源文件和测试文件 calc.go calc_test.go 运行测试用例 go mod 为解决go模块间的相互 ...

  2. opencv 移植

    1.ubunut系统搭建opencv+python开发环境 1.1.ubuntu系统安装pip3工具 sudo apt-get install python3-pip //安装python模块安装工具 ...

  3. fedora gtk+ 2.0环境安装配置

    1.安装gtk yum install gtk2 gtk2-devel gtk2-devel-docs 2.测试是否安装成功 pkg-config --cflags --libs gtk+-2.0 执 ...

  4. centos 8分区方案

    https://www.cnblogs.com/yogurtwu/p/10717001.html https://zhuanlan.zhihu.com/p/126308255 常见目录解释 Linux ...

  5. Shell总结01-shell解释器

    常见Shell解释器种类 就像不同地区有不同方言一样,不同的Linux/Unix系统使用着不同类型的shell,其中sh是UNIX上的最基本的shell,遵循POSIX接口规范 操作系统 默认shel ...

  6. [每日一题2020.06.12]P3375 【模板】KMP字符串匹配

    题目链接 关于kmp : https://www.cnblogs.com/roccoshi/p/13096988.html 关于kmp, 想了很久, 我觉得不应该放在这里写, 另开一贴记录一下. #i ...

  7. Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  8. visual studio 2005/2010/2013/2015/2017 vc++ c#代码编辑常用快捷键-代码编辑器的展开和折叠

    visual studio 2005/2010/2013/2015/2017 vc++ c#代码编辑快捷键-代码编辑器的展开和折叠 VS2015代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代 ...

  9. redis概要学习

    redis 概要学习 redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Re ...

  10. window 开机重启运行bat文件(运行java的jar包)

    1:直接打开电脑的目录:(记得勾选查看隐藏项目) C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,在里面新建start.bat ...