首页 > 其他分享 >k8s subpath解决加载配置覆盖原目录问题,configmap与secret热更新

k8s subpath解决加载配置覆盖原目录问题,configmap与secret热更新

时间:2024-05-29 16:45:53浏览次数:10  
标签:configmap name 容器 subpath nginx secret conf 挂载

问题:传统上直接挂载会直接覆盖原目录

问题还原

挂载配置

 重启容器挂了

 进入容器查看

文件不见了,只剩下挂载文件了,目录被覆盖了

问题解决

subpath:

1、当挂载目录存在多个文件,不会覆盖所有文件;

2、挂载单个文件而不是整个目录。

修改配置

subpath热更新问题:

1. cm或secret以subpath挂载,那么它们是不 会感知configmap或secret的更新;

2. 变量内容也不会感知,不会更新pod中的变量。

解决思路:

可以把这个步骤放到初始化容器完成

要确保在nginx进程启动之前完成软链接,不然加载不上

具体的执行顺序如下:

  1. 容器启动
  2. postStart 钩子执行,创建软链接 /mnt/nginx.conf -> /usr/local/nginx/conf/
  3. Nginx 进程启动,加载配置文件 /usr/local/nginx/conf/nginx.conf

将configmap或secret挂载到其他目录,然后在容器启动前执行命令,做软连接至需要挂载的目录。

postStart:  # 容器启动前执行命令
    exec:
      command: [ "/bin/sh", "-c", "ln -sv /mnt/nginx.conf /usr/local/nginx/conf/" ]

 清单

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-config
          mountPath: /mnt
          subPath: nginx.conf
        lifecycle:
          postStart:
            exec:
              command: ["/bin/sh", "-c", "ln -sv /mnt/nginx.conf /usr/local/nginx/conf/"]
      volumes:
      - name: nginx-config
        configMap:
          name: nginx-config

 

热更新

验证自动同步功能

修改configmap 文件value

 可以看到已同步到容器内

当configmap配置文件发生修改后,虽然容器内应用服务的配置文件发生了改变,还得重新启动服务使配置文件生效

   验证

 

标签:configmap,name,容器,subpath,nginx,secret,conf,挂载
From: https://www.cnblogs.com/rtnb/p/18220605

相关文章

  • Jenkins学习(三)--Secret
    一、JenkinsSecret的操作方法①启动Jenkins后进入仪表板中的系统管理,选择凭据管理②点击已经可用的全球商店,单击全局凭据,然后单击添加凭据。③类型选择为Secret,范围选择全局,在Secret处粘贴从postman处复制的api密钥(不知道密钥怎么获取可以参考前面的Jenkins文章),id自定......
  • appKey&appSecret 加密验签算法
    加密方式请求参数依次从a-z排列然后拼接后加入加密app_secret然后MD5加密即可得到签名字符串PHP示例privatestaticfunctiongenerateSign($params,$appSecret){ksort($params);$str='';foreach($paramsas$key=>$value){......
  • HNCTF-MISC-secret
    看到是图片,我一般会去010看看发现数据异常?kali启动发现藏了一个压缩包分离喽压缩包里面存放着flag文件打开发现没有当时就没有什么办法了然后我放在了物理机上发现有129个字符,与文本上的字符不匹配用vim打开哦呦,有隐写呦这就会联想到是零宽度字符的......
  • Kubernetes-ConfigMap详解
    简介:一、ComfigMap的创建1.使用目录创建2.使用文件创建3.使用命令行创建二、Pod中使用ConfigMap1.使用ConfigMap代替环境变量2.使用ConfigMap设置命令行参数3.使用ConfigMap用做数据卷插件三、ConfigMap的热更新简介:ConfigMap功能在Kubernetes1.2版本中引入,许......
  • k8s——configmap-secret-nginx实验
    简介configmapsecret一、实验环境二、实验描述三、实验1:步骤1.使用configmap投射到nginx.conf配置文件到pod里1.1需要准备nginx.conf配置文件1.2将nginx.conf内容存放到configmap里(通过文件的方式,,这样简单一点)1.3启动ngnix的pod,使用configmap里的nginx.conf配置文件2.......
  • P3612 [USACO17JAN] Secret Cow Code S
    题目:P3612[USACO17JAN]SecretCowCodeS题面翻译奶牛正在试验秘密代码,并设计了一种方法来创建一个无限长的字符串作为其代码的一部分使用。给定一个字符串,对字符串进行一次操作(每一次正确的操作,最后一个字符都会成为新的第一个字符),然后把操作后的字符串放到操作前的字符串的......
  • P2922 [USACO08DEC] Secret Message G
    原题链接题解1.这个前缀长度必须等于暗号和那条信息长度的较小者,因此,找出信息是暗号的前缀的信息和暗号是信息的前缀的信息code#include<bits/stdc++.h>usingnamespacestd;inttree[500005][2]={0};intjg[500005]={0};intjs[500005]={0};intmain(){intm,n......
  • python secrets 模块
    secrets说明secrets模块用于生成高度加密的随机数,适于管理密码、账户验证、安全凭据及机密数据。生成随机数secrets模块是操作系统提供的最安全地随机性来源。choice(sequence)从非空序列中返回一个安全的随机元素。importsecrets#假设我们有一个元素列表elements=......
  • 52 Things: Number 19: The Shamir secret sharing scheme.
    52Things:Number19:TheShamirsecretsharingscheme.52件事:第19件:沙米尔秘密共享计划。 Thisisthelatestinaseriesofblogpoststoaddressthelistof '52ThingsEveryPhDStudentShouldKnow' todoCryptography:asetofquestionscompiledtogi......
  • ConfigMap 多种使用方法
    介绍ConfigMap是Kubernetes中的一种资源对象,用于存储非敏感的配置数据,例如键值对、环境变量、配置文件等。它提供了一种将配置数据与应用程序解耦的方式,使得应用程序可以更灵活地部署和管理。注意:ConfigMap在设计上不是用来保存大量数据的。在ConfigMap中保存的数据......