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. tensorflow2.0学习笔记

    今天我们开始学习tensorflow2.0,用一种简单和循循渐进的方式,带领大家亲身体验深度学习.学习的目录如下图所示: 1.简单的神经网络学习过程 1.1张量生成 1.2常用函数 1.3鸢尾花数据读 ...

  2. JMeter接口压测和性能监测

    JMeter接口压力测试总结 一.安装JMeter 1.     在客户端机器上安装JMeter压测工具,我这里安装的版本是apache-jmeter-5.2.1,由于JMeter是JAVA语言开发的 ...

  3. eclipse中testNG的两种安装方式

    今天给大家带来两种关于testNG中的安装方式:1.在线安装(本人亲测有效!!!)2.离线安装 一.在线安装testNG插件的步骤: 1.给大家提供一个testNG在线的安装的地址:http://dl ...

  4. 「JOISC 2020 Day4」首都城市

    题目   点这里看题目. 分析   做法比较容易看出来.我们对于每个城市,找出那些 " 如果这个城市在首都内,则必须在首都内的其它城市 " ,也就是为了让这个城市的小镇连通而必须选 ...

  5. 一个小小的即时显示当前时间的jqurey控件

    效果: <div class="nowTime"> <span></span>年 <span></span>月 < ...

  6. TensorFlow从0到1之回归算法(11)

    回归是数学建模.分类和预测中最古老但功能非常强大的工具之一.回归在工程.物理学.生物学.金融.社会科学等各个领域都有应用,是数据科学家常用的基本工具. 回归通常是机器学习中使用的第一个算法.通过学习因 ...

  7. 科学计算:Python 分析数据找问题,并图形化

    对于记录的数据,如何用 Python 进行分析.或图形化呢? 本文将介绍 numpy, matplotlib, pandas, scipy 几个包,进行数据分析.与图形化. 准备环境 Python 环 ...

  8. C#数据结构与算法系列(七):约瑟夫问题(Josephu)

    1.介绍 Josephu问题为:设编号为1.2....n的n个人围坐在一圈,约定编号为k(1<=k<=n) 的人从1开始报数, 数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人 ...

  9. java中HashMap原理?

    参考:https://www.cnblogs.com/yuanblog/p/4441017.html(推荐) https://blog.csdn.net/a745233700/article/deta ...

  10. rust 生命周期2

    之前定义的结构体,都是不含引用的. 如果想定义含引用的结构体,请定义生命周期注解 #[warn(unused_variables)] struct ImportantExcerpt<'a> ...