资讯专栏INFORMATION COLUMN

如何使用Helm更新使用ConfigMap的应用程序

lixiang / 971人阅读

摘要:使应用程序的安装和升级更加容易。本文将讨论的一个极妙的技巧如何使用,简单快速地更新那些使用的应用程序。我们假设它是用于运行应用程序的。更改此配置文件后,不要忘了还需要相应地更新,不然的话,那些使用此的应用程序将不会使用更新后的内容。

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的这个小技巧。

https://github.com/kubernetes...

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

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

https://github.com/mrajashree...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32715.html

相关文章

  • 【容器云 UK8S】应用商店:安装应用和管理应用

    摘要:更新商店信息查询应用安装商店应用安装商店应用执行了安装商店应用的命令后,我们看到了系统返回给我们了安装的详细信息。安装应用安装商店应用按照前文helm工具已经安装完成,接下来通过helm客户端在kubernetes集群中创建一个应用,执行安装前最好先进行应用商店的同步,以获得最新的应用信息。#更新商店信息 helm repo update #查询tomcat应用 helm search to...

    Tecode 评论0 收藏0
  • K8S 生态周报| 2019-07-01~2019-07-07

    摘要:生态周报内容主要包含我所接触到的生态相关的每周值得推荐的一些信息。本次的发布周期一如往常,本月底增强功能冻结,下月底代码冻结,月初完善文档,计划在月中发布版本。发布本周发布了版本,近期的开发还是比较活跃的。 「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Kubernetes v1.16 发布周期开始 随着前段时...

    booster 评论0 收藏0
  • 乐心医疗 Kubernetes云平台建设实践

    摘要:宋体自年被开源以来,很快便成为了容器编排领域的标准。宋体年月,乐心医疗的第一个生产用集群正式上线。所以于年推出后,乐心医疗的运维团队在开会讨论之后一致决定尽快迁移到。Kubernetes 自 2014 年被 Google 开源以来,很快便成为了容器编排领域的标准。因其支持自动化部署、大规模可伸缩和容器化管理等天然优势,已经被广泛接纳。但由于 Kubernetes 本身的复杂性,也让很多企业的...

    testHs 评论0 收藏0
  • Kubernetes 1.2 新功能解析:ConfigMap (下)

    摘要:的工作就是为作出的修改查看我们的配置文件,并且运行读取配置文件的新版本回调函数,使用设置新的。它的目标是使任意额外的成为一个单独更新的,这样我们只要执行一次回调函数。 Kubernetes 1.2版本添加了一个叫ConfigMap的新功能。这个功能提供给容器注入应用程序数据的方式。注入配置文件对于大部分应用程序来说很强大,但是新的ConfigMap功能不仅可以在容器开启时提供初始配置功...

    Blackjun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<