Kubernetes之ConfigMap配置

1、简介

ConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的。

核心用途就是容器和配置的分离解耦

        如启用一个redis容器,redis容器重要的文件有两部分,一部分为存储数据文件,一部分为配置文件redis.conf,存储数据可以用持久存储实现和容器的分离解耦,配置文件也能够实现和容器的分离解耦,也就是说redis容器能够直接读取并使用预先配置好的配置文件(而不是使用容器中默认自带的配置文件).这就是configMap的功能。

        ConfigMap 用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。ConfigMap 跟 secret 很类似,但它可以更方便地处理不包含敏感信息的字符串。


 2、案例之使用configMap挂载redis的配置信息

2.1、编写configmap.yaml文件,内容如下:

apiVersion: v1
kind: Namespace
metadata:
  name: dev

---

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap
  namespace: dev
data:
  redis.conf: | #这里是redis.conf中的内容
    appendonly yes

执行上面的yaml文件

[root@k8s-master ~]# kubectl apply -f configmap.yaml
namespace/dev created
configmap/configmap created
[root@k8s-master ~]#

 由上可以看到已经创建成功

 2.2、下面我们创建Deployment文件来定义redis相关信息,redis.yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-redis
  namespace: dev
spec:
  replicas: 3
  selector:
    matchLabels:
      run: deploy-redis # 通过这里和下面的标签建立关系
  template:
    metadata:
      labels:
        run: deploy-redis  # 被选择
    spec:
      containers:
      - name: deploy-redis
        image: redis:6.2.6 # 直接拉取指定版本的redis镜像    
        command: # 这个是定义容器内部的启动命令
          - redis-server
          - "/redis-master/redis.conf"  # 指的是redis容器内部的位置
        ports:
        - containerPort: 6379
          protocol: TCP
        volumeMounts: # 下面定义了两个挂载
          - mountPath: /data
            name: data
          - mountPath: /redis-master
            name: config   
      volumes:
        - name: data
          emptyDir: {} # 为data挂载一个空目录
        - name: config
          configMap: # 类型是configmap
            name: configmap # 名称是之前创建的configmap的名称
            items:
            - key: redis.conf # 这个key是上面configmap中data下定义的key值
              path: redis.conf # 这个是容器内部关联的文件名称              

执行redis.yaml文件:

kubectl apply -f redis.yaml

查看状态:

由上可知已经启动了

2.3、下面我们进入redis的容器查看我们的配置是否已经生效

 可以看到已经生效

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes 中使用 ConfigMap 进行配置管理对于 Spring Boot 应用来说是一种常见的做法。下面是一个简单的示例,演示了如何在 Spring Boot 应用中使用 ConfigMap 进行配置。 首先,需要在 Kubernetes 中创建一个 ConfigMap 对象,其中包含了应用所需的配置信息。可以通过以下命令创建一个 ConfigMap: ``` kubectl create configmap my-config --from-literal=app.url=http://example.com --from-literal=app.port=8080 ``` 上述命令创建了一个名为 `my-config` 的 ConfigMap,并将 `app.url` 和 `app.port` 两个属性设置为相应的值。 接下来,在 Spring Boot 应用的 `application.properties`(或 `application.yml`)文件中,可以通过以下方式引用 ConfigMap 中的配置: ``` app.url=${APP_URL} app.port=${APP_PORT} ``` 在上述示例中,`${APP_URL}` 和 `${APP_PORT}` 分别对应于 ConfigMap 中的 `app.url` 和 `app.port` 属性。 最后,在部署 Spring Boot 应用的 Kubernetes Deployment 配置文件中,需要将 ConfigMap 挂载到容器中,并将其作为环境变量注入到应用中。例如: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 1 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app-container image: my-app-image ports: - containerPort: 8080 env: - name: APP_URL valueFrom: configMapKeyRef: name: my-config key: app.url - name: APP_PORT valueFrom: configMapKeyRef: name: my-config key: app.port ``` 上述配置文件中,通过 `env` 配置ConfigMap 中的属性值注入到容器的环境变量中,使得 Spring Boot 应用能够读取到正确的配置。 这样,当部署 Spring Boot 应用到 Kubernetes 中时,它将使用 ConfigMap 中定义的配置信息。如果需要更新配置,只需更新 ConfigMap 对象即可,无需重新构建和部署应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值