ConfigMaps-1

2023-09-18 06:00:00

主要内容

  1. 使用 YAML 文件创建
  2. 使用命令行创建

预备知识
ConfigMaps 是 Kubernetes 中一种用于存储配置数据的资源对象。它允许您将配置信息(如环境变量、命令行参数、配置文件等)与应用程序分离,以便您可以在不重新构建镜像的情况下更改配置。

ConfigMap 在设计上不是用来保存大量数据的,在 ConfigMap 中保存的数据不可超过 1MiB,如果超出此限制,可能考虑使用挂载存储卷或者使用独立的数据库或者文件服务。

ConfigMaps 可以通过以下两种方式使用:

1. 环境变量:您可以将 ConfigMap 中的键值对映射为容器的环境变量。这样,您的应用程序可以通过读取环境变量来获取配置信息。

**2. 挂载卷:**您可以将 ConfigMap 挂载到容器中的特定路径,使应用程序能够直接读取配置文件。这种方式适用于那些需要读取大量配置文件的应用程序。

下面是使用 ConfigMaps 的一些详细解释:

1. 创建 ConfigMap:

您可以使用 kubectl create configmap 命令从文件或直接从命令行创建 ConfigMap。例如,kubectl create configmap my-config --from-file=config.properties 将从名为 config.properties 的文件创建一个名为 my-config 的 ConfigMap。

2. 查看 ConfigMap:

您可以使用 kubectl get configmaps 命令来查看当前命名空间中的所有 ConfigMaps。使用 kubectl describe configmap <configmap-name> 命令可以查看特定 ConfigMap 的详细信息。

3. 使用 ConfigMap:

要将 ConfigMap 中的配置作为环境变量注入到容器中,您可以在 Pod 的 YAML 配置文件中使用 envFrom 字段。例如:

spec:
  containers:
    - name: my-app
      image: my-image
      envFrom:
        - configMapRef:
            name: my-config

要将 ConfigMap 挂载为卷,您可以在 Pod 的 YAML 配置文件中使用 volumesvolumeMounts 字段。例如:

spec:
  containers:
    - name: my-app
      image: my-image
      volumeMounts:
        - name: config-volume
          mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: my-config

4. 更新 ConfigMap:

您可以使用 kubectl edit configmap <configmap-name> 命令来编辑 ConfigMap。您还可以使用 kubectl apply -f <configmap-file> 命令来更新 ConfigMap。

5. 删除 ConfigMap:

您可以使用 kubectl delete configmap <configmap-name> 命令来删除 ConfigMap。

这些是使用 ConfigMaps 的一些常见用法和详细解释。ConfigMaps 提供了一种方便的方式来管理和使用配置数据,使您的应用程序更加灵活和可配置。


一.使用 YAML 文件创建

当使用 YAML 文件创建 Kubernetes 资源时,通常需要定义以下几个关键部分:

  1. apiVersion:指定要使用的 Kubernetes API 版本。

  2. kind:指定要创建的资源类型,如 Deployment、Service、ConfigMap 等。

  3. metadata:指定资源的元数据,包括名称、命名空间、标签等。

  4. spec:指定资源的规格,包括容器镜像、端口、环境变量、挂载卷等。

下面是一个使用 YAML 文件创建 Deployment 资源的示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-container
          image: my-image
          ports:
            - containerPort: 8080
          env:
            - name: ENV_VAR1
              value: value1
            - name: ENV_VAR2
              value: value2
          volumeMounts:
            - name: config-volume
              mountPath: /etc/config
      volumes:
        - name: config-volume
          configMap:
            name: my-config

在这个示例中:

  • apiVersion 设置为 apps/v1,表示使用 Apps API 的版本。
  • kind 设置为 Deployment,表示创建一个 Deployment 资源。
  • metadata 中的 name 设置为 my-deployment,表示 Deployment 的名称。
  • spec 中的 replicas 设置为 3,表示要创建 3 个 Pod。
  • selector 中的 matchLabels 设置为 app: my-app,表示选择具有 app: my-app 标签的 Pod。
  • template 中的 metadata 中的 labels 设置为 app: my-app,表示为 Pod 设置 app: my-app 标签。
  • template 中的 spec 中的 containers 部分定义了容器的规格,包括容器名称、镜像、端口、环境变量等。
  • template 中的 spec 中的 volumes 部分定义了要挂载的卷,这里使用了一个 ConfigMap 类型的卷。
  • template 中的 spec 中的 volumeMounts 部分定义了卷的挂载路径。

您可以使用 kubectl create -f <filename> 命令从 YAML 文件创建资源。例如,kubectl create -f deployment.yaml 将从 deployment.yaml 文件中创建 Deployment 资源。

希望这个示例能够帮助您更好地理解如何使用 YAML 文件创建 Kubernetes 资源。

1.在data节点创建了一些键值:

代码如下(示例):
cat > cmyaml.yml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: game-demo
data:
  player_initial_lives: "3"
  ui_properties_file_name: "tomcat"
  game.properties: |
    enemy.types=aliens,monsters
    player.maximum-lives=5
EOF

kubectl create -f cmyaml.yml 
kubectl get configmaps
kubectl describe configmaps game-demo

在这里插入图片描述

2.解释

上述的 YAML 文件定义了一个名为 game-demo 的 ConfigMap,其中包含了三个键值对:

  • player_initial_lives 的值为 “3”
  • ui_properties_file_name 的值为 “tomcat”
  • game.properties 的值为一个多行文本,包含了两个配置项:enemy.types=aliens,monstersplayer.maximum-lives=5

以下是对每个命令的详细解释:

  1. cat > cmyaml.yml <<EOF:此命令将 YAML 文件的内容输入到 cmyaml.yml 文件中。<<EOF 是一个 shell 的输入重定向符号,表示将输入的内容直到遇到 EOF 为止。

  2. kubectl create -f cmyaml.yml:此命令使用 kubectl 工具创建 ConfigMap。-f 参数指定要创建的资源的 YAML 文件。

  3. kubectl get configmaps:此命令使用 kubectl 工具列出所有的 ConfigMap。

  4. kubectl describe configmaps game-demo:此命令使用 kubectl 工具显示名为 game-demo 的 ConfigMap 的详细信息。

通过执行上述命令,您将创建一个名为 game-demo 的 ConfigMap,并将其添加到 Kubernetes 集群中。然后,您可以使用 kubectl get configmaps 命令查看所有的 ConfigMap,并使用 kubectl describe configmaps game-demo 命令查看特定 ConfigMap 的详细信息。


二.使用命令行创建

要使用命令行创建 ConfigMap,可以使用 kubectl create configmap 命令。下面是一个使用命令行创建 ConfigMap 的示例:

kubectl create configmap my-config --from-literal=ENV_VAR1=value1 --from-literal=ENV_VAR2=value2

在这个示例中,我们使用 kubectl create configmap 命令创建了一个名为 my-config 的 ConfigMap。--from-literal 参数用于指定要添加到 ConfigMap 的键值对。在这里,我们添加了两个键值对 ENV_VAR1=value1ENV_VAR2=value2

要创建一个从文件中读取的 ConfigMap,可以使用 --from-file 参数。例如:

kubectl create configmap my-config --from-file=config.properties

在这个示例中,我们使用 --from-file 参数指定要从文件 config.properties 中读取配置,并创建一个名为 my-config 的 ConfigMap。

要创建一个从目录中读取的 ConfigMap,可以使用 --from-file 参数并指定目录路径。例如:

kubectl create configmap my-config --from-file=configs/

在这个示例中,我们使用 --from-file 参数指定要从目录 configs/ 中读取配置,并创建一个名为 my-config 的 ConfigMap。

希望这个示例能够帮助您更好地理解如何使用命令行创建 ConfigMap。使用命令行创建 ConfigMap 可以更快速和便捷地管理配置数据。

1.创建了一个名为 person 的键值:

代码如下(示例):
kubectl create configmap player  --from-literal=username=player  --from-literal=age=18
kubectl describe configmaps player  

在这里插入图片描述

2.解释

上述命令使用 kubectl 工具创建了一个名为 player 的 ConfigMap,并向其添加了两个键值对。

  • --from-literal=username=player 表示将键 username 的值设置为 player
  • --from-literal=age=18 表示将键 age 的值设置为 18

然后,使用 kubectl describe configmaps player 命令来查看 player ConfigMap 的详细信息。

通过执行上述命令,您将创建一个名为 player 的 ConfigMap,并将其添加到 Kubernetes 集群中。然后,使用 kubectl describe configmaps player 命令可以查看 player ConfigMap 的详细信息,包括它的名称、命名空间、标签、数据等。

3.创建了一个 index.html 文件,然后用–from-file 来引用

代码如下(示例):
echo hello world! > index.html
kubectl create configmap indexcontent --from-file=index.html
kubectl describe configmaps indexcontent

在这里插入图片描述

4.解释

上述命令依次执行以下操作:

  1. echo hello world! > index.html:此命令将字符串 “hello world!” 写入名为 index.html 的文件中。

  2. kubectl create configmap indexcontent --from-file=index.html:此命令使用 kubectl 工具创建一个名为 indexcontent 的 ConfigMap,并将文件 index.html 的内容作为值添加到 ConfigMap 中。--from-file 参数指定要从文件中读取数据。

  3. kubectl describe configmaps indexcontent:此命令使用 kubectl 工具显示名为 indexcontent 的 ConfigMap 的详细信息。

执行上述命令后,您将创建一个名为 indexcontent 的 ConfigMap,并将文件 index.html 的内容添加到 ConfigMap 中。然后,您可以使用 kubectl describe configmaps indexcontent 命令查看 indexcontent ConfigMap 的详细信息,包括其名称、命名空间、标签、数据等。


总结

以上是今天要讲的内容,学到了ConfiigMaps相关用法,使用YAML文件创建,使用命令行创建。

更多推荐

Linux系统编程(信号处理 sigacation函数和sigqueue函数 )

文章目录前言一、sigaction二、sigqueue函数三、代码示例总结前言本篇文章我们来介绍一下sigacation函数和sigqueue函数。一、sigactionsigaction是一个用于设置和检查信号处理程序的函数。它允许我们指定信号的处理方式,包括指定一个函数作为信号处理程序、设置标志位以及指定信号处理程

Linux系统编程(信号处理机制)

文章目录前言一、中断,异常,信号的区别二、信号在Linux中的标识三、信号处理相关函数四、代码实验总结前言本篇文章我们来讲解信号的处理机制,信号处理在Linux操作系统中必不可少,这一点值得大家注意,信号又会与中断,异常一起讨论,那么下面我们就来看看到底什么是信号吧。一、中断,异常,信号的区别中断、异常和信号是计算机系

MAC MINI 2012安装Montery折腾笔记

MACMINI2012安装Montery折腾笔记(作为电视盒子/远程开发机)起因:手头有个macmini,2018年买的2手。一直都是10.12系统,处理python和苹果开发都受制于旧系统,很多软件也装不上,于是有了升级的需求,打算折腾下再战3年直接升级使用因特网恢复系统模式,恢复到最新适配的版本开机时,按Win+A

一些docker笔记

一些docker笔记docker是一个跨平台,可迁移的应用虚拟化,容器化服务平台Docker口号1:Build,ShipandRun(构建,发送和运行)Docker口号2:Buildonce,Runanywhere(构建一次,到处能用)docker一些概念docker仓库官方有dockeHub仓库,也可以使用阿里、网易

Spring Authorization Server入门 (十八) Vue项目使用PKCE模式对接认证服务

Vue单页面项目使用授权码模式对接流程说明以下流程摘抄自官网在本例中为授权代码流程。授权码流程的步骤如下:客户端通过重定向到授权端点来发起OAuth2请求。对于公共客户端,此步骤包括生成code_verifier并计算code_challenge,然后将其作为查询参数发送。如果用户未通过身份验证,授权服务器将重定向到登

PostgreSQL16源码包编译安装

一、安装环境操作系统:CentOSLinuxrelease7.8.2003(Core)PostgreSQL版本:16服务器IP地址:192.168.0.244Firewalld关闭、selinux关闭笔者本次选用最新v16版本进行部署二、pg数据库安装包下载下载地址:https://www.postgresql.org

第八章 排序

一、插入排序不带哨兵voidInsertSort(intA[],intn){inti,j,temp;for(i=1;i<n;i++){if(A[i]<A[i-1]){temp=A[i];for(j=i-1;j>=0&&A[j]>temp;--j){A[j+1]=A[j];}A[j+1]=temp;}}}带哨兵voidI

二分与前缀和

目录🍈前言❤二分🌹二分🌼数的范围🌼数的三次方根🌼特殊数字🌼机器人跳跃问题🌼四平方和🌼分巧克力🌹前缀和🌼前缀和🌼子矩阵的和🌼激光炸弹🌼K倍区间🍈前言❤二分整数二分模板中,一个比较坑的点,就是C++整数向下取整的机制,考虑到这点,你才能写出AC100%的代码关键在于1,对if()后面条件的判断2

SAP CRM 模块:概述,体系结构

前言CRM代表“客户关系管理”,是一组有助于以有组织的方式管理客户关系的方法和工具。在当今竞争激烈的商业环境中,顶级公司的注意力越来越集中于其最有价值的资产–客户。因此,这些公司需要一种合适的软件解决方案来迎合其客户,该解决方案易于使用,易于定制,完全集成并且可以灵活实施。客户关系管理是一种用于优化客户互动的业务策略。

MD5加密算法

1、简介MD5在90年代初由MIT的计算机科学实验室和RSADataSecurityInc发明,经MD2、MD3和MD4发展而来。MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理

编程小白如何学习RPA,0基础学习RPA攻略!

对于编程小白来说,学习RPA(机器人流程自动化)可能会感到有些无从下手。然而,只要按照一定的步骤和策略进行学习,从0开始掌握RPA并非难事。一、了解RPA的基本概念和优势在开始学习RPA之前,首先需要了解RPA的基本概念、特点和优势。RPA是一种使用自动化工具模拟人类在计算机上执行操作的技术,它可以帮助企业实现重复性、

热文推荐