使用 ConfigMap 挂载配置文件

Intro

有一些敏感信息比如数据库连接字符串之类的出于安全考虑,这些敏感信息保存在了 AzureKeyVault 中,最近应用上了 k8s 部署,所以想把 AzureKeyVault 的信息迁移到 ConfigMap,不再依赖 AzureKeyVault

ConfigMap

新建一个 ConfigMap,你可以从文件创建,如何创建ConfigMap 可以参考官方文档,也可以直接手动编辑,这里用的 ConfigMap 如下所示:

apiVersion: v1
kind: ConfigMap
metadata:   name: reservation-configs   namespace: default
data:   appsettings: |  {       "ConnectionStrings": {    "Redis": "redis-server",    "Reservation": "Server=localhost;uid=liweihan;pwd=**;database=Reservation", "ElasticSearch": "elasticsearch"    },  "MpWechat":{  "AppId": "wx4a41d3773ae55543",  "AppSecret": "**********",  "Token": "AmazingDotNet",   "AESKey": "------------"    },  "AppSettings": {  "WechatSubscribeReply": "", "SentryClientKey": "https://**" },  "Tencent": {  "Captcha": {  "AppId": "2062135016",  "AppSecret": "****" }   },  "GoogleRecaptcha": {  "SiteKey": "6Lc-**",    "Secret": "6Lc-**"  },  "Logging": {  "LogLevel": { "Default": "Warning",   "ActivityReservation": "Debug", "RequestLog": "Debug"   }   }   }

挂载 ConfigMap 中的配置文件到 Pod

Deployment 定义如下所示, 这里直接把上面定义的 appsettings 直接挂载为应用程序的根目录下 appsettings.json 文件

  1. apiVersion: apps/v1

  2. kind: Deployment

  3. metadata:

  4. name: activityreservation

  5. namespace: default

  6. labels:

  7. app: activityreservation

  8. spec:

  9. replicas: 2

  10. revisionHistoryLimit: 2 # how many old ReplicaSets for this Deployment you want to retain, https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy

  11. selector:

  12. matchLabels:

  13. app: activityreservation

  14. minReadySeconds: 0

  15. strategy:

  16. type: RollingUpdate

  17. rollingUpdate:

  18. maxUnavailable: 1

  19. maxSurge: 1

  20. template:

  21. metadata:

  22. labels:

  23. app: activityreservation

  24. spec:

  25. dnsConfig:

  26. options:

  27. - name: ndots

  28. value: "1"

  29. containers:

  30. - name: activityreservation

  31. image: weihanli/activityreservation:20190529.2

  32. imagePullPolicy: IfNotPresent

  33. resources:

  34. limits:

  35. memory: "256Mi"

  36. cpu: "300m"

  37. readinessProbe:

  38. tcpSocket:

  39. port: 80

  40. initialDelaySeconds: 60

  41. periodSeconds: 30

  42. livenessProbe:

  43. httpGet:

  44. path: /Health

  45. port: 80

  46. initialDelaySeconds: 60

  47. periodSeconds: 60

  48. ports:

  49. - containerPort: 80

  50. volumeMounts:

  51. - name: settings

  52. mountPath: /app/appsettings.json

  53. subPath: appsettings

  54. volumes:

  55. - name: settings

  56. configMap:

  57. name: reservation-configs

测试

1. 部署 ConfigMap

  1. kubectl apply -f ConfigMap.yaml

2. 部署 deployment

  1. kubectl apply -f reservation-deployment.yaml

3. 等待 pod 启动之后,查看 appsettings.json 文件内容是否成功被替换掉

获取对应的 pod 名称,然后通过 kubectlexec<pod-name>cat/app/appsettings.json 来获取pod中 appsettings.json 文件的内容

出现 ConnectionStrings 就证明文件被替换掉了,原始的配置文件里是没有 ConnectionStrings 节点的,原始的方式是通过从 AzureKeyVault 中加载的

Reference

  • https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#understanding-configmaps-and-pods

  • https://github.com/WeihanLi/ActivityReservation


使用 ConfigMap 挂载配置文件相关推荐

  1. 【K8S实战系列-nignx-2】k8s中configmap挂载配置nginx.conf

    [K8S实战系统-nignx-2]k8s中configmap挂载配置nginx.conf 1. ConfigMap是什么 ConfigMap作用是存储不加密的数据到etcd中,让Pod以变量或数据卷V ...

  2. K8S configmap挂载文件

    新建configmap: apiVersion: v1 kind: ConfigMap metadata:name: front-confnamespace: tsp data:baseUrl.js: ...

  3. docker安装mysql并挂载配置文件和修改密码

    docker安装mysql并挂载配置文件和修改密码 docker从仓库中拉取最新版的mysql镜像,如果没加标签的话,默认获取最新的版本 docker pull mysql docker pull m ...

  4. 【云原生】 初体验阿里云Serverless应用引擎SAE(三),挂载配置文件使应用的配置和运行的镜像解耦

    目录 一.前言 二.SAE配置 1.创建配置项 2.配置SAE Nginx服务 效果 1.[云原生] 初体验阿里云Serverless应用引擎SAE(一),部署Nginx服务 2.[云原生] 初体验阿 ...

  5. 使用 k8s 搭建 confluence 6.10.x 版本

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  6. SftpGo:一款高性能的sftp server服务

    SftpGo是一款高性能.功能齐全.易用可配置的一款sftp server 服务,基于go开发.目前在linux.macos下均可以稳定运行(windows个人未测试).数据可以持久化到主流的数据库, ...

  7. prometheus监控java应用的jvm指标

    在k8s环境中我们有很多的java应用,需要监控其性能我们可以通过集成jmx的客户端,然后通过promethues的自动发现来实现监控数据的获取. promethues的部署he相关配置可参考:pro ...

  8. 运维(34) K8s使用

    文章目录 一.前言 二.资源创建 1.命令行 2.配置文件 3.可视化界面 三.命名空间 1.命令行 2.配置文件 四.Pod 1.命令行 2.配置文件 3.`Kubernetes Dashboard ...

  9. K8s平台部署企业级项目案例

    目录 1.架构图 2.部署一个java网站项目实践 2.1 编译java 2.2.构建与上传镜像 2.3.k8s中部署项目 访问 3.资源配置 3.2.加入配置文件挂载 4.部署数据库并连接 恢复数据 ...

最新文章

  1. vue 加载页面时触发时间_解析Vue项目的四个方面优化
  2. sqlite数据库的多线程访问问题
  3. mysql 多个游标_mysql 存储过程中使用多游标
  4. 解决oracle连接很慢问题
  5. Windows Server 2012改造成Windows8的方法(转载)
  6. FreeMarker整合Spring 3
  7. 用StyleCop规范团队代码
  8. Ireport制作过程
  9. 周五14点直播丨数据库大咖讲坛(第6期):数据库性能优化技巧与最佳实践
  10. Android 开发之旅:深入分析布局文件又是“Hello World!”
  11. 为PHP开发搭建环境
  12. java web后台开发规范01
  13. Velocity常用语法
  14. iphone11各机型对比_9款旗舰系统对比 iPhone 11居然不是最好用的
  15. tomcat日志格式转化为json
  16. 分享四个体验不错的云游戏平台—网易云游戏、腾讯云游戏、菜鸡云游戏、格莱云游戏
  17. 搭建 Mellanox ConnectX-3 EN 10/40 Gbps 网卡 DPDK 运行环境
  18. EBS系统的启动及关闭
  19. Stunnel 的用法
  20. 【Javaee毕业设计】基于JAVA_JSP电子书下载系统

热门文章

  1. jq html 多一个引号,为什么jQuery模板会为某些字符串添加双引号
  2. PIE SDK与OpenCV结合说明文档
  3. mysql经典的8小时问题-wait_timeout
  4. 免去架构算法调优,如何让你的系统风驰电掣?|图说
  5. 曾鸣:未来十年,将确定智能商业的格局|干货
  6. 常用的加密算法---数字摘要
  7. OpenSSL--Window生成证书实战
  8. AngularJS快速入门指南09:SQL
  9. [原创]互联网金融App测试介绍
  10. MYSQL技术连环斩-MYSQL简述