存储之Secret配置管理Service Account、Opaque、dockerconfigjson

  • 1、什么是Secret?
  • 2、Service Account
  • 3、Opaque
    • (1)从文件中创建Secret
    • (2)使用yaml文件创建secret
    • (3)将Secret挂载到Volume中
    • (4)向指定路径映射 secret 密钥
    • (5)将Secret设置为环境变量
  • 3、kubernetes.io/dockerconfigjson

1、什么是Secret?

Secret是存储中的一种,主要用于保存敏感信息,例如密码、OAuth 令牌和 ssh key。 敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活。

Pod 主要有两种方式使用 secret:
(1)作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里。
(2)当 kubelet 为 pod 拉取镜像时使用。

Secret的类型:
(1)Service Account:Kubernetes 自动创建包含访问 API 凭据的 secret,并自动修改 pod 以使用此类型的 secret。
(2)Opaque:使用base64编码存储信息,可以通过base64 --decode解码获得原始数据,因此安全性弱。
(3)kubernetes.io/dockerconfigjson:用于存储docker registry的认证信息

2、Service Account

serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。对应的 secret 会自动挂载到 Pod 的/run/secrets/kubernetes.io/serviceaccount 目录中。

 kubectl  run demo --image=myapp:v1

进入emo查看

每个namespace下有一个名为default的默认的ServiceAccount对象

ServiceAccount里有一个名为Tokens的可以作为Volume一样被Mount到Pod里的Secret,当Pod启动时这个Secret会被自动Mount到Pod的指定目录下,用来协助完成Pod中的进程访问API Server时的身份鉴权过程。

3、Opaque

(1)从文件中创建Secret

echo -n 'admin' > ./username.txt        %创建用户
echo -n 'westos' > ./password.txt      %创建密码
kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt  %用文件创建db-user-pass这个新secret%如果密码具有特殊字符,则需要使用 \ 字符对其进行转义
kubectl get secrets                     %查看secrets


详细查看,查看到的用户和密码不是原本的明文,是经过base64编码后的结果,使用-d参数就可以解码。

(2)使用yaml文件创建secret

base64编码

echo -n 'admin' | base64
YWRtaW4=
echo -n 'westos' | base64
d2VzdG9z

编辑secret.yaml文件

apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=password: d2VzdG9z

创建mysecret,查看

(3)将Secret挂载到Volume中

修改secret.yaml文件

apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=password: d2VzdG9z
---
apiVersion: v1
kind: Pod
metadata:name: mysecret
spec:containers:- name: nginximage: nginxvolumeMounts:      %把secret挂载到mysecret这个pod中的/secret- name: secretsmountPath: "/secret"readOnly: true        %只读volumes:- name: secretssecret:secretName: mysecret


创建pod,查看pod。进入mysecret,可以看到username和password

(4)向指定路径映射 secret 密钥

由于实验环境很乱,所以先删除不用的pod

修改secret.yaml文件

apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=password: d2VzdG9z
---
apiVersion: v1
kind: Pod
metadata:name: mysecret
spec:containers:- name: nginximage: nginxvolumeMounts:- name: secretsmountPath: "/secret"readOnly: truevolumes:- name: secretssecret:secretName: mysecretitems:- key: usernamepath: my-group/my-username      %指定路径为/secret/my-group/my-username


创建pod,查看pod。进入mysecret,在/secret/my-group/my-username可以看到username

(5)将Secret设置为环境变量

修改secret.yaml文件

apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=password: d2VzdG9z
---
apiVersion: v1
kind: Pod
metadata:name: secret-env
spec:containers:- name: nginximage: nginxenv:                   %设置环境变量- name: SECRET_USERNAMEvalueFrom:            %把mysecret中的username这个key值取出来,并改名为SECRET_USERNAMEsecretKeyRef:name: mysecretkey: username- name: SECRET_PASSWORDvalueFrom:           %把mysecret中的password这个key值取出来,并改名为SECRET_PASSWORDsecretKeyRef:name: mysecretkey: password


创建secret-env,查看

进入secret-env,查看环境变量


环境变量读取Secret很方便,但无法支撑Secret动态更新
进入mysecret编辑,

修改密码为redhat

再次进入secret-env,查看环境变量,还是westos,没有改变

3、kubernetes.io/dockerconfigjson

kubernetes.io/dockerconfigjson用于存储docker registry的认证信息.
新建一个私有仓库westos,如果没有给定仓库密码的话,是会拉取失败的

创建myregistrykey,指定仓库名字,给定仓库的用户名和密码。查看

编辑registry.yaml文件

创建mypod,查看,启动失败

修改registry.yaml文件

apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: game2048image: hyl.westos.org/westos/game2048imagePullSecrets:              %给定仓库认证信息- name: myregistrykey


删除之前的mypod,重新创建,查看running

运维实操——kubernetes(九)存储之Secret配置管理Service Account、Opaque、dockerconfigjson相关推荐

  1. kubernetes-9 存储之Secret配置管理Service Account、Opaque、dockerconfigjson

    1.什么是Secret? Secret 对象类型用来保存敏感信息,例如密码.OAuth 令牌和 ssh key. 敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活. ...

  2. 运维实操——kubernetes(十九)k8s中部署Prometheus、监控nginx、HPA自动伸缩

    k8s中部署Prometheus.监控nginx.HPA自动伸缩 1.什么是Prometheus? 2.k8s中部署Prometheus监控 3.prometheus监控nginx 4.基于prome ...

  3. 运维实操——kubernetes(十一)调度nodeName、nodeSelector、亲和性、污点、容忍、删除节点

    调度nodeName.nodeSelector.亲和性.污点.容忍.删除节点 1.什么是调度? 2.nodeName 3.nodeSelector (1)节点亲和性 (2)pod亲和与反亲和 4.Ta ...

  4. 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年3月刊

    本文为大家整理了墨天轮数据社区2023年3月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的基础安装配置操作.故障处理.性能优化等日常实践操作,以及概念梳理.常用脚 ...

  5. 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年5月刊

    本文为大家整理了墨天轮数据社区2023年5月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的安装配置.故障处理.性能优化等日常实践操作,以及常用脚本.注意事项等总结 ...

  6. 运维实操——日志分析系统ELK(中)之logstash采集数据、伪装rsyslog、多行过滤、grok切片

    日志分析系统ELK(中)之logstash 1.什么是logstash? 2.Logstash安装 3.logstash简单命令行测试 4.logstash文件测试 (1)命令行输入,输出到文件 (2 ...

  7. 运维实操——zabbix监控结合睿象云报警平台及API调用

    zabbix监控结合睿象云报警平台及API调用 1.zabbix监控结合睿象云报警平台 2.API调用 1.zabbix监控结合睿象云报警平台 由于我们不能时时刻刻盯着zabbix监控,所以呢,我们想 ...

  8. 运维实操——zabbix监控结合tidb分布式数据库

    zabbix监控结合tidb分布式数据库 前言 1.tidb介绍 2.Tidb+Zabbix的简单部署 前言 本文的前提是,zabbix已经和mysql数据库配置好,现在想把mysql替换为分布式数据 ...

  9. 安全运维-如何在Kubernetes中使用注释对ingress-nginx及后端应用进行安全加固配置实践...

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x08 Kubernetes中ingress-nginx安全配置 1.配置指定的 ...

最新文章

  1. Mnist数据集简介
  2. threejs 三面体_如何在Three.js中构造空心圆柱体
  3. 远程桌面无法找到计算机不属于指定网络,远程桌面找不到计算机
  4. Flex 3 metadata tags 标签
  5. 酒店管理系统-数据库设计说明书
  6. Red Hat 5.6-64位使用yum升级PHP
  7. 【eoeAndroid社区索引】Android控件知识汇总
  8. java debug命令详解_DEBUG命令使用解析及范例大全
  9. global mapper加载高德在线地图
  10. allegro里面由于shape out of date
  11. ios9提取安装包ipa_iOS获取ipa包以及图片资源
  12. wordpress的excerpt()函数
  13. 金蝶设置盘盈盘亏单据权限
  14. 图集 | 航拍玉林29所学校,里面有你的母校吗?
  15. vim的安装以及基础使用方法;
  16. 自动生成课堂分析报告写后感想
  17. [安全] AD域解释 , 域和组的区别?
  18. KH7 根据身份证号码判断性别
  19. 安卓7.0及以上用户证书导入的问题
  20. 怎么能看出来一个人善不善良?

热门文章

  1. 计算机思维与逻辑思维的区别,逻辑(思维的规律和规则)_百度百科
  2. 2021-06-21 IQA
  3. 基于JAVA动物防疫信息管理计算机毕业设计源码+系统+lw文档+部署
  4. 人生最大的敌人永远是自己!!
  5. Sonar Qube QA
  6. during怎么念_during什么意思(during这个单词怎么读)
  7. DIAView 与 SAP/ERP 进行数据交互
  8. 51单片机mp3音乐播放器设计
  9. SAP物料自动记账科目设置总结
  10. 东方神灵庙及东方辉针城E难度混关