helm安装postgres_Helm 入门介绍 Kubernetes 上的包管理软件

这篇文章介绍一下云原生应用在 Kubernetes 上安装时,经常会用到的一个重要工具,Helm。

Helm 是 Kubernetes 的包管理软件。提到包管理软件,很多人都不陌生。Maven、Gradle、pip、RubyGems 和 npm 都是包管理软件。

作为一个包管理软件,核心是包和管理两个部分。


Helm Chart

第一个部分的要点是 Helm 的包中都包含什么?

我们都知道,Kubernetes 采用的是声明式的资源管理。以 YAML 文件的形式来声明资源的期望状态,而 Kubernetes 会确保资源的实际状态,满足声明所描述的期望。

比如,一个 Deployment 只需要声明 Pod 的数量即可,而不用去管运行时 Pod 可能会出现的由于 Pod 失败导致的 Pod 被重新创建等细节。

在部署一个应用到 Kubernetes 时,可能会需要声明多种不同的资源。比如,在安装 Postgres 时,我们可能会需要如下资源:

  • 实际运行 Postgres 的 Deployment 或 StatefulSet。

  • 允许其他应用访问的 Service。

  • 数据存储需要的 PersistenceVolumeClaim 或 PersitenceVolume。

  • 保存数据库配置的 ConfigMap。

  • 保存数据库密码的 Secret。

所有这些资源声明组成了应用的安装包,Helm 称之为 Chart。

使用软件包的一个重要目的是为了共享。Helm Chart 中的资源定义是通过模板生成的,包含了很多可以在安装时进行配置的选项。以Postgres来说,你可能会需要配置数据库的访问密码、存储空间的大小和数据库的初始化脚本等。

把Helm Chart与安装时的配置项结合起来,就得到了一个特定的release。

以Postgres Chart为例,我们可以创建对应于开发、测试和生产环境的3个不同的release。每个release基于同样的Chart,但是配置不同。配置项通常以YAML文件的形式来保存,也可以在命令行传递。

下面给出了的配置文件,对应于 Postgres 在开发环境上的release。

postgresqlUsername: dev
postgresqlPassword: password
persistence:
enabled: false

通过 helm install 命令可以安装Chart。在安装时需要指定Chart的名称、release的名称和配置文件。配置文件使用 -f 参数来传递,也可以使用 --set 来设置单个配置项的值。

下面的代码使用默认的配置来安装 Nginx。

helm install nginx bitnami/nginx

Release管理

之前说的是包的部分,下面介绍 Helm 对包的管理。每个 Helm Chart 有两个版本号,一个是所安装的应用的版本号,比如 Postgres 的版本号;另外一个是 Chart 自身的版本。使用语义化的版本号,可以保证应用的有序升级。

当创建了release之后,Helm可以对release进行管理,包括升级、回退和删除。对release的更新会产生不同的版本。比如,在首次安装了Nginx之后,release的版本为 1。可以通过 helm list 命令来查看。

之后我们接到一个需求,要求启用Nginx与Prometheus的集成功能。只需要使用 helm upgrade 命令更新当前的release,传递一个新的配置项 metrics.enable=true 即可。当更新完成之后,release的版本为 2

helm upgrade --set metrics.enable=true nginx bitnami/nginx

如果发现之前的更新产生了问题,可以通过 helm rollback 命令,回退到版本 1。需要注意的是,在执行 helm rollback 命令之后,release的版本号实际上变成了 3。可以使用 helm history 命令来查看release的全部版本历史记录。

bd86ed0995075fe934455c5e501ddefe.png

在每次更新之前,还可以通过 helm diff 来查看新改动与当前release版本的差异。

helm diff upgrade --set metrics.enabled=true nginx bitnami/nginx

下面给出了 helm diff 命令的输出结果的示例。

71da85a9784d5ed5848235bc8c99b770.png

当需要在Kubernetes上安装软件时,第一个选项是从 ArtifactHub 上查找,看是否已经有别人贡献的Chart。这样可以极大的降低开发的成本。比如,我之前安装 Postgres 和Nginx使用的都是 Bitnami 维护的Chart。

对于内部项目的应用,只能自己开发 Chart。我将在下一篇文章中介绍 Helm Chart 的开发。

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

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

相关文章

flutter 分割线_Flutter 底部弹框 showModalBottomSheet 使用Demo

题记—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精。Flutter是谷歌推出的最新的移动开发框架。【x1】微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注【x2】各种系列的视频教程 免费开源 关注 你不会迷路【x3】系…

python迭代器和for循环区别_python迭代器和for循环区别

迭代器(iterator):迭代器对象必须同时实现__iter__和__next__方法才是迭代器。对于迭代器来说,__iter__ 返回的是它自身 self,__next__ 则是返回迭代器中的下一个值,最后没有元素时,抛出异常(异常可以被开发者看到)。1.迭代器一定是可迭代对象…

python中代理模式分为几种_通俗 Python 设计模式——代理模式

今天来说一说代理模式。 代理模式顾名思义,是对资源进行代理访问的一种模式,这里的资源是泛指在程序中会使用到的数据、操作、过程、对象等等。当然,针对不同的资源,代理进行的操作不尽相同,根据前人的总结&#xff0c…

layer文件ajax上传,layer弹出层数据传输到content里面

在项目中使用layer弹出层的时候,遇到一个问题,就是利用ajax请求后台数据成功时,调用layer弹出层(iframe),如何把数据传到iframe里面去?经过百度,发现,使用js把数据拼接起来,然后在su…

清理offset_关于 kafka 日志清理策略的问题

现象:搭建了一个 kafka 服务, 使用 kafka-python 包正常生产数据, 但是 kafka 过五分钟就把我的 topic 删除掉. 但是配置 log 的已经配置了, 我认为 kafka 不应该删除我的 topic 历史数据.关于 log 清理的配置文件:############################# Log Flush Policy …

python面向对象思路_python面向对象方法

#需求:洗衣机,功能:能洗衣服#1、定义洗衣机类"""class 类名():代码"""classWasher():defwash(self):print("能洗衣服")#2 创建对象#对象名 类名()haier Washer()#3、验证成果#打印haier…

饥荒进地洞服务器无响应,饥荒联机洞穴设置及常见问题的解决方法

进阶篇服务端mod设置:首先(1)下载好要用mod,然后下载通用工具,解压放到DST的mod文件夹里运行(2)此时在文档\Klei\DoNotStarveTogether会多出一个文件modoverrides,把它复制到文档\klei\DoNotStarveTogether_EasyConfigCaves&#…

roads 构筑极致用户体验_万物互联大势所趋 华为保驾护航运营商“三个转型”...

随着通信技术及其应用的快速发展,人们发现物理世界和数字世界正在加速融合,数字经济正在改变和颠覆着传统市场格局。于是人们看到,电子商务、远程教育、远程医疗、物联网、大数据等等,一波接一波的商业浪潮不断涌现。然而支撑这一…

python列表字典_Python常用对字典、列表的操作

本文中使用的Python版本为3.x。合并两个列表方法一a [1, 2, 3]b [4, 5, 6]print(a b)print(a)print(b)输出结果为:[1,2,3,4,5,6][1,2,3][4,5,6]说明:“ab”后,a和b都没有变化。方法二a [1, 2, 3]b [4, 5, 6]a.extend(b)print(a)print(b)…

魔兽对战平台修改服务器数据,《魔兽争霸3》1.29补丁上线官方对战平台:平衡性大做改动...

IT之家3月1日消息 今天《魔兽争霸》官方微博宣布《魔兽争霸3》的最新补丁也就是1.29补丁已经登陆官方对战平台的PTR服务器上,想要尝鲜的用户可以前往官方对战平台进行更新和游玩。1.29补丁除了增加对于宽屏游戏的支持之外,还针对英雄单位进行平衡性的改动…

查询列名在哪张表_探索SQL-多表查询

一、表的加法(Union)1、用法:将两个表合并成一个表2、语句:select 查询结果 from 从哪张表查询 union select 查询结果 from 从哪张表查询*需保留重复行*select 查询结果 from 从哪张表查询 union all select 查询结果 from 从哪张…

使用未初始化的内存是什么意思_他们都说JVM能实际使用的内存比-Xmx指定的少?这是为什么呢...

这确实是个挺奇怪的问题,特别是当最常出现的几种解释理由都被排除后,看来JVM并没有耍一些明显的小花招:-Xmx和-Xms是相等的,因此检测结果并不会因为堆内存增加而在运行时有所变化。通过关闭自适应调整策略(-XX:-UseAdaptiveSizePo…

定义整型数组_C语言基础-数组怎么用

到目前为止,我们了解到C语言中可以使用整型,浮点型和字符型的数据类型来描述我们人类世界的各种数据,但是这些还远远不够……我们在IOT领域经常会遇到这样一个数据使用场景:某天的固定时间内,会有多台(我们…

找出一个字符串中出现次数最多的字_海量数据中找出前k大数(topk问题)

在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题。针对top K类问题,通常比较好的方案是分治Trie树/hash小顶堆(就是上面提到的最小堆),即先将数据集…

crowd counting_[crowd_counting]-SFCN-CVPR2019amp;amp;GCC dataset

1.Contribution(1)主要是提出了基于GTA5的GCC数据集数据集下载地址:https://gjy3035.github.io/GCC-CL/​gjy3035.github.io(2)提出了在如何在GCC上train,然后在传统的通用数据集上test的迁移学习方案&…

代码更换ui图片_用技术的方式,在UI设计稿中设置随机码,保证高清

本文首发于:行者AI 在工作中会遇到批量给图片添加文字,随机码等需求,当数据码数量较大时,UI的工作量就会非常大,这时候我们可以用python来帮我们提高工作效率。1. 需求分析我们有这样一张图片,我们需要将一…

hash地址_redis中的hash扩容、渐进式rehash过程

背景: redis字典(hash表)当数据越来越多的时候,就会发生扩容,也就是rehash对比:java中的hashmap,当数据数量达到阈值的时候(0.75),就会发生rehash,hash表长度变为原来的二…

是什么牌子_水晶项链什么牌子好

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以免费收到最新内容了。每天都有分享,完全是免费订阅,请放心关注! …

什么是机器人的五点校正法_机器人校正方法

机器人校正方法【专利说明】机器人校正方法[0001]本申请案主张于2012年9月18日申请之美国临时专利申请案第61/702,377号的优先权,所述专利申请案的揭示完整结合于此以供参考。技术领域[0002]本发明涉及一种工件加工,尤其涉及一种用于工件加工…

stn算子_深度学习常用算子(二)

1、Tensor维度变换1)Flatten作用:将输入tensor中从start_axis维度到end_axis维度合并为1维2)Reshape作用:将输入Tensor描述转换为新的shape3)FreespaceExtract作用:将h维变成1,其他维度不变,从而完成对h的采样&#xf…