k8s配置资源管理|secret|configmap

news2024/11/29 4:26:19

k8s配置资源管理|secret|configmap

  • 一 配置资源管理
    • 1 创建 Secret
    • 2 使用方式
    • 3 将 Secret 导出到环境变量中
  • 二 ConfigMap
    • 1 Pod 中使用 ConfigMap
    • 2 Pod的创建
    • 3 用 ConfigMap 设置命令行参数
    • 4 通过数据卷插件使用ConfigMap

一 配置资源管理

//Secret
Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险。

有三种类型:
●kubernetes.io/service-account-token:由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中;
●Opaque :base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型;
●kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息。

Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret:
●作为挂载到一个或多个容器上的卷 中的文件。
●作为容器的环境变量。
●由 kubelet 在为 Pod 拉取镜像时使用。

应用场景:凭据
https://kubernetes.io/docs/concepts/configuration/secret/

1 创建 Secret

1、用kubectl create secret命令创建Secret
echo -n 'chenken' > username
echo -n 'abc1234' > password

2  kubectl create secret generic mysecret --from-file=username --from-file=password

3 kubectl get secrets


4 kubectl describe secret mysecret

在这里插入图片描述

2 使用方式

1、将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下
vim secret-test.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: myapp-dome
  name: myapp-dome
spec:
  volumes:
  - name: mysecret
    secret:
      secretName: mysecret
  containers:
  - image: soscscs/myapp:v1
    name: myapp-dome
    ports:
    - containerPort: 80
    volumeMounts:
    - name: mysecret
      mountPath: /etc/secret/
      readOnly: true



kubectl create -f secret-test.yaml

kubectl get pods

请添加图片描述
请添加图片描述

kubectl exec -it seret-test bash
 # cd /etc/secrets/
 # ls
password.txt  username.txt

请添加图片描述

3 将 Secret 导出到环境变量中

vim secret-test1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod1
spec:
  containers:
  - name: nginx
    image: nginx
    env:
      - name: TEST_USER
        valueFrom:
          secretKeyRef:
            name: mysecret1
            key: username
      - name: TEST_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret1
            key: password

kubectl apply -f secret-test1.yaml 

kubectl get pods

二 ConfigMap

与Secret类似,区别在于ConfigMap保存的是不需要加密配置的信息。
ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象。
应用场景:应用配置
创建 ConfigMap

1、使用目录创建
mkdir /opt/configmap/
 
vim /opt/configmap/game.properties
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
 
vim /opt/configmap/ui.properties
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice

ls /opt/configmap/
game.properties
ui.properties

kubectl create configmap game-config --from-file=/opt/configmap/
//--from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容

kubectl get cm

在这里插入图片描述

1 Pod 中使用 ConfigMap

1、使用 ConfigMap 来替代环境变量
vim env.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  special.how: very
  special.type: good
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: env-config
  namespace: default
data:
  log_level: INFO


2 kubectl create -f env.yaml 

3 kubectl get cm

在这里插入图片描述

2 Pod的创建

1 vim test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: busybox
    image: busybox:1.28.4
    command: [ "/bin/sh", "-c", "env" ]
    env:
      - name: SPECIAL_HOW_KEY
        valueFrom:
          configMapKeyRef:
            name: special-config
            key: special.how
      - name: SPECIAL_TYPE_KEY
        valueFrom:
          configMapKeyRef:
            name: special-config
            key: special.type
    envFrom:
      - configMapRef:
          name: env-config
  restartPolicy: Never


2 kubectl create -f test-pod.yaml

3 kubectl get pods

4 kubectl logs test-pod


请添加图片描述

3 用 ConfigMap 设置命令行参数

1 vim test-pod2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test-pod2
spec:
  containers:
  - name: busybox
    image: busybox:1.28.4
    command: 
	- /bin/sh
	- -c
	- echo "$(SPECIAL_HOW_KEY) $(SPECIAL_TYPE_KEY)"
    env:
      - name: SPECIAL_HOW_KEY
        valueFrom:
          configMapKeyRef:
            name: special-config
            key: special.how
      - name: SPECIAL_TYPE_KEY
        valueFrom:
          configMapKeyRef:
            name: special-config
            key: special.type
    envFrom:
      - configMapRef:
          name: env-config
  restartPolicy: Never


2 kubectl create -f test-pod2.yaml

3 kubectl get pods

在这里插入图片描述

4 通过数据卷插件使用ConfigMap

在数据卷里面使用 ConfigMap,就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容
vim test-pod3.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test-pod3
spec:
  containers:
  - name: busybox
    image: busybox:1.28.4
    command: [ "/bin/sh", "-c", "sleep 36000" ]
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: special-config
  restartPolicy: Never


kubectl create -f test-pod3.yaml 

kubectl get pods

在这里插入图片描述

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

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

相关文章

2023年6月合肥/厦门/长春/深圳DAMA-CDGP数据治理专家认证报名

目前6月18日CDGA&CDGP考试目前开放的城市有:北京、上海、广州(满)、深圳、长沙、呼和浩特、杭州(满)、南京、济南(满)、成都、西安、武汉(满)、天津。 新增了武汉、天津这2个城市。另外合肥…

【Netty】Reactor 模型(十)

文章目录 前言一、传统服务的设计模型二、NIO 分发模型三、Reactor 模型3.1、Reactor 处理请求的流程3.2、Reactor 三种角色 四、单Reactor 单线程模型4.1、消息处理流程4.2、缺点 五、单Reactor 多线程模型5.1、消息处理流程5.2、缺点 六、主从Reactor 多线程模型6.1、Reactor…

Python的一些基础实操练习题

书接上文多看一眼多进步,python入门到放弃,是根据python的知识点的一些基础练习题,说了是基础练习题,基础练习题,基础练习题,水平高的就别看了,平高的就别看了,高的就别看了&#xf…

IP协议-服务类型字段

服务类型(Type of Service)字段是比较复杂的一个字段,该字段经过多次标准变更。 IPv4报文 一、最初标准(RFC 791) RFC 791定义TOS字段总共占用8bit,分为IP Precedence优先级(3bit)、…

Ansys Zemax | 如何将高斯光整形为平顶光

概要 本文展示了如何设计光束整形器将激光器产生的高斯分布的光转换为平顶分布的光输出。(联系我们获取文章附件) 介绍 光束整形光学元件可以将入射光的光强分布转换为其他特定的分布输出。最常见的例子就是将激光器产生的高斯分布的光转换为平顶&#x…

GMesh的Mesh操作面板介绍

GMesh操作面板介绍 Define 用于控制网格生成过程中各个单元的尺寸大小 “Size at points”选项允许您指定空间中某些点的尺寸大小。这些点可以是模型的几何结构中的点,也可以是在Gmsh中手动定义的点(使用“Point”命令)。在这种情况下&…

pycharm在终端运行时ps 不显示环境

如果下面显示的是ps ----- 而不是 则需要把这儿修改一下

2023年Java教学大纲!好程序员教你如何快速学会Java!

今天好程序员给大家分享一篇2023年的Java教学大纲,跟着这篇大纲学习,并且熟练掌握该技能,实习轻松月入过万不是梦! 一、Java初级程序员必须要掌握的技能: Java基础知识控制声明面向对象的概念数组字符串异常处理输入/输…

Ubuntu22.04安装最新Eigen库

按道理:该方法适用所有Linux,适合安装多版本 本文采用源码 cmake的方法安装,故前置条件: 源码下载,官网下载或GitLab下载安装cmake(没有安装cmake,也可以采用其他办法安装) 官网下…

解决win无法删除多层嵌套文件夹

起因:昨天研究jpackage工具,不小心搞得一个文件夹里嵌套了好几百个文件夹,用win自己的删除删不掉,shiftdel直接删除也不行,直接弹窗删除错误; 后来用电脑管家下载了个“文件粉碎”,添加目录&am…

硬核机器学习知识点教学--(代码讲解)

用代码和实战讲解机器学习,零基础一样看得懂👏🏻👏🏻👏🏻 复习、学习、备战考试皆可用👏🏻👏🏻👏🏻 本系列持续更新中&a…

举个栗子~Tableau 技巧(254):学做圆形维诺图(Voronoi diagram)

关于维诺图 维诺图用于分析不同集合之间的交集和差集关系。在数据科学和统计学中,它常用于可视化不同数据集之间的重叠和交集,以便更好地理解它们之间的关系和差异。 例如,我们可以使用维诺图来展示不同客户群之间的交集,以便更…

编辑与校对的艺术:如何提高公文写作质量

在写作过程中,编辑与校对是提高作品质量的关键环节。它们不仅涉及语法、拼写和标点等基本问题,还包括文本的组织、表达和内容。通过掌握编辑与校对的艺术,你可以使你的文字更具说服力、更清晰易懂,从而更有效地传达你的观点。 1.认…

分布式系统监控zabbix安装部署及自定义监控

目录 一、zabbix的基本概述1.1 zabbix 监控原理1.2 Zabbix 6.0 新特性1.3 Zabbix 6.0 功能组件1.4 zabbix的监控对象1.5 zabbix的常用术语 二、zabbix进程详解三、zabbix的监控框架四、zabbix源码安装及部署4.1 部署 zabbix 服务端4.2 安装 zabbix 客户端,实现 zabb…

00后学什么技术有前途?2023年Java和前端发展前景分析!

00后的你还在想着进厂吗?每天在流水线上打螺丝,过着一成不变的日子,而且每个月就休息那么几天。如果你不想进厂,特别是对那些20岁刚出头或者学历不是那么有优势的年轻人,好程序员建议还是应该去学习一门技术&#xff0…

从 OceanBase 迁移数据到 DolphinDB

OceanBase 是一款金融级分布式关系数据库,具有数据强一致、高可用、高性能、在线扩展、高度兼容 SQL标准和主流关系数据库、低成本等特点,但是其学习成本较高,且缺乏金融计算函数以及流式增量计算的功能。 DolphinDB 是一款国产的高性能分布…

Micro-python Socket 支持 ROS2 topic 框架 (一)

消息Topic ROS2官方文档 Topic官方介绍 是各节点之间的信息交流媒介,可以实现一对一,一对多,多对一,多对多的信息交流,如图所示 (一)使用工具打开消息流图 打开rqt_graph(注意其…

如何利用IDEA将Git分支代码回退到指定历史版本

一、背景 作为一名后端开发,相信大家一定遇到过这样的情景,代码开发人员过多,并且开发分支过多,导致代码版本管理困难,这样就难免遇到一些代码合并出错,比如,当我提交了本次修改到本地和远程分…

Spring Boot注解@Async与线程池的配置

目录 使用异步注解创建异步任务 Async注解 使用Demo 线程池配置 Spring Boot默认用于异步任务线程池配置 线程池配置 线程池隔离 为什么需要线程池隔离? 线程池隔离实现Demo 线程池配置: 异步任务: 测试demo 参考内容: 使…

动态优化会议地点

前言 在现在快节奏的工作节奏下,大家的活动范围越来越广,但是出行成本也相应提高。在集体会面的时候,如何选择合适的地点成为了一个棘手的问题。本文将介绍如何通过动态优化选择会议地点,以达到平均交通成本最低的目标。 动态优化…