k8s初级实战09--Secret

2024-05-31 00:08

本文主要是介绍k8s初级实战09--Secret,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

k8s初级实战09--Secret

  • 1 基础概念
  • 2 常见用法
    • 2.1 创建 secret
    • 2.2 使用 secret
    • 2.3 imagePullSecret 控制镜像访问权限
  • 3 注意事项
  • 4 说明

1 基础概念

Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥。 将这些信息放在 secret 中比放在 Pod 的定义或者 容器镜像 中来说更加安全和灵活。
Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Secret 可以通过 Volume 或者环境变量的方式使用。

在创建 Secret 对象时,你可以使用 Secret 资源的 type 字段,或者与其等价的 kubectl 命令行参数(如果有的话)为其设置类型。截至1.19版本,K8S提供了多种内置的类型,具体如下:

内置类型用法
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启动引导令牌数据

2 常见用法

2.1 创建 secret

  1. 通过文件创建 secret
    % echo -n 'admin' > ./username
    % echo -n 'kubernetes' > ./password
    % kubectl create secret generic sec-data01 --from-file=./username --from-file=./password
    secret/sec-data01 created
    查看secret数据:
    % kubectl get secrets sec-data01 -o go-template='{{.data}}'
    map[password:a3ViZXJuZXRlcw== username:YWRtaW4=]% 
    
  2. 手动加密
    默认情况下使用base64进行加密,如下直接通过base64加密,其值和secret中的加密结果相同:
    % echo -n 'admin'|base64
    YWRtaW4=
    % echo -n 'kubernetes'|base64
    a3ViZXJuZXRlcw==
    对加密数据进行解密:
    % echo 'YWRtaW4='|base64 --decode 
    admin% % vim sec-data01.yaml 
    apiVersion: v1
    data:password: a3ViZXJuZXRlcw==username: YWRtaW4=
    kind: Secret
    metadata:name: sec-data01
    

2.2 使用 secret

  1. pod卷挂载 secret
    该方式会将secret信息挂载到指定的目录,然后让容器中的程序通过挂载目录的文件来读取secret的内容。
    % vim pod-sec-data01.yaml 
    apiVersion: v1
    kind: Pod
    metadata:name: sec-data01
    spec:containers:- name: busybo-secimage: busybox:1.32volumeMounts:- name: config-volume mountPath: /my-configvolumes:- name: config-volume secret:secretName: sec-data01
    创建pod:
    % kubectl apply -f pod-sec-data01.yaml
    pod/sec-data01 created
    查看secret挂载情况:
    / # ls /my-config/
    password  username
    / # cat /my-config/username 
    admin/ # 
    / # cat /my-config/password 
    kubernetes/ # 
    
  2. pod环境变量使用 secret
    该方式会将secret的key加载到pod的container env中,使用时需要通过 env[x].valueFrom.secretKeyRef 指定要包含的 Secret 名称和键名。
    % cat pod-env-sec-data02.yaml 
    apiVersion: v1
    kind: Pod
    metadata:name: env-sec-data01
    spec:containers:- name: busybo-secimage: busybox:1.32command: ['sh', '-c', 'sleep 1000000']env:- name: SECRET_USERNAMEvalueFrom:secretKeyRef:name: sec-data01key: username- name: SECRET_PASSWORDvalueFrom:secretKeyRef:name: sec-data01key: password
    创建pod:
    % kubectl apply -f pod-env-sec-data02.yaml 
    pod/env-sec-data01 created
    查看环境变量:
    % kubectl exec -it  env-sec-data01 -- env|grep SEC
    SECRET_USERNAME=admin
    SECRET_PASSWORD=kubernetes
    ``
    

2.3 imagePullSecret 控制镜像访问权限

to add

3 注意事项

  1. 除了基本的secret外,也可以通过 immutable: true 字段来创建不可更改的Secret

4 说明

概念->配置->Secret
github feiskyer/kubernetes-handbook/blob/master/concepts/secret

这篇关于k8s初级实战09--Secret的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017122

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3