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

相关文章

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分