Secret

Secret

在 Kubernetes 中,Secret 是一种用于存储敏感信息的资源,比如密码、OAuth 令牌、SSH 密钥等。Secret 允许你以安全的方式将这些信息传递给 Pod,而不是硬编码在镜像或配置文件中。

配置管理中心:configMap、Secret

Secret 的类型
创建 Secret 时,你可以使用 Secret 资源的 type 字段,或者与其等价的 kubectl 命令行参数(如果有的话)为其设置类型。 Secret 类型有助于对 Secret 数据进行编程处理。

Kubernetes 提供若干种内置的类型,用于一些常见的使用场景。 针对这些类型,Kubernetes 所执行的合法性检查操作以及对其所实施的限制各不相同。内置类型  用法
Opaque  用户定义的任意数据
kubernetes.io/service-account-token 服务账号令牌
kubernetes.io/dockercfg ~/.dockercfg 文件的序列化形式
kubernetes.io/dockerconfigjson  ~/.docker/config.json 文件的序列化形式
kubernetes.io/basic-auth  用于基本身份认证的凭据
kubernetes.io/ssh-auth  用于 SSH 身份认证的凭据
kubernetes.io/tls 用于 TLS 客户端或者服务器端的数据
bootstrap.kubernetes.io/token 启动引导令牌数据安全性
加密存储:Kubernetes 支持在 etcd 中加密 Secret。
访问控制:使用 RBAC(角色基础访问控制)来限制对 Secret 的访问。
Secret 是 Kubernetes 中用于处理敏感数据的关键资源,它提供了安全和灵活的方式来管理这些数据。

创建 Secret

Secret 可以通过多种方式创建,包括 YAML 文件、kubectl 命令或从文件中加载。以下是几种常见的创建方式:

  1. 从文件创建 Secret

    kubectl create secret generic my-secret --from-file=/path/to/secret/file
    
  2. 从字面量值创建 Secret

    kubectl create secret generic my-secret --from-literal=username=myuser --from-literal=password=mypassword
    
  3. 使用 YAML 文件定义 Secret

    apiVersion: v1
    kind: Secret
    metadata:name: my-secret
    type: Opaque
    data:username: dXNlcg==  # base64 编码后的 "user"password: cGFzc3dvcmQ=  # base64 编码后的 "password"
    
Sectec如何加密: base64
## 编码
echo -n '123456' | base64  
## 解码
echo "a3kzNg==" | base64 -d## yaml文件方式创建secret:yaml文件中的数据,必须要用base64加密。
## 命令的方式创建secret:  
不需要BASE64提前加密;
kubectl create secret generic backend-user --from-literal=backend-username='backend-admin'

示例:

1.安全分发凭据

## 用户名和密码:   ky36   123456echo -n 'ky36' | base64     ------ a3kzNg==echo -n '123456' | base64   ------ MTIzNDU2apiVersion: v1
kind: Pod
metadata:name: secret-test-pod
spec:containers:- name: test-containerimage: harbor.hiuiu.com/nginx/nginx:1.21.5volumeMounts:- name: secret-volumemountPath: /etc/secret-volumereadOnly: truevolumes:- name: secret-volumesecret:secretName: test-secret
---
apiVersion: v1
kind: Secret
metadata:name: test-secret
data:username: a3kzNg==password: MTIzNDU2class: ky36kubectl exec -it secret-test-pod  -- bash

请添加图片描述

2.Secret 中的数据定义容器变量ENV

kubectl create secret generic backend-user --from-literal=backend-username='backend-admin'
apiVersion: v1
kind: Pod
metadata:name: env-single-secret
spec:containers:- name: envars-test-containerimage: harbor.hiuiu.com/nginx/nginx:1.21.5env:- name: SECRET_USERNAMEvalueFrom:secretKeyRef:name: backend-userkey: backend-username
kubectl exec -it env-single-secret -- bash -c 'echo $SECRET_USERNAME'

3.secret实现连接远程mysql

#数据库:
#####################总结#####################
#在集群外部,centos7系统安装mysql作为服务端。之前写的脚本,拖来直接运行
[root@Node5 ~]#:bash install_mysql.sh
#进入数据库之后
#密码策略,改密码,添加两条:
set global validate_password_policy=0;
set global validate_password_length=1;#将密码改成"abc123"
alter user root@'localhost' identified by 'abc123';
ctrl + D  #退出,可以测试一下:mysql -uroot -pabc123,登录进去,ctrl+D退出登录。
#进去创建一个普通用户。允许任何主机登录。
[root@Node5 ~]#:mysql -uroot -pabc123
#创建一个普通用户。
mysql> create user user@"%" identified by "123456";
#查看主机和用户。
mysql> select host,user from mysql.user;
| %         | user          |4 rows in set (0.00 sec)
#赋权。
mysql> grant all privileges on *.* to user@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
#登录普通用户。由于赋权了,可以对数据库操作了。
[root@Node5 ~]#:mysql -uuser -p123456
mysql> create database ky36;
Query OK, 0 rows affected (0.00 sec)
#查看数据库。ky36
mysql> show databases;
| ky36               |
5 rows in set (0.00 sec)
mysql> exit
Bye
####去集群master上:可以在主上安装mysql:apt install -y mysql-client,测试登录mysql -uuser -p123456 -h 192.168.240.15
#获取用户名和密码的密文。写在yaml文件中。
[root@Node-1 9_02]#:echo -n "user" | base64
dXNlcg==
[root@Node-1 9_02]#:echo -n "123456" | base64
MTIzNDU2
#写两个yaml文件。secret.yaml和pod.yaml
[root@Node-1 9_02]#:cat secret.yaml 
apiVersion: v1
kind: Secret
metadata:name: mysql-secret		#secret的名字。
type: Opaque
data:mysql-password: MTIzNDU2	#密码密文mysql-user: dXNlcg==		#用户名密文
[root@Node-1 9_02]#:cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: my-app-pod
spec:containers:- name: my-app-podimage: harbor.hiuiu.com/linux_system/centos/centos7:7.9.2009env:- name: MYSQL_HOST			#变量名,进入容器中的变量。echo $MYSQL_HOSTvalue: "192.168.240.15"	#值为主机- name: MYSQL_PORTvalue: "3306"- name: MYSQL_USERvalueFrom:secretKeyRef:name: mysql-secret	#用户在secret中的key: mysql-user		#取这个键的值- name: MYSQL_PASSWORDvalueFrom:secretKeyRef:name: mysql-secret	#密码在secret中key: mysql-password	#取这个键的值command: ["/bin/bash"]		#在centos中持续运行的命令。args: ["-c", "while true; do echo hello; sleep 10; done"]
#运行secret
[root@Node-1 9_02]#:kubectl apply -f secret.yaml 
secret/mysql-secret created
[root@Node-1 9_02]#:kubectl get secret 
NAME           TYPE     DATA   AGE
mysql-secret   Opaque   2      6s
#运行pod
[root@Node-1 9_02]#:kubectl apply -f pod.yaml 
pod/my-app-pod created
[root@Node-1 9_02]#:kubectl get pod 
NAME         READY   STATUS    RESTARTS        AGE
my-app-pod   1/1     Running   0               3s
nginxtest    1/1     Running   25 (121m ago)   5d7h
[root@Node-1 9_02]#:kubectl exec -it my-app-pod bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
#搭建本地yum仓库。
[root@my-app-pod ~]# cd /etc/yum.repos.d/
[root@my-app-pod yum.repos.d]# mkdir bak
[root@my-app-pod yum.repos.d]# mv *.repo bak/
#从centos中,grep -vE "^#|^$" /etc/yum.repos.d/CentOS-Base.repo。把这个源复制到容器的源中。
[root@my-app-pod yum.repos.d]# vi CentOS-Base.repo
[root@my-app-pod yum.repos.d]# yum clean all
[root@my-app-pod yum.repos.d]# yum makecache
#安装数据库
[root@my-app-pod yum.repos.d]# yum install -y mysql
#查看变量
[root@my-app-pod yum.repos.d]# echo $MYSQL_HOST
192.168.240.15
[root@my-app-pod yum.repos.d]# echo $MYSQL_USER
user
[root@my-app-pod yum.repos.d]# echo $MYSQL_PASSWORD
123456
#登录数据库
[root@my-app-pod yum.repos.d]# mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 5.7.44 MySQL Community Server (GPL)Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ky36               |		#发现有了我们在服务端创建的数据库ky36。
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)MySQL [(none)]> drop database ky36;		#删除数据库
Query OK, 0 rows affected (0.00 sec)MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
#在centos7服务端查看,也就删除掉了ky36数据库。
[root@Node5 ~]#:mysql -uuser -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 5.7.44 MySQL Community Server (GPL)Copyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)mysql> 

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

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

相关文章

深度学习从入门到精通——yolov1

YOLOV1 速度快,能够达到实时的要求。在 Titan X 的 GPU 上 能够达到 45 帧每秒。 使用全图作为 Context 信息,背景错误(把背景错认为物体)比较少。 泛化能力强。 YOLO的核心思想就是利用整张图作为网络的输入,直接在…

Agent AI智能体的未来:角色、发展路径及挑战

引言 人工智能技术的迅猛发展正在深刻改变我们的生活和社会结构。其中,Agent AI智能体作为人工智能领域的一个重要分支,因其高度的自主性和适应性而备受关注。Agent AI智能体不仅可以执行复杂的任务,还能根据环境变化自我调整策略&#xff0…

数据库和MySQL

ER图 实体(矩形):通常是现实世界的业务对象,当然使用一些逻辑对象也可以。 属性(椭圆):实体拥有的属性。 联系(菱形):实体与实体之间的关系。 函数依赖 函数依…

【JVM】Java内存分配与回收:深入理解Java内存管理

Java内存分配与回收:深入理解Java内存管理 引言 Java虚拟机(JVM)的内存管理是确保Java应用程序性能和稳定性的关键。理解Java的内存分配方式和回收过程对于开发者来说至关重要。 基础知识 JVM内存模型:JVM内存分为堆&#xff…

(11)(1.1) 有刷电机

文章目录 前言 1 经过验证的电机驱动器 2 连接和配置 3 参数说明 前言 ArduPilot 支持多种控制有刷电机的方法。 支持 RC PWM 输入(宽度为 1ms 至 2ms 的 PWM 信号)的有刷电机 ESC 最容易使用,因为不需要特殊配置,本文档的其…

使用python+opencv解析图像和文本数据

1. 创建虚拟环境 新建文件夹, 并在文件夹中创建虚拟环境,可以使用Vscode打开文件夹, 然后在终端中输入以下命令: python -m venv venv2. 激活虚拟环境 在终端中输入以下命令: venv\Scripts\activate3. 安装依赖 在终端中输入以下命令: pip install opencv-pythonpip inst…

5.程序转换语意学

目录 1.显示的初始化操作 2.参数的初始化 3.返回值的初始化 4.在使用者层面做优化 5.Copy Constructor要不要? 1.显示的初始化操作 已知有这样的定义: X x0; 下面的三个定义,每一个都明显地以x0来初始化其class object; …

深度学习示例2-多输入多输出的神经网络模型

一、代码示例 from tensorflow import keras from tensorflow.keras import layers import numpy as np# 定义 多输入 多输出的模型 vocabulary_size = 1000 num_tags = 100 num_departments = 4title = keras.Input(shape=(vocabulary_size,), name = "title") tex…

kali——msfconsole的使用

目录 前言 msfconsole的使用基础 启动mfsconsole 各种辅助模块的使用 端口扫描模块(portscan) 查看端口扫描的模块 使用模块 查看所需设置 手动设置 执行 退出 各种漏洞模块的使用 nmap扫描主机漏洞 查看漏洞模块 使用漏洞模块 查看所需设…

Prometheus通过node_exporter监控Node节点,Node节点的详细指标解读

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

webpack基本使用(基础)

文章目录 概要理解 一、使用示例1.引入库2.创建config/webpack.dev.js 测试环境3.创建config/webpack.prod.js 正式环境3.创建eslintrc.js4.创建babel.config.js5.package.json 总结 概要理解 vue或者react 通常用webpack作为打包工具,打包成浏览器识别的html、css…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)1.9-1.10

目录 第四门课 卷积神经网络(Convolutional Neural Networks)第一周 卷积神经网络(Foundations of Convolutional Neural Networks)1.9 池化层(Pooling layers)1.10 卷 积 神 经 网 络 示 例 ( …

Linux_kernel汇编驱动06

一、ARM汇编语言(GUN-gcc编译器下) 1、语句格式 {symbol} {instruction|directive|pseudo-instruction} { comment} symbol:为符号。 在ARM汇编语言中,符号必须从一行的行头开始,并且符号中不能包含空格。 在指令和伪指…

基于C++实现(MFC界面)家谱管理系统

一、题目:家谱管理系统 二、内容: 2.1 概述 2.1.1 选题原因 做此题的原因是因为可以比较方便的记录家族历代成员的情况与关系,能很好的保存家族每一代的信息,而不用人工纸质的方式来存取家谱,更便于人们保存和使用…

爬虫练习(js逆向解密)

目标 网站地址交易列表 - 福建省公共资源交易电子公共服务平台 (fj.gov.cn) 抓取内容如下: 分析 查找js代码 点击下一页翻页的时候,查看请求返回的数据,发现data数据是经过加密后得到的 通过全局搜索data,发现有两千多个结果,一个…

AI超强语音转文本SenseVoice,本地化部署教程!

文章目录 模型介绍SenseVoice在线预览链接本地化部署VsCode 远程连接 模型介绍 SenseVoice专注于高精度多语言语音识别、情感辨识和音频事件检测 多语言识别: 采用超过40万小时数据训练,支持超过50种语言,识别效果上优于Whisper模型。富文本…

【Kubernetes知识点问答题】Docker CE 部署

目录 1.ca-certificates, gnupg, lsb-release 三个包的解释。 2.docker-ce, docker-ce-cli, containerd.io, docker-compose-plugin 作用。 3.K8s 在 1.2 之后就不再支持 docker,请解释对错。 4.举例说明创建容器以及以交互方式访问容器的命令? 1.ca-…

跨境电商代购系统中前台基本功能介绍:帮助更快的了解跨境代购业务

前台多语言:可支持语言有中文(繁体)中文(简体)英文等。多语言使用百度翻译引擎接口实现,翻译效果与百度一致;网站语言分为两大块:1.系统后台有语言包可以编辑修改网站标题以及发布文…

WPS中JS宏使用说明(持续优化...)

前言 好久没发文章了,今天闲来无事发篇文章找找之前的码字感觉。 正文 最近在写教案,发现之前的技术又可以派上用场了。就是JS,全称JavaScript,这个语言太强大了,我发现WPS里的宏现在默认就是JS。功能选项如下图&…

MySQL数据库安装(详细)—>Mariadb的安装(day21)

该网盘链接有效期为7天,有需要评论区扣我: 通过网盘分享的文件:mariadb-10.3.7-winx64.msi 链接: https://pan.baidu.com/s/1-r_w3NuP8amhIEedmTkWsQ?pwd2ua7 提取码: 2ua7 1 双击打开安装软件 本次安装的是mariaDB,双击打开mar…