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

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

Opaque

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

## 加密
[root@Centos8 ~]# echo -n admin | base64
YWRtaW4=
[root@Centos8 ~]# echo -n vfan123 | base64
dmZhbjEyMw== ## 解密
[root@Centos8 ~]# echo -n dmZhbjEyMw== | base64 -d
vfan123
[root@Centos8 ~]# echo -n YWRtaW4= | base64 -d
admin

创建一个Opaque类型的Secret

vim secrets.yaml
...
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: dmZhbjEyMw==
username: YWRtaW4=
...
kubectl create -f secrets.yaml

将此secret挂载到Pod中

[root@Centos8 secret]# vim s-volume.yaml
...
apiVersion: v1
kind: Pod
metadata:
name: s-volume
labels:
type: opaque
spec:
volumes:
- name: secrets
secret:
secretName: mysecret
containers:
- name: db
image: hub.vfancloud.com/test/myapp:v1
imagePullPolicy: IfNotPresent
volumeMounts:
- name: secrets
mountPath: /etc/secrets
readOnly: true
...
[root@Centos8 secret]# kubectl create -f secrets.yaml
secret/mysecret created ## 进入container
[root@Centos8 secret]# kubectl exec -it s-volume -- /bin/sh
/etc/secrets # ls
password username
/etc/secrets # cat password
vfan123
/etc/secrets # cat username
admin ### secret加密后的用户名和密码,传输到container中已是明文

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

vim s-env.yaml
...
apiVersion: v1
kind: Pod
metadata:
name: s-env
labels:
type: opaque
spec:
containers:
- name: pod-
image: hub.vfancloud.com/test/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort:
env:
- name: DB_USER
valueFrom:
secretKeyRef:
name: mysecret
key: username
- name: DB_PASSWD
valueFrom:
secretKeyRef:
name: mysecret
key: password
...
kubectl create -f s-env.yaml ## 查看环境变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=s-env
TERM=xterm
DB_USER=admin
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

vim s-configjson.yaml
...
apiVersion: v1
kind: Pod
metadata:
name: s-configjson
spec:
containers:
- name: configjson
image: hub.vfancloud.com/test/myapp:v2
... [root@Centos8 secret]# kubectl create -f s-configjson.yaml
pod/s-configjson created ### 镜像导入失败,是因为私有仓库中的镜像必须登录后才可导入
[root@Centos8 secret]# kubectl get pod
NAME READY STATUS RESTARTS AGE
s-configjson / ErrImagePull 22s ### 详细信息中的报错信息
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

## 创建secret
[root@Centos8 secret]# kubectl create secret docker-registry myregistrykey --docker-server=hub.vfancloud.com --docker-username=admin --docker-password=Harbor12345 --docker-email=vfan8991
secret/myregistrykey created ## 在资源清单中添加配置
[root@Centos8 secret]# vim s-configjson.yaml
...
apiVersion: v1
kind: Pod
metadata:
name: s-configjson
spec:
containers:
- name: configjson
image: hub.vfancloud.com/test/myapp:v2
imagePullSecrets:
- name: myregistrykey
...
[root@Centos8 secret]# kubectl create -f s-configjson.yaml
pod/s-configjson created ## 查看,导入成功
[root@Centos8 secret]# kubectl get pod
NAME READY STATUS RESTARTS AGE
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. 小白入门Web前端开发学习一周小结

    说之前还是先说点其他的,简单介绍下自己为何选择web前端开发: 本人之前在一家国企单位从事质检工作,干了3年,工资和待遇还算不错,但由于其工作的流动性导致知识的脱轨以及精神上的空缺,最后还是打算在25 ...

  2. FCOS: Fully Convolutional One-Stage Object Detection

    论文:FCOS: Fully Convolutional One-Stage Object Detection   目录 0.简介 1.网络结构 2.框回归--直接.自由 3.Center-ness ...

  3. markdown基础使用技巧

    markdown基础使用技巧 通过``创建代码形式,不同形式可以叠加(比如:斜体+加粗) 块级元素 通过return/Enter实现切换段落/创建段落 通过shift+return/enter 实现换 ...

  4. noip复习——快速幂

    \(a ^ n \bmod p\) \(a, p, n \leq 10^9\) 最普通的二进制拆分 #define LL long long LL qpow(LL a, LL n, LL p) { L ...

  5. 【CF1174D】 Ehab and the Expected XOR Problem - 构造

    题面 Given two integers \(n\) and \(x\), construct an array that satisfies the following conditions: · ...

  6. 注意STL的小细节 2009-05-18 22:18

    STL分容器,算法,跌代器,配置器,适配器,函数对象等. 容器好学好理解.就是vector,list等,这些是常用的,还有些不常用的deque等.算法可以说是STL的精华了,它的功能强大种类繁多,可根 ...

  7. 设计模式:装饰者模式介绍及代码示例 && JDK里关于装饰者模式的应用

    0.背景 来看一个项目需求:咖啡订购项目. 咖啡种类有很多:美式.摩卡.意大利浓咖啡: 咖啡加料:牛奶.豆浆.可可. 要求是,扩展新的咖啡种类的时候,能够方便维护,不同种类的咖啡需要快速计算多少钱,客 ...

  8. Linux进程管理与性能监控

    1. 进程管理工具 这一节我们介绍进程管理工具: 使用进程管理工具,我们可以查询程序当前的运行状态,或终止一个进程: 任何进程都与文件关联:我们会用到lsof工具(list opened files) ...

  9. html+css知识点以及常见的坑

    float 与 绝对定位 共同点:都脱离文档流,不占用原来的位置,后面的内容占有位置 不同点: float后者居上,补齐,且只能在父级盒子内活动,且不能浮动在照片上. 绝对定位脱离文档流后,直接漂浮到 ...

  10. 第二篇 Scrum冲刺博客

    一.会议图片 二.项目进展 成员 完成情况 今日任务 冯荣新 搜索框,首页轮播图,分类导航 商品列表,商品详情轮播图 陈泽佳 背景展示,选择并显示图片 历史足迹,静态页面 徐伟浩 登录权限获取 商品信 ...