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,一经查实,立即删除!

相关文章

数据库和MySQL

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

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

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

深度学习示例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节点的详细指标解读

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

吴恩达深度学习笔记:卷积神经网络(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模型。富文本…

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

前台多语言:可支持语言有中文(繁体)中文(简体)英文等。多语言使用百度翻译引擎接口实现,翻译效果与百度一致;网站语言分为两大块: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…

Java运行环境的下载、安装、配置与运行

一、实验目的及要求 目的:掌握如何下载java JDK软件包,如何设置Java程序的运行环境,如何编写与运行Java程序,了解Java概貌。 要求: 1、安装Java JDK软件包; 2、练习编写简单的Java Application程序并掌握…

vscode安装使用plantuml插件

使用 VSCode 插件 如果你在 Visual Studio Code 中使用 PlantUML 插件,你可以按照以下步骤生成图片: 安装 PlantUML 插件: 在 VSCode 的扩展市场中搜索并安装 PlantUML 插件。 配置插件: 打开设置,确保插件配置正确。…

Node.js发票查验接口示例、识别查验接口参数返回

财务、审计等经常与发票打交道的人员常常会遇到虚假发票、错票、重复报销等一系列问题。对于会计审计、代理记账、电子商务等发票查验量多的企业来说,成千上万张发票如果仅依赖于人工来进行核验,速度慢效率低,准确率也没保障,因此…

MySQL record

更改密码: alter user rootlocalhost identified with mysql_native_password by ‘123456’; 注意: 在命令行方式下,每条MySQL的命令都是以分号结尾的,如果不加分号,MySQL会继续等待用户输入命令,直到MyS…

kube-prometheus部署

一、自定义配置(二选一,不建议用这个) grafana-service.yml apiVersion: v1 kind: Service metadata:name: grafananamespace: kube-monitoringlabels:app: grafanacomponent: core spec:type: NodePortports:- port: 3000nodePort: 30011selector:app: grafanaco…

uniapp 懒加载、预加载、缓存机制深度解析

uniapp 懒加载、预加载、缓存机制深度解析 文章目录 uniapp 懒加载、预加载、缓存机制深度解析一、为什么要使用uniapp的懒加载、预加载和缓存机制二、如何使用uniapp的懒加载、预加载和缓存机制1. 懒加载2. 预加载3. 缓存机制 四、扩展与高级技巧1. 结合懒加载和预加载优化页面…

链表.......

从右到左 更新尾部 typedef typedef struct ListNode { int value; struct ListNode *next;(这里不能用listnode*应为还没有定义) } ListNode; #include <stdio.h> #include <stdlib.h> // 定义链表节点结构体 struct ListNode { int value; s…