6.k8s中的secrets资源

一、Secret

secrets资源,类似于configmap资源,只是secrets资源是用来传递重要的信息的;

secret资源就是将value的值使用base64编译后传输,当pod引用secret后,k8s会自动将其base64的编码,反编译回正常的字符串;

  1. Secret 用于保存机密数据的对象。一般由于保存密码、令牌或密钥等。
    • data字段用来存储 base64 编码数据。
    • stringData存储未编码的字符串。
  2. Secret 意味着你不需要在应用程序代码中包含机密数据,减少机密数据(如密码)泄露的风险。
  3. Secret 可以用作环境变量、命令行参数或者存储卷文件。

二、创建secrets资源

1.创建工作目录

[root@k8s1 k8s]# mkdir secrets
[root@k8s1 k8s]# cd secrets/

2.尝试使用base64进行编码 

# 编码

[root@k8s1 secrets]# echo oslee | base64
b3NsZWUK

# 解码

[root@k8s1 secrets]# echo b3NsZWUK | base64 -d
oslee

3.声明式创建secrets资源

# 编辑secrets资源清单

vi 01-secret.yaml

apiVersion: v1
kind: Secret
metadata:name: s1#用户自定义的类型(Opaque为自定义类型;generic为)
type: Opaque
data: k8s: b3NsZWUKoslee: b3NsZWUK

# 创建secret资源

[root@k8s1 secrets]#  kubectl apply -f 01-secret.yaml
secret/s1 created

# 查看

[root@k8s1 secrets]# kubectl get secrets
NAME                  TYPE                                  DATA   AGE
default-token-xwhzs   kubernetes.io/service-account-token   3      23h
s1                    Opaque                                2      2m46s
[root@k8s1 secrets]# kubectl describe secret s1
Name:         s1
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
k8s:    6 bytes
oslee:  6 bytes

4.响应式创建secret

[root@k8s1 secrets]# kubectl create secret generic secret-02 --from-literal=school=os --from-literal=class=lee

  1. docker-registry:创建一个给Docker registry容器镜像仓库使用的secret
  2. generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)也就是资源清单中的type:Opaque是一个意思;
  3. tls: 创建一个TLS secret

三、pod引用secret资源

1.pod资源env环境变量引用

# 创建pod资源

[root@k8s1 secrets]# cat pod.yaml  

apiVersion: v1
kind: Pod
metadata:name: m13
spec:containers:- image: nginx:1.20.1-alpinename: nginxenv: - name: secret-env01valueFrom:#声明引用sercetsecretKeyRef: #声明secret名称name: s1#声明secret的keykey: oslee- name: secret-env02valueFrom:secretKeyRef:name: secret-02key: class

# 创建资源

[root@k8s1 secrets]# kubectl apply -f pod.yaml 
pod/m13 created 

# 登录pod资源查看env变量

[root@k8s1 secrets]# kubectl exec m13 -it -- sh
/ # env

secret-env01=oslee

secret-env02=lee

2.pod资源volume存储卷引用secret资源

 # 编辑资源清单

[root@k8s1 secrets]# vi pod-env-volume.yaml 

#pod资源env环境变量方式引用secret
apiVersion: v1
kind: Pod
metadata:name: pod-secret-01
spec:containers:- name: c1image: nginx:1.20.1-alpineenv:- name: k8svalueFrom:#声明引用secret资源secretKeyRef: name: s1#声明使用secret资源中的那一个keykey: k8s---#vomlume方式引用
apiVersion: v1
kind: Pod
metadata:name: pod-secret-02
spec: #声明存储卷volumes:- name: vol-secret#声明存储卷的类型是secretsecret:#指定secret资源的名称(使用哪个secret资源?)secretName: s1containers:- name: c2image: nginx:1.24.0-alpinevolumeMounts:- name: vol-secret#挂载到容器的哪个位置路径mountPath: /secret/

# 创建资源

[root@k8s1 secrets]# kubectl apply -f pod-env-volume.yaml 
pod/pod-secret-01 created
pod/pod-secret-02 created

# 查看挂载

[root@k8s1 secrets]# kubectl exec pod-secret-01 -it -- sh

[root@k8s1 secrets]# kubectl exec pod-secret-02 -it -- sh

 3.pod资源清单指定key引用secret

[root@k8s1 secrets]# kubectl apply -f pod-path.yaml 
pod/pod-secret-03 created
[root@k8s1 secrets]# cat pod-path.yaml 

apiVersion: v1
kind: Pod
metadata:name: pod-secret-03
spec: #声明存储卷volumes:- name: vol-secret#声明存储卷的类型是secretsecret:#1,指定secret资源的名称(使用哪个secret资源?)secretName: s1#2,指定secret资源中要引用的keyitems: - key: k8spath: oslee.pathcontainers:- name: c2image: nginx:1.24.0-alpinevolumeMounts:- name: vol-secret#挂载到容器的哪个位置路径?mountPath: /secret/oslee.path#只挂在文件,不清空容器原有文件夹subPath: oslee.path

# 进入pod查看

[root@k8s1 secrets]# kubectl exec -it pod-secret-03 -- sh 

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

  1. docker-registry:创建一个给Docker registry容器镜像仓库使用的secret
  2. generic: 从本地file, directory或者literal value创建一个 secret(这是大多数情况使用的)也就是资源清单中的type:Opaque是一个意思;
  3. tls: 创建一个TLS secret

创建Docker harbor的secret信息:

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

1.harbor创建私有仓库

2.推送镜像到私有仓库

[root@k8s2 ~]# docker login harbor.oslee.com

[root@k8s2 ~]# docker tag nginx:1.20.1-alpine harbor.oslee.com/oslee-private/nginx:1.20.1-alpine
[root@k8s2 ~]# docker push harbor.oslee.com/oslee-private/nginx:1.20.1-alpine

3.响应式创建拉取镜像的secret资源

[root@k8s1 ~]# kubectl create secret docker-registry oslee-harbor --docker-username=admin --docker-password=harbor123 --docker-email=oslee@qq.com --docker-server=harbor.oslee.com
secret/oslee-harbor created

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

[root@k8s1 secrets]# cat pod-harbor-secret.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-harbor-01
spec:#指定镜像拉取的secret资源(secret的拉取镜像类型);imagePullSecrets:- name: oslee-harborcontainers:- name: c3image: harbor.oslee.com/oslee-private/nginx:1.20.1-alpine

5.声明式创建docker registry类型的secret资源

5.1.【-o yaml】模仿系统声明式的写法

[root@k8s1 secrets]# kubectl get secrets oslee-harbor -oyaml

 5.2.base64解码查看内容

[root@k8s1 secrets]# echo eyJhdXRocyI6eyJoYXJib3Iub3NsZWUuY29tIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6ImhhcmJvcjEyMyIsImVtYWlsIjoib3NsZWVAcXEuY29tIiwiYXV0aCI6IllXUnRhVzQ2YUdGeVltOXlNVEl6In19fQ== | base64 -d
{"auths":{"harbor.oslee.com":{"username":"admin","password":"harbor123","email":"oslee@qq.com","auth":"YWRtaW46aGFyYm9yMTIz"}}}[root@k8s1 secrets]# 

[root@k8s1 secrets]# echo YWRtaW46aGFyYm9yMTIz | base64 -d
admin:harbor123 

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

[root@k8s1 secrets]# cat harbor-secret.yaml 
apiVersion: v1
kind: Secret
metadata:name: oslee-harbor02
type: kubernetes.io/dockerconfigjson
data:.dockerconfigjson: eyJhdXRocyI6eyJoYXJib3Iub3NsZWUuY29tIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6ImhhcmJvcjEyMyIsImVtYWlsIjoib3NsZWVAcXEuY29tIiwiYXV0aCI6IllXUnRhVzQ2YUdGeVltOXlNVEl6In19fQ==

[root@k8s1 secrets]# kubectl apply -f harbor-secret.yaml 
secret/oslee-harbor02 created 

[root@k8s1 secrets]# cat pod-harbor-secret.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-harbor-01
spec:
  #指定镜像拉取的secret资源(secret的拉取镜像类型);
  imagePullSecrets:
  - name: oslee-harbor02
  containers:
  - name: c3
    image: harbor.oslee.com/oslee-private/nginx:1.20.1-alpine
[root@k8s1 secrets]# kubectl apply -f pod-harbor-secret.yaml
pod/pod-harbor-01 created
[root@k8s1 secrets]# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
pod-harbor-01   1/1     Running   0          6s 

 

 

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

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

相关文章

HTTP/1.1、HTTP/2、HTTP/3 的演变

HTTP/1.1、HTTP/2、HTTP/3 的演变 HTTP/1.1 相比 HTTP/1.0 提高了什么性能&#xff1f;HTTP/2 做了什么优化&#xff1f;HTTP/3 做了哪些优化&#xff1f; HTTP/1.1 相比 HTTP/1.0 提高了什么性能&#xff1f; HTTP/1.1 相比 HTTP/1.0 性能上的改进&#xff1a; 使用长连接的…

再生龙clonezilla使用方法

目录 本文相关内容的介绍服务器窗口重定向引导进入再生龙系统检查本机操作系统的引导模式 再生龙基础功能选择选择 device-image选择ssh_server 网络配置ssh_server 配置ssh_server 镜像存储路径 再生龙抓取操作系统抓取镜像的命名 再生龙恢复操作系统拉取镜像的选择 本文相关内…

【16-Ⅰ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

收藏:关于闭包表

参考视频&#xff1a;【IT老齐513】经典树形数据结构-闭包表_哔哩哔哩_bilibili&#xff0c; 这个视频系列的确不错&#xff0c;500多个了。 闭包表&#xff0c;其实就是用来做树形结构的时候&#xff0c;如何快速找到某个节点下的所有后代节点&#xff0c;用两张表去完成&…

机器学习实战-聚类算法

聚类算法是一种无监督学习的算法&#xff0c;用于将数据集中的数据分成不同的聚类或组。聚类算法是数据挖掘和机器学习领域中常见的技术之一&#xff0c;具有广泛的应用。 以下是聚类算法的一些知识点&#xff1a; 聚类算法的目的是将数据集划分为不同的组&#xff0c;使得组内…

C++ 矩阵

目录 了解矩阵的数学原理&#xff08;大学线性代数&#xff09; 矩阵及转置矩阵 矩阵乘法 矩阵快速幂 相伴矩阵模板 [相伴矩阵,快速矩阵幂]CSES1722 Fibonacci Numbers 了解矩阵的数学原理&#xff08;大学线性代数&#xff09; 矩阵及转置矩阵 这里A就是一个矩阵&…

uniapp 桌面应用插件 Ba-Launcher

简介&#xff08;下载地址&#xff09; Ba-Launcher 可以让你的应用成为简单的桌面应用&#xff0c;如需扩展功能&#xff0c;请联系我。 截图展示 可关注博客&#xff0c;实时更新最新插件&#xff1a; uniapp 常用原生插件大全 使用方法 使用方法也很简单&#xff0c;在插…

PG数据库结构与oracle比较

1.数据库集簇逻辑结构 数据库集簇概念&#xff1a;一个大的数据库是由若干个小的数据库组成&#xff0c;实现数据的隔离存放&#xff0c;在概念上应该是与mysql一样的 在mysql中可以用show database列出数据库 PG中用\l 数据库对象存放在数据库中&#xff1a; PG中的所有数据…

计算机英文论文常见错误写作习惯3

目录 第一部分 Numbers and Equations ‘such as’ and ‘etc.’ 第二部分 第一部分 Numbers and Equations 两个非常常见的错误是关于阿拉伯数字和方程式的表示。中国作家通常写阿拉伯数字&#xff0c;而不是拼出单词。然而&#xff0c;使用阿拉伯数字本身并不是一个错误…

简约大气的全屏背景壁纸导航网源码(免费)

简约大气的全屏背景壁纸导航网模板 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html> <html lang"zh-CN"> <!--版权归孤独 --> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible…

工厂模式和策略模式区别

工厂模式和策略模式都是面向对象设计模式&#xff0c;但它们的目的和应用场景有所不同。 工厂模式是一种创建型设计模式&#xff0c;旨在通过使用一个工厂类来创建对象&#xff0c;而不是直接使用new关键字来创建对象。这样做可以使系统更容易扩展和维护&#xff0c;因为新的对…

图论之最短路算法模板总结

来个大致的分类&#xff1a; 朴素的迪杰斯特拉&#xff1a; 实现&#xff1a; 我们让s表示当前已经确定的最短距离的点&#xff0c;我们找到一个不在s中的距离最近的点t&#xff0c;并用t来更新其他的点。 下面是AC代码&#xff1a; #include<bits/stdc.h> using nam…

C语言-整体内容简单的认识

目录 一、数据类型的介绍二、数据的变量和常量三、变量的作用域和生命周期四、字符串五、转义字符六、操作符六、常见的关键字6.1 关键字static 七、内存分配八、结构体九、指针 一、数据类型的介绍 sizeof是一个操作符&#xff0c;是计算机类型/变量所占内存空间的大小   sc…

中间件之异步通讯组件RabbitMQ入门

一、概述 微服务一旦拆分&#xff0c;必然涉及到服务之间的相互调用&#xff0c;目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中&#xff0c;调用者发起请求后需要等待服务提供者执行业务返回结果后&#xff0c;才能继续执行后面的业务。也就是说调用者在调用…

Java IO流(二)

1. 缓冲流 1.1 字节缓冲流概述 当对文件或其他数据源进行频繁的读/写操作时&#xff0c;效率比较低&#xff0c;这时如果使用缓存流就能够更高效地读/写信息。 比如&#xff0c;可以使用缓冲输出流来一次性批量写出若干数据减少写出次数来提高写出效率。 如果用生活中的例子做…

使用qemu调试NVME driver

参考nvme驱动相关的博客&#xff0c;可以使用qemu buildroot进行nvme驱动的流程debug。 一、QEMU编译 首先需要编译qemu&#xff0c;可以参考QEMU编译。wget下载最新版本的QEMU&#xff0c;编译之前&#xff0c;最好检查下依赖包是否安装&#xff0c;避免安装过程出现各种错…

Qwen-Audio:推动通用音频理解的统一大规模音频-语言模型(开源)

随着人工智能技术的不断进步&#xff0c;音频语言模型&#xff08;Audio-Language Models&#xff09;在人机交互领域变得越来越重要。然而&#xff0c;由于缺乏能够处理多样化音频类型和任务的预训练模型&#xff0c;该领域的进展受到了限制。为了克服这一挑战&#xff0c;研究…

【WebGL】修改阴影体形状,实现相交分析

阴影体&#xff08;Shadow Volume&#xff09;技术是计算机图形学中实现阴影的重要方式&#xff0c;除了用于可视化阴影效果外&#xff0c;阴影体还能实现线、面等要素的贴地、贴对象显示。在用阴影体贴地、贴对象时&#xff0c;大多数情况下我们都会认为阴影体是一个带有高度的…

OpenCV的图像矩(64)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV如何为等值线创建边界旋转框和椭圆(63) 下一篇 &#xff1a;OpenCV4.9的点多边形测试(65) Image Moments&#xff08;图像矩&#xff09;是 OpenCV 库中的一个功能&#xff0c;它可…

神经网络中常见的激活函数:理解与实践

神经网络中常见的激活函数&#xff1a;理解与实践 在神经网络中&#xff0c;激活函数是一个非常重要的组成部分&#xff0c;它为神经元引入了非线性特性&#xff0c;使得神经网络可以拟合各种复杂的函数关系。本文将介绍9种常见的激活函数&#xff0c;包括它们的概述、公式以及…