configMap与secret使用

news2024/10/22 20:10:36

ConfigMap

ConfigMap 是 Kubernetes 中用于存储非机密的配置数据的对象,可以将配置数据分离于容器映像,从而实现更灵活的配置管理。ConfigMap 允许你将配置信息以键值对的形式存储,并可以在 Pod 中以环境变量、命令行参数或挂载文件的方式使用。

创建 ConfigMap

  1. 通过命令行创建
    你可以使用 kubectl create configmap 命令直接从文件或键值对创建 ConfigMap。例如:
kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
或者从文件创建:
kubectl create configmap my-config --from-file=path/to/config-file
  1. 通过 YAML 文件创建
    你也可以通过 YAML 文件定义 ConfigMap,然后使用 kubectl apply 创建。例如:
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  # 定义单行数据
  key1: value1
  key2: value2

   # 定义多行数据
   my.cfg: |
     datadir: "/var/lib/mysql"
     basedir: "/usr/share/mysql"
     socket: "/tmp/mysql.sock"

使用以下命令应用配置:

kubectl apply -f configmap.yaml

查看 ConfigMap

  1. 查看所有 ConfigMap
    使用以下命令列出当前命名空间中的所有 ConfigMap:
kubectl get configmaps
  1. 查看特定 ConfigMap
    要查看特定 ConfigMap 的详细信息,可以使用以下命令:
kubectl describe configmap <configmap-name>
例:
kubectl describe configmap my-config
  1. 查看 ConfigMap 的 YAML 格式
    如果你想查看 ConfigMap 的 YAML 配置,可以使用以下命令:
    这将以 YAML 格式输出 ConfigMap 的详细信息,包括数据和元数据。
kubectl get configmap <configmap-name> -o yaml

使用 ConfigMap

  1. 作为环境变量
    pod基于env环境变量引入cm资源
    你可以在 Pod 的容器中使用 ConfigMap 中的键作为环境变量:
    configMapKeyRef字段
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    env:
    - name: MY_CONFIG_KEY
      valueFrom:
        # 指定引用的configMap资源
        configMapKeyRef:
          # 指定configMap的名称
          name: my-config
           # 指定configMap的KEY
          key: key1

  1. 作为命令行参数
    在启动容器时,可以将 ConfigMap 的值作为命令行参数传递给容器:
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    args: ["--config", "$(MY_CONFIG_KEY)"]
    env:
    - name: MY_CONFIG_KEY
      valueFrom:
        configMapKeyRef:
          name: my-config
          key: key1
  1. 作为挂载文件
    ConfigMap 也可以作为卷挂载到 Pod 的文件系统中:

挂载文件夹:
该方式挂载后,ConfigMap 中的每个键都会在 /etc/config 下生成一个文件,其内容为对应的值。

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-config

或者挂载为文件

apiVersion: v1
kind: Pod
metadata:
  name: linux85-volume-cm-008
spec:
  volumes:
  - name: data
    # 指定存储卷的类型为configMap
    configMap:
      # 指定configMap的名称
      name: linux85-config
      # 引用configMap的key
      items:
        # 指定key的名称
      - key: student.info
        # 可以暂时理解为指定文件的名称
        path: linux85-student.info
  containers:
  - name: web
    image: nginx:1.20.1-alpine
    command: ["tail","-f","/etc/hosts"]
    volumeMounts:
    - name: data
      mountPath: /etc/nginx/nginx.conf
      # 当subPath的值和configMap.items.path相同时,mountPath的挂载点是一个文件而非目录!
      subPath: linux85-student.info

volumes:
定义一个名为 data 的卷,类型为 ConfigMap。
configMap:
name: 指定引用的 ConfigMap 名称 linux85-config。
items: 列出要从 ConfigMap 中引用的键。
key: student.info,这是 ConfigMap 中的一个键。
path: linux85-student.info,指定在挂载时生成的文件名


指定将名为 data 的卷挂载到容器内的路径 /etc/nginx/nginx.conf。
subPath: 使用 subPath 指定挂载的具体文件名 linux85-student.info,这意味着挂载的是单个文件,而不是整个目录。



示例: 
apiVersion: v1
kind: Pod
metadata:
  name: linux85-games-ketanglianxi-002
spec:
  # hostNetwork: true
  nodeName: k8s232.com
  volumes:
  - name: data
    configMap:
      name: linux85-games
      items:
      - key: nginx.conf
        path: nginx.conf
  containers:
  - name: game
    image: games:v0.1
    volumeMounts:
    - name: data
      mountPath: /usr/local/nginx/conf/nginx.conf
      subPath: nginx.conf
    # 指定容器的端口映射相关字段
    ports:
      # 指定容器的端口号
    - containerPort: 80
      # 绑定主机的IP地址
      hostIP: "0.0.0.0"
      # 指定绑定的端口号
      hostPort: 88
      # 给该端口起一个别名,要求唯一
      name: game
      # 指定容器的协议
      protocol: TCP

---

apiVersion: v1
kind: ConfigMap
metadata:
  name: linux85-games
data:
  nginx.conf: |
      worker_processes  1;
      events {
          worker_connections  1024;
      }
      http {
          include       mime.types;
          default_type  application/octet-stream;
          sendfile        on;
          keepalive_timeout  65;
          server {
              listen       80;
              root        /usr/local/nginx/html/bird/;
              server_name   game01.com;
          }
          server {
              listen       80;
              root        /usr/local/nginx/html/pinshu/;
              server_name   game03.com;
          }
          server {
              listen       80;
              root        /usr/local/nginx/html/tanke/;
              server_name   game05.com;
          }
          server {
              listen       80;
              root        /usr/local/nginx/html/pingtai/;
              server_name   game02.com;
          }
          server {
              listen       80;
              root        /usr/local/nginx/html/chengbao/;
              server_name   game04.com;
          }
      }

secret

在 Kubernetes 中,Secret 是一种用于存储敏感信息的对象,如密码、OAuth 令牌和 SSH 密钥等。使用 Secret 可以安全地管理敏感数据,而无需将这些数据直接暴露在 Pod 定义中。

创建 Secret
  1. 通过命令行创建
    你可以使用 kubectl create secret 命令创建 Secret。例如:
kubectl create secret generic my-secret --from-literal=username=myuser --from-literal=password=mypassword
或者从文件创建:
kubectl create secret generic my-secret --from-file=path/to/secret-file
  1. 通过 YAML 文件创建
    你也可以通过 YAML 文件定义 Secret,然后使用 kubectl apply 创建。例如:
#先加密
username | base64
bXl1c2Vy  
password | base64
bXlwYXNzd29yZA==


#然后编写yaml 文件
apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  username: bXl1c2Vy  # base64 编码的值
  password: bXlwYXNzd29yZA==  # base64 编码的值

#使用以下命令应用配置:
kubectl apply -f secret.yaml
查看 Secret
#查看所有 Secrets
kubectl get secrets
#查看特定 Secret 的详细信息
kubectl describe secret <secret-name>
#查看 Secret 的具体内容
kubectl get secret <secret-name> -o yaml
#如果你想查看某个键的具体内容,可以使用以下命令:
kubectl get secret <secret-name> -o jsonpath="{.data.<key-name>}" | base64 --decode
#示例
#假设你有一个名为 my-secret 的 Secret,查看内容的命令可以是:
kubectl get secret my-secret -o jsonpath="{.data.password}" | base64 --decode
使用 Secret

Secret 可以通过多种方式在 Pod 中使用:
其实和上面的configmap类似

  1. 作为环境变量
    可以将 Secret 的键作为环境变量注入到容器中:
apiVersion: v1
kind: Pod
metadata:
  name: linux85-game-secret-001
spec:
  containers:
  - name: game
    image: games:v0.7
    env:
    - name: LINUX85_USERNAME
      valueFrom:
        # 指定引用的secret资源
        secretKeyRef:
          # 指定secret的名称
          name: es-https
          # 指定secret的KEY
          key: username
  1. 作为挂载文件
    Secret 也可以作为卷挂载到 Pod 的文件系统中:
apiVersion: v1
kind: Pod
metadata:
  name: linux85-volume-secret-003
spec:
  volumes:
  - name: data
    # 指定存储卷的类型为secret
    secret:
      # 指定secret的名称
      secretName: es-https
      items:
      - key: username
        path: username.info
      - key: password
        path: password.info
      - key: hostip
        path: hostip.info
  containers:
  - name: web
    image: nginx:1.20.1-alpine
    command: ["tail","-f","/etc/hosts"]
    volumeMounts:
    - name: data
      # mountPath: /oldboyedu-data
      mountPath: /etc/nginx/nginx.conf
      subPath: username.info
    - name: data
      mountPath: /etc/nginx/password.conf
      subPath: password.info
    - name: data
      mountPath: /etc/nginx/hostip.conf
      subPath: hostip.info

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

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

相关文章

Http模块总体设计

在前面的文章中&#xff0c;我们已经实现了一个主从Reactor模型的服务器类&#xff0c;但是由于他只是一个服务器&#xff0c;不涉及任何业务以及协议的处理&#xff0c;那么为了方便用户使用&#xff0c;我们可以预先设置好协议的支持&#xff0c;只需要让用户进行业务处理就行…

【Qt】Windows下Qt连接DM数据库

环境信息&#xff1a;W11 Qt5.12及以上 dm8 QODBC达梦 Windows环境创建ODBC数据源 使用 ODBC 方法访问 DM 数据库服务器之前&#xff0c;必须先配置 ODBC 数据源 在控制面板Windows工具中显示ODBC数据源管理器 ODBC数据源管理器标签 用户 DSN&#xff1a;添加、删除或配置本…

jmeter中发送post请求遇到的问题

用jmeter发送post请求&#xff0c;把请求参数放在Body Data处&#xff0c;参数都写得正确&#xff0c;但没想到结果每次都报错&#xff0c;直接响应结果乱七八糟&#xff0c;改成用Parameters,反而不乱报错了。 上图 请求里如下 另外一些请求也是这样 这个响应结果也是错误的…

⌈ 传知代码 ⌋ 农作物病害分类(Web端实现)

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

国家超算互联网测评——用一分钱的显卡做大模型微调

大家好&#xff0c;我是刘明&#xff0c;明志科技创始人&#xff0c;华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享&#xff0c;如果你也喜欢我的文章&#xff0c;就点个关注吧 背景信息 算力、算法、数据&#xff0c;…

Vulhub Rickdiculously Easy 靶机详解

项目地址 https://download.vulnhub.com/rickdiculouslyeasy/RickdiculouslyEasy.zip实验过程 将下载好的靶机导入到VMware中&#xff0c;设置网络模式为NAT模式&#xff0c;然后开启靶机虚拟机 使用nmap进行主机发现&#xff0c;获取靶机IP地址 nmap 192.168.47.1-254根据对…

1971. 寻找图中是否存在路径

有一个具有 n 个顶点的 双向 图&#xff0c;其中每个顶点标记从 0 到 n - 1&#xff08;包含 0 和 n - 1&#xff09;。图中的边用一个二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接&#x…

uniapp 常用的地区行业各种多选多选,支持回显,复制粘贴可使用

uniapp 常用的地区行业各种多选多选&#xff0c;支持回显 必须导入uni-popup 弹出层 该组件 1.目前项目开发中使用到这类似挺多的&#xff0c;记录一下&#xff0c;方便以后是使用 2.使用前提&#xff0c;目前不做无限级&#xff0c;只支持二维数组&#xff0c;模板里只循环了两…

在此处打开Powershell窗口出现“Set-Location : 找不到接受实际参数“xxx”的位置形式参数。”

在此处打开Powershell窗口出现“Set-Location : 找不到接受实际参数“xxx”的位置形式参数。” 0x00 缘起0x01 方法1. 打开注册表编辑器2. 修改注册项数据3. 验证效果 0x02 结论0x03 参考0x04 后记 0x00 缘起 使用带有空格的用户文件夹名称&#xff08;如&#xff1a;My PC&a…

驱动模块操作以及printk命令

文章目录 一、驱动模块操作命令1. 安装模块 insmod2. 查看模块 lsmod3. 卸载模块 rmmod4. 问题总结 二、printk打印语句1. 内核中的打印级别2. 通过级别过滤打印信息3. 修改默认消息级别4. 测试消息级别① 原始终端查看② dmesg命令 5. 打印信息的宏定义 一、驱动模块操作命令 …

光纤光学——弱导光纤与线偏振模

一、基本思想 弱导光纤&#xff1a;n1≈ n2 , k0n1 ≈ k0n2&#xff0c;亦即&#xff1a; k0n1 ≈ k0 n2 ≈ 光线与纤轴的夹角小&#xff1b;芯区对光场的限制较弱&#xff1b; 消逝场在包层中延伸较远。 弱导光纤场的特点&#xff1a; HEι1,m模式与EHι-1,m色散曲线相近…

企智汇项目管理软件:工程版,弱电版,集成版,生产制造等多个行业版本,全行业覆盖

企智汇项目管理软件是一款功能全面且适用于多行业的项目管理工具&#xff0c;以下是对该软件及其不同版本的详细介绍&#xff1a; 企智汇项目管理软件是一款集CRM、OA、PMS、CMS、ERP等多个子系统于一体的全方位平台&#xff0c;旨在为企业提供一站式项目管理解决方案。该软件…

Qt项目实战:图片轮播器

目录 一.设置背景于初始化图像 二.设置定时器 三.定时器到更新图片 四.鼠标点击暂停更新和打开更新 五.效果 六.代码 1.h 2.cpp 一.设置背景于初始化图像 二.设置定时器 三.定时器到更新图片 四.鼠标点击暂停更新和打开更新 五.效果 六.代码 1.h #ifndef WIDGET_H #d…

MyHdfs代码分享

关于hdfs协议层相关的的解析已经比较全面&#xff0c;但是大多的分析停留在理论层面。为此笔者通过对hadoop源码的整理&#xff0c;完成了myhdfs项目。此项目有个特点是不依赖于任何hadoop的maven包&#xff0c;但却可以作为原生的hadoop客户端的server。项目暂时已经完成了rpc…

10月24日程序员节!GameViewer远程体验副屏串流和远程办公功能

10月24日是程序员节&#xff0c;在这里祝所有编程爱好者和专业人士节日快乐&#xff01; 我相信&#xff0c;对于程序员来说&#xff0c;拥有一件称心如意的工具提高办公生产力&#xff0c;要比任何一件礼物都重要。这么特别的日子&#xff0c;当然要选择一款合适的远程控制软件…

Vulnhub打靶-matrix-breakout-2-morpheus

基本信息 靶机下载&#xff1a;https://pan.baidu.com/s/1kz6ei5hNomFK44p1QT0xzQ?pwdy5qh 提取码: y5qh 攻击机器&#xff1a;192.168.20.128&#xff08;Windows操作系统&#xff09; 靶机&#xff1a;192.168.20.0/24 目标&#xff1a;获取2个flagroot权限 具体流程 …

026_net基于Net的鲜花销售系统2024_97irnin0

目录 系统展示 设计思路 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

演示:基于WPF的DrawingVisual开发的高刷新率示波器

一、目的&#xff1a;分享一个基于WPF的DrawingVisual开发的高刷新率示波器 二、效果演示 特此说明&#xff1a;由于Gif录制工具帧率不够&#xff0c;渲染60帧用了4.6秒&#xff0c;平均帧率在12Hz左右&#xff0c;所以展示效果不好&#xff0c;想要看好些的效果可以看文章下面…

《地下蚁国》风灵月影十项修改器使用教程

《地下蚁国》是一款引人入胜的模拟策略类游戏&#xff0c;玩家可以在游戏中体验蚂蚁王国的生存与壮大。为了进一步提升玩家的游戏体验&#xff0c;地下蚁国修改器应运而生。这款修改器能够协助玩家轻松获得游戏中的各种资源和优势&#xff0c;使游戏过程更加顺畅和便捷。通过利…

Java基于SSM框架的教学辅助微信小程序【附源码、文档】

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…