博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用Helm更新使用ConfigMap的应用程序
阅读量:6242 次
发布时间:2019-06-22

本文共 1756 字,大约阅读时间需要 5 分钟。

hot3.png

Helm的小小黑科技,让你简单快速地更新那些使用ConfigMap的应用程序。随时随心更改配置文件内容,而应用程序将实时根据变化而更新~

文内有逐步的步骤详解,还有打包好的helm chart供你使用哟!


Helm让Kubernetes应用程序的管理工作变得毫不费力。Helm Charts使Kubernetes应用程序的安装和升级更加容易。本文将讨论Helm的一个极妙的技巧:如何使用Helm,简单快速地更新那些使用ConfigMap的应用程序。

更新部署

上图的示例就是一个部署的配置文件。我们假设它是用于运行应用程序的。您可以在spec.template部分下指定pod模板。现在,如果您想更新应用程序,则必须从此spec.template部分更改内容。这意味着,容器镜像更改之后,部署将更新,但spec.replicas不会发生任何改变。

更新使用ConfigMap的部署

某些应用需要某些特定的配置文件和值,我们不建议将这些配置文件或配置值打包进容器镜像中,因为如果这么做的话,那每次配置文件发生更改时,都必须重新创建容器镜像。而Kubernetes提供了一种管理配置文件/值的好方法——使用ConfigMap资源。

有两种方法可以将ConfigMap数据暴露给一个pod:

  • Env vars

  • Volume mounts

下面我们将重点关注暴露ConfigMap的卷挂载方式。

我创建了一个非常简单的chart作为例子来讨论这个问题。在这个chart中,我有一个如下的ConfigMap的配置文件:

如您所见,ConfigMap的名称是nginx-cm,一个名为default.conf的文件正在读取其数据。这个default.conf是一个nginx配置文件。

现在我想为我的应用程序使用这个ConfigMap nginx-cm。所以我将通过我的应用程序的部署的配置文件中的Volume Mounts来暴露它。

如上面的示例,我们需要在【volumes】部分下添加ConfigMap,并为其指定一个唯一的名称(config-volume,如示例中所示)。然后,我们需要将这个卷添加到【containers】部分下的卷挂载中。volumeMounts.mountPath字段是容器中可供容器使用的配置文件的确切位置。

因此,使用这些配置文件,我们就可以运行使用ConfigMap提供的nginx配置文件内容的应用程序了。

下面我们需要更改nginx配置文件。更改此配置文件后,不要忘了还需要相应地更新ConfigMap,不然的话,那些使用此ConfigMap的应用程序将不会使用更新后的内容。

我们当然也可以使用kubectl update命令来更新ConfigMap。按理说,同样的,接下来我们应该更新部署。那么,kubectl update命令可以用来更新部署吗?

在我尝试这么做的时候,我收到了下面这条消息:

这是因为即使在更新ConfigMap资源之后,部署的spec.template部分也没有更改。即使ConfigMap的数据部分发生了变化,但这并没有引起部署spec.template的任何变化。对此的一种解决方法,是删除这一部署所管理的所有pod,之后部署就会创建新的pod,这些新pod使用的就是更新后的configMap了。

但我不太喜欢这种方法,因为你必须手动删除所有的pod,正因为如此我才开始寻找更好的解决方案,也就是本文所说的Helm的这个小技巧。

正如你在注释中看到的那样, 你可以提供configmap文件的路径,并将其传递给sha256 sum函数。这样一来,每次configmap文件发生更改时,注释部分也会得到相应的更新,进而更新部署的spec.template部分。我发现这一招非常妙,因为如此一来,你就可以经常更改您的配置文件内容了。因为这个诀窍,Helm能够确保你的应用程序将一直及时地反映这些变化。

我已经做好了一个Helm chart放在GitHub上,你可以自行下载使用,体验一下我在本文中分享的这个窍门~ 相信你一定也会发现它对你的应用程序非常有用:

转载于:https://my.oschina.net/u/3330830/blog/1863125

你可能感兴趣的文章
苹果App Store审核指南中文翻译(更新至140227)
查看>>
转 -- OK6410 tftp下载内核、文件系统以及nand flash地址相关整理、总结
查看>>
原来对MFC一无所知
查看>>
Java程序员看C++代码
查看>>
python处理Excel - xlrd xlwr openpyxl
查看>>
JS实现的购物车
查看>>
bzoj 3998 [TJOI2015]弦论——后缀自动机
查看>>
STL 的 vector 根据元素的值来删除元素的方法
查看>>
NOI2002银河英雄传说——带权并查集
查看>>
复合数据类型,英文词频统计
查看>>
“main cannot be resolved or is not a field”解决方案
查看>>
oc中使用switch实现图片浏览功能,补充其它的实现方式
查看>>
6、DRN-----深度强化学习在新闻推荐上的应用
查看>>
用父类指针指向子类对象
查看>>
Flexigrid默认是可以选择多行
查看>>
PHP导入导出Excel方法小结
查看>>
ZOJ 3870 Team Formation 位运算 位异或用与运算做的
查看>>
清除浮动float的方法
查看>>
java学习第十二天
查看>>
1 Kubernetes管理之master和Node
查看>>