使用 ConfigMap 挂载配置文件

使用 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 中加载的


640?wx_fmt=png

Reference

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

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


640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SciSharpCube:容器中的SciSharp,.NET机器学习开箱即用

SciSharp Cube在Docker容器中快速体验SciSharp机器学习工具的最新功能。项目地址(原文链接)&#xff1a;https://github.com/SciSharp/SciSharpCube从Docker Hub运行docker run --name scisharp -it -p 8888:8888 scisharpstack/scisharpcube这条命令会拉取最新的SciSharpCube镜…

.NET Core 3中的性能提升(译文)

回顾我们准备推出.NET Core 2.0的时候&#xff0c;我写了一篇博文来介绍.NET已经引入的诸多性能优化中的一部分&#xff0c;我很喜欢把它们放在一起讲述&#xff0c;也收获了很多正面反馈&#xff0c;因此我又给.NET Core 2.1&#xff0c;一个同样高度聚焦于性能的版本&#xf…

程序员修神之路--高并发下为什么更喜欢进程内缓存

菜菜哥&#xff0c;告诉你一个好消息YY妹子&#xff0c;什么好消息&#xff0c;你有男票了&#xff1f;不是啦&#xff0c;我做的一个网站&#xff0c;以前经常由于访问量太大而崩溃&#xff0c;现在我加上了缓存&#xff0c;很稳定啦加的什么缓存呢&#xff1f;我用的redis&am…

6月数据库排行:PostgreSQL和MongoDB分数罕见下降

DB-Engines 数据库流行度排行榜 6 月更新已发布&#xff0c;排名前二十如下&#xff1a;总体排名和上个月相比基本一致&#xff0c;其中排名前三的 Oracle、MySQL 和 Microsoft SQL Server 也是分数增加最多的三个数据库&#xff0c;增加的分数分别为 13.67、4.67 和 15.57&…

在ASP.Net Core 中使用枚举类而不是枚举

前言&#xff1a;我相信大家在编写代码时经常会遇到各种状态值&#xff0c;而且为了避免硬编码和代码中出现魔法数&#xff0c;通常我们都会定义一个枚举&#xff0c;来表示各种状态值&#xff0c;直到我看到Java中这样使用枚举&#xff0c;我再想C# 中可不可以这样写&#xff…

ASP.NET Core 中的错误处理

1.前言ASP.NET Core处理错误环境区分为两种&#xff1a;开发环境和非开发环境。●开发环境&#xff1a;开发人员异常页。●非开发环境&#xff1a;异常处理程序页、状态代码页。在Startup.Configure方法里面我们会看到如下代码&#xff1a;env.IsDevelopment()是判断应用程序运…

ASP.NET Core SameSite 设置引起 Cookie 在 QQ 浏览器中不起作用

最近在发布了基于 ASP.NET Core 实现的新版登录页面之后&#xff0c;陆陆续续地接到用户反馈登录时 Antiforgery Token 总是验证失败。日志中记录的对应错误是今天在 QQ 浏览器中将内核模式设置为“总是使用 IE 内核”重现了问题&#xff0c;通过浏览器的开发者工具查看 cookie…

ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识

问题引入&#xff1a;我们知道当请求通过认证模块时&#xff0c;会给当前的HttpContext赋予当前用户身份标识&#xff0c;我们在需要授权的控制器中打上[Authorize]授权标签&#xff0c;就可以在ControllerBase的User属性获取到基于声明的权限标识(ClaimsPrincipal)。遗憾的是这…

怎样学习和阅读技术书籍?

技术的更新换代非常的迅速&#xff0c;作为一个技术人&#xff0c;需要持续不断地学习才能不被淘汰。但是学习没有速成的方法&#xff0c;只可能有一些技巧让我们事半功倍&#xff0c;本文是我对学习和读书的一点思考。学习是一件「逆人性」的事&#xff0c;如果让你选择是学习…

52ABP和ABP的关系

52ABP和ABP的关系本文作者&#xff1a;52ABP开发团队 文章会随着版本进行更新&#xff0c;关注我们获取最新版本 本文出处&#xff1a;https://www.52abp.com/wiki/common/latest 源代码&#xff1a; https://www.github.com/52abp 52ABP和ABP的关系ASP.NET Boilerplate是一个开…

【译】C#9的候选功能

通往C# 9 的漫长道路已经开始了&#xff0c;这是世界上第一篇关于C# 9候选功能的文章。阅读完本文后&#xff0c;你将希望为将来遇到新的C#挑战做好充分准备。 这篇文章基于&#xff1a;C#语言版本计划 9.0 候选功能基于记录和模式匹配的表达式我一直在长时间等待这个功能。记录…

AKS开讲啦! | DevOps with AKS

上周小Phippy搬到了Kube船长船上的Pods里&#xff0c;感觉好极了&#xff0c;那今天我们继续看看Phippy的兴趣爱好哦。探索Kube船上的世界上篇&#xff08;点击回顾&#xff09;小Phippy 搬到了船上的Pods里&#xff0c;感受到了回家般的舒适感&#xff0c;小Phippy希望能发挥一…

把文件隐藏在图片中

一、前言有的时候我们需要把文件给隐藏起来&#xff0c;但是Windows自带的隐藏方式还是很容易被发现的。这时候我们可以选择把文件放在网盘&#xff0c;但这毕竟需要网络。不过&#xff0c;我们可以通过Windows自带的功能&#xff0c;把文件隐藏在图片中。是不是有一种大隐隐于…

.NetCore下使用Polly结合IHttpClientFactory实现聚合服务

在使用微服务的过程中经常会遇到这样的情况&#xff0c;就目前我遇到的问题做下分析情况一&#xff1a;这里服务对于前后端分离情况来说&#xff0c;多使用查询服务&#xff0c;前端直接获取不同服务的数据展示&#xff0c;如果出现其中的服务失败&#xff0c;对业务数据无影响…

你需要了解的有关.NET日期时间的必要信息

引言DateTime数据类型是一个复杂的问题&#xff0c;复杂到足以让你在编写【将日期从Web服务器返回到浏览器】简单代码时感到困惑。ASP.NET MVC 5和 Web API 2/ASP.NETCore 以不同方式序列化日期&#xff0c;这可能会给在一个Web应用程序中同时使用这两个序列化的开发人员带来更…

只需3步,即可将你的Chromium Edge 浏览器设置成中文

最近&#xff0c;Chromium Edge 浏览器推出了添加语言包的功能&#xff0c;于是我们可以轻松将其界面设置成中文的。第1步: 升级浏览器到最新版在Chromium Edge 浏览器的地址栏中输入:edge://settings/help稍等片刻&#xff0c;浏览器会自行升级到最新版。第2步: 将Language se…

【北京】线下活动 | Azure SQL Database Managed Instance发布会

6/12/2019 | 8.30 AM - 1.30 PM微软大厦一号楼一层故宫会议室N丹棱街5号 海淀区 北京市S尊敬的客户感谢您一直以来对微软的支持&#xff01;诚挚地邀请您参加微软Azure SQL Database Managed Instance &#xff08;SQL Database托管实例&#xff09;在中国北京的发布会。SQL Da…

ASP.Net Core MVC 发生二次请求

Bug回忆录昨天搭建新框架的时候&#xff0c;遇到一个很奇怪的“Bug”&#xff0c;每次请求都会触发两次Aciton&#xff0c;举例子吧&#xff0c;Demo&#xff1a;_Layout.cshtmlHomeControllerIndex.cshtml<h1>Hi, Im index page.</h1>最简单不过的代码&#xff0c…

DDD战略设计相关核心概念的理解

前言本文想再讨论一下关于领域、业务、业务模型、解决方案、BC、领域模型、微服务这些概念的含义和关系。初衷是我发现现在DDD领域建模以及解决方案落地过程中&#xff0c;常常对这些概念理解不清楚或者有歧义&#xff0c;导致我们不知道如何运用这些概念来落地我们的软件。领域…

Visual Studio容器项目工程化心得

引言  关注博主的网友会看到我使用ASP.NET Core 容器化部署企业级项目的过程&#xff0c; 回想到开发过程中&#xff0c;鄙人有一些工程化心得&#xff0c; 分享给同学们。项目工程化因为本项目涉及单元测试Project、容器化部署、本地化的sqlite数据库&#xff0c;nlog日志&a…