07-k8s中secret资源02-玩转secret

一、回顾secret资源的简单实用

第一步:将想要的数据信息【key:value】中的value值,使用base64编码后,写入secret资源清单中;

第二步:创建secret资源;

第三步:pod资源引用secret资源;

二、实战secret资源

1,第一步:将数据base64编码

[root@k8s231 ~]# echo xinjizhiwa | base64
eGluaml6aGl3YQo=

2,编辑secret资源清单

[root@k8s231 secrets]# vim secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: secret-01

#用户自定义的任意数据类型;(还有别的类型。。。)
type: Opaque
data:
  k8s: eGluaml6aGl3YQo=

3,创建secret资源

[root@k8s231 secrets]# kubectl apply -f secret.yaml

4,pod引用secret资源

· 编辑资源清单

[root@k8s231 secrets]# cat pod.yaml 
#pod资源env环境变量方式引用secret
apiVersion: v1
kind: Pod
metadata:
  name: pod-secret-01
spec:
  containers:
  - name: c1
    image: nginx:1.20.1-alpine
    env:
    - name: k8s
      valueFrom:
        #声明引用secret资源
        secretKeyRef: 
          name: secret-01
          #声明使用secret资源中的那一个key
          key: k8s

---

#vomlume方式引用
apiVersion: v1
kind: Pod
metadata:
  name: pod-secret-02
spec: 
  #声明存储卷
  volumes:
  - name: vol-secret
    #声明存储卷的类型是secret
    secret:
      #指定secret资源的名称(使用哪个secret资源?)
      secretName: secret-01
  containers:
  - name: c2
    image: nginx:1.24.0-alpine
    volumeMounts:
    - name: vol-secret
      #挂载到容器的哪个位置路径?
      mountPath: /secret/

· 创建pod资源

[root@k8s231 secrets]# kubectl apply -f pod.yaml

5,进入容器查看是否引用成功

· env应用的pod容器

[root@k8s231 secrets]# kubectl exec pod-secret-01 -it -- sh 
/ # env
k8s=xinjizhiwa

· volumes引用的pod容器

[root@k8s231 secrets]# kubectl exec pod-secret-02 -it -- sh 
/ # cat /secret/k8s 
xinjizhiwa

三、pod资源清单指定key引用secret

1,编辑pod资源清单

[root@k8s231 secrets]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-secret-02
spec: 
  #声明存储卷
  volumes:
  - name: vol-secret
    #声明存储卷的类型是secret
    secret:
      #1,指定secret资源的名称(使用哪个secret资源?)
      secretName: secret-01
      #2,指定secret资源中要引用的key
      items: 
      - key: k8s
        path: xjzw.log
  containers:
  - name: c2
    image: nginx:1.24.0-alpine
    volumeMounts:
    - name: vol-secret
      #挂载到容器的哪个位置路径?
      mountPath: /secret/xjzw.log
      #只挂在文件,不清空容器原有文件夹
      subPath: xjzw.log

2,创建pod

[root@k8s231 secrets]# kubectl apply -f pod.yaml

3,进入pod查看

[root@k8s231 secrets]# kubectl exec pod-secret-02 -it -- sh 
/ # ls /secret/
xjzw.log
/ # cat /secret/xjzw.log 
xinjizhiwa

四、secret类型之-私有镜像仓库使用

        创建Docker harbor的secret信息:

        因为,k8s拉取镜像与Docker拉取镜像是不同的方式,所以k8s需要创建一个属于自己的来气镜像的方式;

1>docker-registry:创建一个给Docker registry容器镜像仓库使用的secret
2>generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)

                     也就是资源清单中的type:Opaque是一个意思;
3>tls: 创建一个TLS secret

1,harbor创建私有仓库

harbor创建私有仓库

2,推送镜像到私有仓库

[root@k8s233 ~]# docker push harbor.xinjizhiwa.com/xinjizhiwa01/nginx:1.20.1-alpine

3,创建拉取镜像的secret资源

· 响应式创建secret资源

docker 拉取镜像的secret账号密码资源

[root@k8s231 secrets]# kubectl create secret docker-registry xinjizhiwa-harbor --docker-username=admin --docker-password=1 --docker-email=123@qq.com --docker-server=harbor.xinjizhiwa.com

4,创建pod引用拉取镜像的secret资源

[root@k8s231 secrets]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-secret-02
spec:
  #指定镜像拉取的secret资源(secret的拉取镜像类型);
  imagePullSecrets:
  - name: xinjizhiwa-harbor 
  containers:
  - name: c3
    image: harbor.xinjizhiwa.com/xinjizhiwa01/nginx:1.20.1-alpine

五、拓展,如何声明式创建docker registry类型的secret资源

1,【-o yaml】模仿系统声明式的写法

就是将已经创建好的docker registry资源方向使用yaml格式查看;

[root@k8s231 secrets]# kubectl get secrets xinjizhiwa-harbor -o yaml 
apiVersion: v1
data:
  .dockerconfigjson: eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19
kind: Secret
metadata:
  creationTimestamp: "2024-02-14T05:08:30Z"
  name: xinjizhiwa-harbor
  namespace: default
  resourceVersion: "597638"
  uid: 33a3d025-047f-4d22-be5e-b92ed97b3310
type: kubernetes.io/dockerconfigjson

2,base64反向编译查看内容

[root@k8s231 ~]# echo eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19 | base64 -d
{"auths":{"harbor.xinjizhiwa.com":{"username":"admin","password":"1","email":"123@qq.com","auth":"YWRtaW46MQ=="}}}

[root@k8s231 ~]# echo YWRtaW46MQ== | base64 -d
admin:1

也就是说,dacker registy使用了两次base64的编码;

3,根据上述信息,自己编辑secret声明式资源清单

[root@k8s231 ~]# vim docker.yaml

apiVersion: v1
kind: Secret
metadata:
  name: xinjizhiwa-harbor02
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19
 

了解到:私有仓库的镜像拉取secret资源的使用即可;

#######################################################################3

编译过程:二次base64编译方向过程

[root@k8s233 ~]# echo -n eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19 |base64 -d
{"auths":{"harbor.xinjizhiwa.com":{"username":"admin","password":"1","email":"123@qq.com","auth":"YWRtaW46MQ=="}}}

[root@k8s233 ~]# echo -n YWRtaW46MQ== | base64 -d
admin:1

[root@k8s233 ~]# echo -n '{"auths":{"harbor.xinjizhiwa.com":{"username":"admin","password":"1","email":"123@qq.com","auth":"YWRtaW46MQ=="}}}' | base64
eyJhdXRocyI6eyJoYXJib3IueGluaml6aGl3YS5jb20iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBh
c3N3b3JkIjoiMSIsImVtYWlsIjoiMTIzQHFxLmNvbSIsImF1dGgiOiJZV1J0YVc0Nk1RPT0ifX19

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/472935.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建造者模式-Builder Pattern

原文地址:https://jaune162.blog/design-pattern/builder-pattern/ 引言 现在一般大型的业务系统中的消息通知的形式都会有多种,比如短信、站内信、钉钉通知、邮箱等形式。虽然信息内容相同,但是展现形式缺不同。如短信使用的是纯文本的形式,钉钉使用的一般是Markdown的形…

【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——JAVA

1、JAVA 2、计算机网络 3、计算机体系结构 4、数据库 5、计算机租场原理 6、软件工程 7、大数据 8、英文 自我介绍 1. Java 1. 和 equals的区别 比较基本数据类型是比较的值,引用数据类型是比较两个是不是同一个对象,也就是引用是否指向同 一个对象&…

C#,计算几何,贝塞耳插值(Bessel‘s interpolation)的算法与源代码

Friedrich Wilhelm Bessel 1 贝塞耳插值(Bessels interpolation) 首先要区别于另外一个读音接近的插值算法:贝塞尔插值(Bzier)。 (1)读音接近,但不是一个人; &#x…

【二十一】【C++】模版特化

模版的参数 类型模板参数 类型模板参数允许在定义模板时指定一个占位符&#xff0c;这个占位符在模板实例化时将被具体的类型替换。这使得我们能够编写与类型无关的通用代码。例如&#xff0c;标准库中的 std::vector<T> 使用一个类型模板参数 T&#xff0c;这意味着你…

transformer-Attention is All You Need(一)

1. 为什么需要transformer 循环模型通常沿输入和输出序列的符号位置进行因子计算。通过在计算期间将位置与步骤对齐&#xff0c;它们根据前一步的隐藏状态和输入产生位置的隐藏状态序列。这种固有的顺序特性阻止了训练样本内的并行化&#xff0c;这在较长的序列长度上变得至关重…

透光卓越,光耦继电器的独特特点全面解析

光耦继电器作为电子控制系统中的核心元件&#xff0c;其光电隔离技术为其独特之处。通过光电隔离技术&#xff0c;光耦继电器实现了输入和输出之间的电气隔离&#xff0c;有效阻止了高电压与低电压之间的直接接触。这项技术不仅提高了系统的安全性&#xff0c;还有效减少了电气…

【图论经典题目讲解】CF786B - Legacy 一道线段树优化建图的经典题目

C F 786 B − L e g a c y \mathrm{CF786B - Legacy} CF786B−Legacy D e s c r i p t i o n \mathrm{Description} Description 给定 1 1 1 张 n n n 个点的有向图&#xff0c;初始没有边&#xff0c;接下来有 q q q 次操作&#xff0c;形式如下&#xff1a; 1 u v w 表示…

计算机网络之网络安全

文章目录 1. 网络安全概述1.1 安全威胁1.1.1 被动攻击1.1.2 主动攻击 1.2 安全服务 2. 密码学与保密性2.1 密码学相关基本概念2.2 对称密钥密码体制2.2.1 DES的加密方法2.2.2.三重DES 2.3 公钥密码体制 3. 报文完整性与鉴别3.1 报文摘要和报文鉴别码3.1.1 报文摘要和报文鉴别码…

360可视门铃双摄版恢复案例

家用的智能摄像头恢复了很多&#xff0c;但是可视门铃的恢复却是第一次&#xff0c;现代社会似乎已经全方位处于监控网络之下。360的产品很多&#xff0c;可视门铃只是其众多品牌中的一个&#xff0c;这个案例能让我们窥视到360的开发小精产品的理念。 故障存储: 64G TF卡/ex…

Unity 2D Spine 外发光实现思路

Unity 2D Spine 外发光实现思路 前言 对于3D骨骼&#xff0c;要做外发光可以之间通过向法线方向延申来实现。 但是对于2D骨骼&#xff0c;各顶点的法线没有向3D骨骼那样拥有垂直于面的特性&#xff0c;那我们如何做2D骨骼的外发光效果呢&#xff1f; 理论基础 我们要知道&a…

optee CA/TA flow

以 TEEC_InvokeCommand 为例 CA—normal world EL0 //imx-optee-client\libteec\src\tee_client_api.c TEEC_InvokeCommandioctl(session->ctx->fd, TEE_IOC_INVOKE, &buf_data)通过syscall陷入内核态driver linux driver—normal world EL1 tee_ioctl // drive…

力扣题目训练(11)

2024年2月4日力扣题目训练 2024年2月4日力扣题目训练455. 分发饼干459. 重复的子字符串463. 岛屿的周长146. LRU 缓存147. 对链表进行插入排序76. 最小覆盖子串 2024年2月4日力扣题目训练 2024年2月4日第十一天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括简…