代码编织梦想

ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。
ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改。
ConfigMap中的数据是明文保存的

适用场景

使用 ConfigMap 来将你的配置数据和应用程序代码分开。

  • 假设你正在开发一个应用,在调用服务A时,开发环境地址为dev.xxx.com,而生产环境地址为xxxx.com,这时候就可以使用ConfigMap
  • 某些应用程序,例如Hadoop需要有复杂的xml配置文件,这种配置文件,也可以使用ConfigMap进行存储

注意事项

  • ConfigMap 在设计上不是用来保存大量数据的。在 ConfigMap 中保存的数据不可超过 1 MiB。如果需要保存超出此容量的数据,考虑挂载存储卷 或者使用独立的数据库或者文件服务。
  • ConfigMap 的名字必须是一个合法的 DNS 子域名。不能超过 253 个字符,只能包含小写字母、数字,以及 ‘-’ 和 ‘.’,必须以字母数字开头,必须以字母数字结尾
  • data 或 binaryData 字段下面的每个键的名称都必须由字母数字字符或者 -、_ 或 . 组成。在 data 下保存的键名不可以与在 binaryData 下出现的键名有重叠。
  • data 字段设计用来保存 UTF-8 字符串,而 binaryData 则被设计用来保存二进制数据作为 base64 编码的字串
  • 静态 Pod 中的 spec 字段不能引用 ConfigMap 或任何其他 API 对象。

使用方式

可以使用四种方式来使用 ConfigMap 配置 Pod 中的容器:

  • 在容器命令和参数内
  • 容器的环境变量
  • 在只读卷里面添加一个文件,让应用来读取
  • 编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap

这些不同的方法适用于不同的数据使用方式。 对前三个方法,kubelet 使用 ConfigMap 中的数据在 Pod 中启动容器。

第四种方法意味着必须编写代码才能读取 ConfigMap 和它的数据。然而, 由于你是直接使用 Kubernetes API,因此只要 ConfigMap 发生更改, 你的应用就能够通过订阅来获取更新(watch技术实现),并且在这样的情况发生的时候做出反应。 通过直接进入 Kubernetes API,这个技术也可以让你能够获取到不同的名字空间里的 ConfigMap。但是缺点也是同样明显,增加ApiServer和ETCD数据库的压力

使用示例

直接使用属性

ConfigMap配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: erp-config
data:
  # 属性键;每一个键都映射到一个简单的值
  host_name: "erp_server"

pod配置文件

apiVersion: v1
kind: Pod
metadata:
  name: configmap-erp-pod
spec:
  containers:
    - name: erp-server
      image: xxxxxx/erp-server:1.0.1.20210912
      command: ["echo", "${host_name}"]
      env:
        # 定义环境变量
        - name: ENV_PROPERTIES           # 请注意这里和 ConfigMap 中的键名是不一样的
          valueFrom:
            configMapKeyRef:
              name: erp-config           # 这个值来自 ConfigMap
              key: host_name             # 需要取值的键

将ConfigMap生成文件,供程序挂载使用

ConfigMap配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: erp-config
data:
  application_properties: "application.properties"
  # 类文件键
  application.properties: |
    server.port=8081
    server.context=/

pod配置文件

apiVersion: v1
kind: Pod
metadata:
  name: configmap-erp-pod
spec:
  containers:
    - name: erp-server
      image: xxxxxx/erp-server:1.0.1.20210912
      env:
        # 定义环境变量
        - name: APPLICATION_PROPERTIES
          valueFrom:
            configMapKeyRef:
              name: erp-config
              key: application_properties
      volumeMounts:
        - name: config
          # 设置ConfigMap挂载到程序中的目录
          mountPath: "/erp-server/config"
          readOnly: true
  volumes:
    - name: config
      configMap:
        # 提供你想要挂载的 ConfigMap 的名字
        name: erp-config
        # 来自 ConfigMap 的一组键,将被创建为文件
        items:
          - key: "application.properties"
            path: "application.properties"
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42321034/article/details/127118768

k8s使用volume将ConfigMap作为文件或目录直接挂载_“云原生”技术公开课-第八讲-掌握K8S应用配置管理...-爱代码爱编程

本节课程要点 ConfigMaps 和 Secret 资源的创建和使用;Pod 身份认证的实现和原理;容器资源、安全、前置校验等配置和使用。细分为以下八个方面: 一、需求来源 背景问题 首先一起来看一下需求来源。大家应该都有过这样的经验,就是用一个容器镜像来启动一个 container。要启动这个容器,其实有很多需要配套的问题待解决:

k8s使用volume将ConfigMap作为文件或目录直接挂载_从零开始入门 K8s | 应用配置管理...-爱代码爱编程

一、需求来源 背景问题 首先一起来看一下需求来源。大家应该都有过这样的经验,就是用一个容器镜像来启动一个 container。要启动这个容器,其实有很多需要配套的问题待解决: 第一,比如说一些可变的配置。因为我们不可能把一些可变的配置写到镜像里面,当这个配置需要变化的时候,可能需要我们重新编译一次镜像,这个肯定是不能接受的;第二就是

k8s使用volume将ConfigMap作为文件或目录直接挂载_如何原生的在 K8s 上运行 Flink?-爱代码爱编程

本文转自:“Demo 示例:如何原生的在 K8s 上运行 Flink?” 作者:王阳(亦祺) 导读:主要介绍如何原生的在 Kubernetes 上运行 Flink。主要内容包括 Kubernetes 简介Flink on Kubernetes 部署演进Flink Native Integration 技术细节Demo 演示Kuber

k8s使用volume将ConfigMap作为文件或目录直接挂载_K8s 应用管理之道-有状态服务-爱代码爱编程

摘要: 用户通过 Deployment、ReplicationController 可以方便地在 kubernetes 中部署一套高可用、可扩展的分布式无状态服务。这类应用不在本地存储数据,通过简单的负载均衡策略可实现请求分发。 背景 用户通过 Deployment、ReplicationController 可以方便地在 kubernetes 中

k8s使用volume将ConfigMap作为文件或目录直接挂载_K8s 应用管理之道 - 有状态服务-爱代码爱编程

背景 用户通过 Deployment、ReplicationController 可以方便地在 kubernetes 中部署一套高可用、可扩展的分布式无状态服务。这类应用不在本地存储数据,通过简单的负载均衡策略可实现请求分发。随着 k8s 的普及和云原生架构的兴起,越来越多的人希望把数据库这类有状态服务也通过 k8s 进行编排。但因为有状态服务的复杂

k8s使用volume将ConfigMap作为文件或目录直接挂载_从应用开发角度认识 K8S-爱代码爱编程

简介:刘晨 Lorraine 坐标Fintech,精通持续集成与发布,曾具有全平台100+应用持续部署持续发布实战经验,现在立志于成为K8S玩家。 云原生应用 我们正经历从单体应用转向分布式微服务架构应用的技术趋势。分布式微服务架构作为越来越多的软件开发设计模式,以领域设计模型来指导业务需求的抽象与封装。对业务的实体抽象还是

k8s使用volume将ConfigMap作为文件或目录直接挂载_从应用开发角度认识 K8s-爱代码爱编程

简介:K8S作为目前最流行的云原生平台架构,对于一组微服务的交互,持续化数据的存储,或者实施多个具有依赖关系的微服务运行,以及容量规划等问题,能够提供一套自动化的系统性解决方案。 云原生应用 我们正经历从单体应用转向分布式微服务架构应用的技术趋势。分布式微服务架构作为越来越多的软件开发设计模式,以领域设计模型来

K8S-5--云原生基础/k8s基础及组件/二进制部署k8s集群-爱代码爱编程

Day5作业: 1.总结k8s 各组件功能 2.总结k8s中创建pod的调度流程 3.基于二进制部署k8s集群 网络组件calico、coredns、dashoard 一、云原生基础: CNCF 云原生容器生态系统概要:http://dockone.io/article/3006 13年,docker项目正式发布 14年,kubernete

云原生入门-k8s-爱代码爱编程

K8S架构图 通过架构图可以看到K8S的几个关键组件之间的工作方式 APIS 是接受 scheduler ,controller manager, kubectl , etcd 等组件的调用左边的是master节点,master节点里面的apis收到请求之后,就把请求发往对应的node节点里面的 kubelet中k8s 组件 APIS: 所有服务访

一文弄懂ConfigMap在k8s中的各种玩法以及应用场景-爱代码爱编程

前言 在K8S的某些场景下,pod需要依赖各种配置以及配置文件,这些配置不能写死在镜像中,否则会影响到镜像的扩展性。此时ConfigMap作为K8S中提供的配置管理组件登场了。ConfigMap可以将环境变量配置信息和容器镜像解耦,便于应用配置的修改。 下文就ConfigMap的使用方法以及使用场景进行下总结,帮助大家在不同场景下能正确的使用Confi

【云原生实战】学习笔记(二)k8s(Kubernetes)实战入门-爱代码爱编程

《云原生实战》是尚硅谷与KubeSphere官方联合打造的云原生系列课程之一 课程链接:云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps_哔哩哔哩_bilibili 学习资料: k8s 官网: Kubernetes 文档 | Kubernetes 云原生实战 · 语雀 (yuque.com) 学习内容: 云平台核

【云原生】ingress-controller在多k8s集群中的应用_神州数码云基地的博客-爱代码爱编程

一、背景   众所周知,单k8s集群可以通过ingress-controller,解析ingress资源,将对应的请求发送到对应的pod中。 / 单k8s集群 单k8s集群问题 但在实际⽣产中,node机器可能会分布在不同的区域,各区域间⽹络波动较⼤,调度将变得⾮常困难。 此时就会考虑使⽤多 k8s 集群。 / 多k8s集群

【云原生 | kubernetes 系列】----使用prometheus监控k8s集群_上海_运维_q先生的博客-爱代码爱编程

使用Prometheus监控K8s集群 1. daemonset方式部署node-exporter 将node的/proc,/sys,/分别隐射到node-exporter中,这样就能监控node的状态 apiVers

云原生-爱代码爱编程

虚拟机搭建kubernetes集群环境 1、kubernetes的组织架构2、kubernetes的集群部署模型3、k8s安装的环境准备4 、安装kubelet、kubeadm、kubectl5、使用kubea