Secret介绍

Secret存在的意义

  Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中,可以以Volume或者环境变量的方式使用

Secret有三种类型

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

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

  kubernetes.io/dockerconfigjson:用来存储私有 docker registry的认证信息

Service Account

只要与Kubernetes API有交互的Pod,都会自动拥有此种类型的Secret,例如kube-system名称空间下的Pod

  1. ### 随便进入kube-system下的Pod内查看是否有此类型
  2. [root@Centos8 ~]# kubectl exec -it kube-proxy-76x2c -n kube-system -- /bin/sh
  3. # cd /run/secrets/kubernetes.io/serviceaccount
  4. # ls
  5. ca.crt namespace token
  6.  
  7. ### 可以看到,其中保存了crt、token等文件

Opaque

此种加密类型为base64,其特点就是将明文改为了密文,但是解密也非常简单,因为同一串字符串加密后的密文永远是相同的

  1. ## 加密
  2. [root@Centos8 ~]# echo -n admin | base64
  3. YWRtaW4=
  4. [root@Centos8 ~]# echo -n vfan123 | base64
  5. dmZhbjEyMw==
  6.  
  7. ## 解密
  8. [root@Centos8 ~]# echo -n dmZhbjEyMw== | base64 -d
  9. vfan123
  10. [root@Centos8 ~]# echo -n YWRtaW4= | base64 -d
  11. admin

创建一个Opaque类型的Secret

  1. vim secrets.yaml
  2. ...
  3. apiVersion: v1
  4. kind: Secret
  5. metadata:
  6. name: mysecret
  7. type: Opaque
  8. data:
  9. password: dmZhbjEyMw==
  10. username: YWRtaW4=
  11. ...
  12. kubectl create -f secrets.yaml

将此secret挂载到Pod中

  1. [root@Centos8 secret]# vim s-volume.yaml
  2. ...
  3. apiVersion: v1
  4. kind: Pod
  5. metadata:
  6. name: s-volume
  7. labels:
  8. type: opaque
  9. spec:
  10. volumes:
  11. - name: secrets
  12. secret:
  13. secretName: mysecret
  14. containers:
  15. - name: db
  16. image: hub.vfancloud.com/test/myapp:v1
  17. imagePullPolicy: IfNotPresent
  18. volumeMounts:
  19. - name: secrets
  20. mountPath: /etc/secrets
  21. readOnly: true
  22. ...
  23. [root@Centos8 secret]# kubectl create -f secrets.yaml
  24. secret/mysecret created
  25.  
  26. ## 进入container
  27. [root@Centos8 secret]# kubectl exec -it s-volume -- /bin/sh
  28. /etc/secrets # ls
  29. password username
  30. /etc/secrets # cat password
  31. vfan123
  32. /etc/secrets # cat username
  33. admin
  34.  
  35. ### secret加密后的用户名和密码,传输到container中已是明文

将此secret定义到Pod的环境变量中

  1. vim s-env.yaml
  2. ...
  3. apiVersion: v1
  4. kind: Pod
  5. metadata:
  6. name: s-env
  7. labels:
  8. type: opaque
  9. spec:
  10. containers:
  11. - name: pod-
  12. image: hub.vfancloud.com/test/myapp:v1
  13. imagePullPolicy: IfNotPresent
  14. ports:
  15. - containerPort:
  16. env:
  17. - name: DB_USER
  18. valueFrom:
  19. secretKeyRef:
  20. name: mysecret
  21. key: username
  22. - name: DB_PASSWD
  23. valueFrom:
  24. secretKeyRef:
  25. name: mysecret
  26. key: password
  27. ...
  28. kubectl create -f s-env.yaml
  29.  
  30. ## 查看环境变量
  31. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  32. HOSTNAME=s-env
  33. TERM=xterm
  34. DB_USER=admin
  35. DB_PASSWD=vfan123

kubernetes.io/dockerconfigjson

  保存docker仓库认证信息

  打开我们之前搭建的Harbor镜像仓库,设置一个私有仓库(若无搭建私有仓库可以参考本人其他随笔:https://www.cnblogs.com/v-fan/p/13034272.html)

  创建Pod,使Pod导入私有仓库的镜像文件hub.vfancloud.com/test/myapp:v2

  1. vim s-configjson.yaml
  2. ...
  3. apiVersion: v1
  4. kind: Pod
  5. metadata:
  6. name: s-configjson
  7. spec:
  8. containers:
  9. - name: configjson
  10. image: hub.vfancloud.com/test/myapp:v2
  11. ...
  12.  
  13. [root@Centos8 secret]# kubectl create -f s-configjson.yaml
  14. pod/s-configjson created
  15.  
  16. ### 镜像导入失败,是因为私有仓库中的镜像必须登录后才可导入
  17. [root@Centos8 secret]# kubectl get pod
  18. NAME READY STATUS RESTARTS AGE
  19. s-configjson / ErrImagePull 22s
  20.  
  21. ### 详细信息中的报错信息
  22. Failed to pull image "hub.vfancloud.com/test/myapp:v2": rpc error: code = Unknown desc = Error response from daemon: pull access denied for hub.vfancloud.com/test/myapp, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

设置dockerconfigjson类型secret

  1. ## 创建secret
  2. [root@Centos8 secret]# kubectl create secret docker-registry myregistrykey --docker-server=hub.vfancloud.com --docker-username=admin --docker-password=Harbor12345 --docker-email=vfan8991
  3. secret/myregistrykey created
  4.  
  5. ## 在资源清单中添加配置
  6. [root@Centos8 secret]# vim s-configjson.yaml
  7. ...
  8. apiVersion: v1
  9. kind: Pod
  10. metadata:
  11. name: s-configjson
  12. spec:
  13. containers:
  14. - name: configjson
  15. image: hub.vfancloud.com/test/myapp:v2
  16. imagePullSecrets:
  17. - name: myregistrykey
  18. ...
  19. [root@Centos8 secret]# kubectl create -f s-configjson.yaml
  20. pod/s-configjson created
  21.  
  22. ## 查看,导入成功
  23. [root@Centos8 secret]# kubectl get pod
  24. NAME READY STATUS RESTARTS AGE
  25. s-configjson / Running 5s

Kubernetes-12:Secret介绍及演示的更多相关文章

  1. STC8H开发(三): 基于FwLib_STC8的模数转换ADC介绍和演示用例说明

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  2. Kubernetes中StatefulSet介绍

    StatefulSet 是Kubernetes1.9版本中稳定的特性,本文使用的环境为 Kubernetes 1.11.如何搭建环境可以参考kubeadm安装kubernetes V1.11.1 集群 ...

  3. K8s - Kubernetes重要概念介绍(Cluster、Master、Node、Pod、Controller、Service、Namespace)

    K8s - Kubernetes重要概念介绍(Cluster.Master.Node.Pod.Controller.Service.Namespace)       Kubernetes 是目前发展最 ...

  4. Django 小实例S1 简易学生选课管理系统 0 初步介绍与演示

    Django 小实例S1 简易学生选课管理系统 第0章--初步介绍与演示 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 初步介绍 先介绍下这个 ...

  5. 一、Kubernetes系列之介绍篇

      •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什 ...

  6. kubernetes资源类别介绍

    类别 名称 资源对象 Pod.ReplicaSet.ReplicationController.Deployment.StatefulSet.DaemonSet.Job.CronJob.Horizon ...

  7. kubernetes之secret

    Secret解决了密码.token.密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中.Secret可以以Volume或者环境变量的方式使用. Secret类型: Opa ...

  8. Cocos2d-x开发实例介绍特效演示

    下面我们通过一个实例介绍几个特效的使用,这个实例下图所示,下图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜单 ...

  9. ArcSDE SDK For Java二次开发介绍、演示样例

    在一个工作中,遇到了须要java后台来查询ArcGIS 中用到的Oracle数据库空间数据,因为对ArcGIS空间数据首次接触,仅仅知道Oracle能够使用ST_GEOMETRY字段存储,例如以下图 ...

随机推荐

  1. 第一次使用Git Bash Here 将本地代码上传到码云

    当我们安装成功git工具时候,初次使用Git时,需要Git进行配置. 1.点击桌面上的这个图标,打开Git Bash:如图所示 2.配置自己的用户名和邮箱 git config --global us ...

  2. unity探索者之socket传输protobuf字节流(三)

    版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/6986474.html 上一篇讲到了数据的处理,这一篇主要讲使用多线程收发消息 // ...

  3. Kubernetes实战指南(三十三):都0202了,你还在手写k8s的yaml文件?

    目录 1. k8s的yaml文件到底有多复杂 2. 基于图形化的方式自动生成yaml 2.1 k8s图形化管理工具Ratel安装 2.2 使用Ratel创建生成yaml文件 2.2.1 基本配置 2. ...

  4. centos7 编译安装 redis-6.0.5

    安装redis sudo yum install redis centos自带的redis才3.2 太旧了所以使用源码编译 需要先安装gcc新版才能编译 centos7 默认的 gcc 版本为:4.8 ...

  5. magento2 pub/static没有adminhtml,frontend的解决方案

    (1) 运行php bin/magento setup:static-content:deploy (2) 检查pub/static有没有.htaccess文件 (3) php bin/magento ...

  6. 操作系统-I/O(1)设备控制器

    I/O设备通常是物理上相互独立的设备,它们一般通过通信总线(电缆)与I/O控制器连接. 例如,图中IDE接口是通信总线而非I/O总线. I/O控制器(I/O接口)在扩展卡或者南桥芯片内,通过I/O总线 ...

  7. 第5篇scrum冲刺(5.25)

    一.站立会议 1.照片 2.工作安排 成员 昨天已完成的工作 今天的工作安排 困难 陈芝敏   线下模块(还剩下获取词的数据库)  研究云开发,更新了登录模块,把用户的信息传入数据库了  起初在云函数 ...

  8. 多元线性回归检验t检验(P值),F检验,R方等参数的含义

    做线性回归的时候,检验回归方程和各变量对因变量的解释参数很容易搞混乱,下面对这些参数进行一下说明: 1.t检验:t检验是对单个变量系数的显著性检验   一般看p值:    如果p值小于0.05表示该自 ...

  9. .sync 修饰符

    vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定 //写一个(子)组件Child.vue <template> <div c ...

  10. TCP为什么需要握手

    一.TCP握手流程 二.为什么不是4次握手 TCP的每次请求都是成对的,原则上应该是四次 [Client to Server]第一次SYN,seq=x [Server to Client]第二次ACK ...