ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • 操作系统

  • 虚拟化服务

    • Docker笔记

    • Kubernetes笔记

      • Kubernetes介绍
      • Kubernetes部署
      • K8S资源与标签
      • Pod资源详解
      • Kubectl命令
      • 控制器资源配置
      • Service资源配置
      • Ingress资源配置
      • configMap资源配置
        • configMap资源
          • configMap介绍
          • 数据格式
          • 注入方式
          • 创建方式
        • secret资源
          • secret介绍
          • secret命令标识类型
          • 创建方式
      • Volume资源配置
      • Volume资源配置
    • Jenkins笔记

    • K3S笔记

  • 数据库服务

  • 监控服务

  • Web服务

  • 数据处理

  • Ops
  • 虚拟化服务
  • Kubernetes笔记
Hoshinozora
2023-12-19
目录

configMap资源配置

# configMap资源

# configMap介绍

configMap用于提供配置中心的功能,它能将配置从集群外部注入到集群容器内部。

且它的配置支持动态修改,当某配置发生变动时,configMap会通知给引用了该配置的容器,让其重载配置文件。但是只对存储卷方式有效,环境变量方式无效。

不过他是明文存储信息的,所以某些敏感信息不应该使用它进行存储,而是应该使用Secret。

# 数据格式

configMap使用键值对方式定义数据,且值没有长度限制。

# 注入方式

  • 第一种方式
    • 在Pod中的containers.env.valuefrom引用。将configMap中的配置,作为Pod中容器的环境变量注入进容器内部。
  • 第二种方式
    • 在Pod中的volumes.configMap中定义,然后在containers.volumeMounts中引用。将configMap中的配置,作为一个存储卷,挂载到Pod中容器的应用程序读取配置文件的路径。
  • 例子
# 创建configMap配置
kubectl create configMap nginx_conf --from-literal=nginx_port=80

# Pod引用configMap为环境变量
env:
  name: nginx_port
  valueFrom:
    configMapKeyRef:
      name: nginx_conf
      key: nginx_port
1
2
3
4
5
6
7
8
9
10

# 创建方式

  1. 使用kubectl create configmap命令行创建。

    • 指定键值对创建:kubectl create configmap [配置名] --from-literal=[键名]=[值] --from-literal=[键名]=[值]...
    • 指定文件内容作为值创建,不指定键名会将文件名当键名,文件内容当值。
      • kubectl create configmap [配置名] --from-file=[键名]=[文件路径]
      • kubectl create configmap [配置名] --from-file=[文件路径]
  2. 使用yaml资源配置清单进行创建。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: test
    # 指定configMap数据,注意:ConfigMap和Secret都不需要spec
    data:
      nginx_worker: root
      nginx.port: "80"
      # 多行文本,注意:文本内容需要缩进
      mysql.conf: |
        [mysqld]
        log-bin
        log_bin_trust_function_creators=1
        lower_case_table_names=1
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

# secret资源

# secret介绍

它和configMap提供的功能差不多,不过他的值是密文存储信息的,所以某些敏感信息可以使用它进行存储,比如密码、证书等。

但并非加密得很安全,只是提供了些许的安全性,使用base64 -d就能解密出来。

应用方式和configMap差不多,参考即可。

# secret命令标识类型

  • generic - 通用,可以保存密码等。
  • tls - 可以保存私钥、证书。
  • docker-registry - 可以保存私有仓库的镜像的认证信息。

# 创建方式

  1. 使用kubectl create secret命令行创建。
    • generic:kubectl create secret generic [secret名] --from-literal=[键名]=[值]...
    • tls:kubectl create secret tls [secret名] --cert=证书 --key=秘钥
    • docker-registry:kubectl create secret docker-registry [secret名] --docker-username=用户名 --docker-password=密码 --docker-email=邮箱
  2. 使用yaml资源配置清单进行创建。
apiVersion: v1
kind: Secret
metadata:
  name: test
# 指定secret数据,使用键值对方式定义数据,值如果是纯数字应该加上双引号
# 如果类型为generic,则定义的值需要事先使用base64进行加密
type: Opaque
data:
  password: "aGVsbG93cHJsZA=="
1
2
3
4
5
6
7
8
9
  • type <string> - 指定secret类型。

    • Opaque - 可用来存储密码、密钥、信息、证书等,要求value是base64编码格式。

      • 命令式创建类型标识为generic。
    • kubernetes.io/tls - 可以保存私钥、证书,用于保存TLS客户端或者服务器端的数据,用于为SSL通信模式存储证书和私钥文件。

      • 命令式创建类型标识为tls。
    • kubernetes.io/dockerconfigjson - 用来存储私有docker仓库的认证信息,要求value是BASE64加密的Json序列化格式的认证信息,格式如下:

      # value格式
      data:
        .dockerconfigjson:
          # 下面这串需要BASE64加密
          {"auths":{
            "镜像HTTP地址":{
              "username":"用户名",
              "password":"密码",
              "auth":"BASE64二次加密的:用户名:密码"
          }}}
      
      # 例如:
      data:
        .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOnsidXNlcm5hbWUiOiJ0ZXN0IiwicGFzc3dvcmQiOiJwYXNzd29yZCIsImF1dGgiOiJkR1Z6ZERwd1lYTnpkMjl5WkE9PSJ9fX0=
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      • 命令式创建类型标识为docker-registry。
#Linux#DevOps#Kubernetes#容器编排#configMap#Secret#配置清单
Ingress资源配置
Volume资源配置

← Ingress资源配置 Volume资源配置→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式