k8s入门之Secret(十)
Secret与ConfigMap都是用来存储配置信息的,不同之处在于ConfigMap是明文存储的,而Secret用来保存敏感信息,如:密码、OAuth令牌,ssh key等等。Secret常用有三种类型:
Opaque:使用base64编码格式存储密码等信息,加密性很弱。
kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息(仓库地址、登录用户名密码)。
kubernetes.io/service-account-token:用来创建服务账号(Service Account),是一种自动被启用的用户认证机制,用来验证请求的合法性。
一、创建Opaque类型的Secret对象
1.使用命令创建Opaque类型的Secret对象
kubectl create secret generic mysecret1 --from-literal=username=root --from-literal=password=123456
(1)参数说明:
generic 子命令表示创建的是Opaque类型的Secret
--from-literal:表示从对字面量值进行编码,后面跟kv键值对,对v进行编码;
你也可以使用--from-file参数指定对文件内容进行编码,此处读者可以自行练习。
(2)查看创建结果:
kubectl get secret

(3)使用describe命令查看详情
kubectl describe secret mysecret1

可以看到被编码的数据没有显示出来,只能看到数据大小,可以使用以下方法查看被编码数据的明文
(4)输出yaml文件格式查看详情
kubectl get secret mysecret1 -o yaml

然后使用linux命令查看被编码数据的明文
echo -n "MTIzNDU2" | base64 -d

注意截图中被解码后的明文是不含换行符的
2.使用yaml文件创建Opaque类型的Secret对象
(1)获取要保存数据的编码
假如要保存username=admin,password=654321的数据,先用linux命令获取对应的base64编码数据。
echo -n "admin" | base64
echo -n "654321" | base64

(2)新建yaml文件
vi secret-my2.yaml
(3)编写yaml文件内容
apiVersion: v1
kind: Secret
metadata:
name: mysecret2
type: Opaque
data:
username: YWRtaW4=
password: NjU0MzIx
(4)执行创建命令
kubectl create -f secret-my2.yaml
(5)查看创建结果
可以使用上面的方法查看,这里不再赘述

二、使用Opaque类型的secret对象
1.通过环境变量的方式
liunx自带的命令env,可以用来查看当前系统的环境变量,我们可以把secret对象设置到环境变量上来进行测试

(1)新建yaml文件
vi mysecret1-env.yaml
(2)编写使用secret对象的pod的yaml文件内容
apiVersion: v1
kind: Pod
metadata:
name: pod-test-mysecret1
spec:
containers:
- name: pod-test-mysecret1-bb
image: busybox
command: ["/bin/sh", "-c", "env"]
# 从secret对象中获取对应key的值赋值给环境变量
env:
- name: USERNAME
valueFrom:
secretKeyRef:
name: mysecret1
key: username
- name: PASSWORD
valueFrom:
secretKeyRef:
name: mysecret1
key: password
(3)执行yaml文件创建pod
kubectl create -f mysecret1-env.yaml
(4)查看pod,在默认名称空间下

通过查看此pod的日志,可以看到输出的环境变量信息是mysecret1对象的信息

2.通过vloume挂载方式
(1)新建yaml文件
vi mysecret2-volume.yaml
(2)编写使用secret对象的pod的yaml文件内容
apiVersion: v1
kind: Pod
metadata:
name: pod-test-mysecret2
spec:
containers:
- name: pod-test-mysecret2-bb
image: busybox
command: ["/bin/sh", "-c", "cat /etc/secrets/my-username;cat /etc/secrets/my-password;"]
volumeMounts:
- name: secrets
mountPath: /etc/secrets
volumes:
- name: secrets
secret:
secretName: mysecret2
items:
# 把secret对象挂载到文件名
- key: username
path: my-username
- key: password
path: my-password
(3)执行yaml文件创建pod
kubectl create -f mysecret2-volume.yaml
(4)查看pod,在默认名称空间下

通过查看此pod的日志,可以看到输出的信息是mysecret2对象中的数据

三、创建kubernetes.io/dockerconfigjson类型的Secret对象
- 通过命令创建
kubectl create secret docker-registry aliyun --docker-server=https://registry.aliyun.com --docker-username=root --docker-password=123456 --docker-email=test@qq.com
2.查看创建结果

3.查看详细信息

4.解码密文信息

5.使用此类型的secret对象
指定 imagePullSecrets 属性的name字段值为你创建的secret对象
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
containers:
- name: myapp
image: xxx-api:v1.0
imagePullSecrets:
- name: aliyun
k8s入门之Secret(十)的更多相关文章
- K8s 入门
中文文档:https://www.kubernetes.org.cn/kubernetes%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84 小结大白话 Portainer 挺好 ...
- k8s入门你至少需要会哪些
body { margin: 0; overflow: auto; font: normal 14px Verdana; background: rgba(255, 255, 255, 1); pad ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- k8s入门系列之guestbook快速部署
k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...
- k8s入门系列之扩展组件(一)DNS安装篇
DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...
- k8s入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- Bootstrap入门(三十)JS插件7:警告框
Bootstrap入门(三十)JS插件7:警告框 通过这个插件可以为警告信息添加点击以及消失的功能. 当使用一个.close按钮,它必须是第一个子元素.alert-dismissible,并没有文字内 ...
- Bootstrap入门(二十九)JS插件6:弹出框
Bootstrap入门(二十九)JS插件6:弹出框 加入小覆盖的内容,像在iPad上,用于存放非主要信息 弹出框是依赖于工具提示插件的,那它也和工具提示是一样的,是需要初始化才能够使用的 首先我们引入 ...
- Bootstrap入门(二十八)JS插件5:工具提醒
Bootstrap入门(二十八)JS插件5:工具提醒 工具提示在使用过程中比较常见,但是实现起来有些麻烦,而bootstrap则很好地解决了这个问题. 我们来写一个简单的实例 先引入CSS文件和JS文 ...
随机推荐
- kafka中的回调函数
kafka客户端中使用了很多的回调方式处理请求.基本思路是将回调函数暂存到ClientRequest中,而ClientRequest会暂存到inFlightRequests中,当返回response的 ...
- IIS MVC 发布错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容
转:http://blog.csdn.net/csethcrm/article/details/37820135 IIS MVC 发布错误 403.14-Forbidden Web 服务器被配置为不 ...
- 学习GlusterFS(一)
一.概述 1.GlusterFS是集群式NAS存储系统,分布式文件系统(POSIX兼容),Tcp/Ip方式互联的一个并行的网络文件系统,通过原生 GlusterFS 协议访问数据,也可以通过 NFS/ ...
- Netty + Spring + ZooKeeper搭建轻量级RPC框架
本文参考 本篇文章主要参考自OSCHINA上的一篇"轻量级分布式 RPC 框架",因为原文对代码的注释和讲解较少,所以我打算对这篇文章的部分关键代码做出一些详细的解释 在本篇文章中 ...
- CommonsCollection3
CommonsCollection3 1.前置知识 CommonsCollection3其实就是cc1和cc2的组合,不用再学那么多知识了,再学习另两个生面孔类 1.1.InstantiateTran ...
- 《Advanced Bash-Scripting Guide》 in Chinese 高级Bash脚本编程指南》Revision 10中文版
<Advanced Bash-Scripting Guide> in Chinese <高级Bash脚本编程指南>Revision 10中文版 在线阅读链接:http://ww ...
- 基于react的audio组件
样式请自己定义哦~需要其他功能请自行添加! // 组件调用 <Audio src={src地址} id={srcID}/> audio属性 src 歌曲的路径 preload 是否在页面加 ...
- 用 JWT 实现小程序本地用户标识
panda-chat-room 继上节「理解小程序 session」 ,本节我们以 jsonwebtoken 来实现小程序端的用户状态标识.如果你对小程序用户登录流程及 session 管理还有些疑惑 ...
- react 移动端 兼容性问题和一些小细节
react 移动端 兼容性问题和一些小细节 使用 ES6 的浏览器兼容性问题 react 对低版本的安卓webview 兼容性 iOS下 fixed与软键盘的问题 onClick 阻止冒泡 meta对 ...
- c++实现中介者模式--虚拟聊天室
内容: 在"虚拟聊天室"实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下: 1. 新的具体聊天室中发送的图片大小不得超过20M. 2. 新的具体聊天室中发送的文字长度不 ...