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: devpostgresqlPassword: passwordpersistence: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的全部版本历史记录。
在每次更新之前,还可以通过 helm diff
来查看新改动与当前release版本的差异。
helm diff upgrade --set metrics.enabled=true nginx bitnami/nginx
下面给出了 helm diff
命令的输出结果的示例。
当需要在Kubernetes上安装软件时,第一个选项是从 ArtifactHub 上查找,看是否已经有别人贡献的Chart。这样可以极大的降低开发的成本。比如,我之前安装 Postgres 和Nginx使用的都是 Bitnami 维护的Chart。
对于内部项目的应用,只能自己开发 Chart。我将在下一篇文章中介绍 Helm Chart 的开发。
helm安装postgres_Helm 入门介绍 Kubernetes 上的包管理软件相关推荐
- [Python爬虫] scrapy爬虫系列 一.安装及入门介绍
前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作.但是,更 ...
- helm安装postgres_Helm 安装使用
简介 很多人都使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具.采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用:用户 ...
- 【Java基础教程】(一)入门介绍篇 · 上:快速掌握核心概念,开启Java世界的探索之旅!这篇Java入门宝典助你翱翔~
Java基础教程之入门介绍 · 上 本节学习目标 1️⃣ Java发展简史 1.1 诞生 1.2 发展 1.3 分支 2️⃣ 特征 3️⃣ 代码执行过程
- 在Kubernetes上部署和管理PostgreSQL
目录 有哪些选项可用于部署PostgreSQL? 选项 01 - 从头开始创建部署配置 选项 02 - 使用helm chart 什么是Helm? Helm架构 Helm由三个主要概念组成 如何安 ...
- linux在终端安装软件包失败,使用Apt-get和Synaptic包管理器来纠正Debian上的依赖错误...
本文介绍使用终端中的Apt-get和Synaptic包管理器来纠正Debian上的依赖错误.当用户从Internet下载软件包时,Debian Linux上有时会出现依赖性错误,操作系统无法找到成功运 ...
- ubuntu安装portainer_如何在Ubuntu上使用Portainer管理Docker容器
如何在Ubuntu上使用Portainer管理Docker容器 Portainer是Docker的开源管理UI,包括Docker Swarm环境. Portainer使您更容易管理Docker容器,它 ...
- 介绍下 Emacs 的包管理功能,感觉还是比较方便的
2019独角兽企业重金招聘Python工程师标准>>> Emacs 24.2.1 自动带了这个包管理的功能,不过默认搜索的网站上包比较少,需要手工加一些,具体方法就是把下面这段代码加 ...
- 写论文第二步——管理文献 上(文献管理软件)
管理文献是"阅读文献.记录笔记.提出问题.寻找方案.验证方案.撰写论文"几个步骤的基础 1.EndNote: 简介:一款被广泛使用的文献管理软件,是SCI(Thomson Scie ...
- 前端入门(二)npm包管理+模块化+bable转码器+webpack打包+vue-element-admin
一.npm包管理工具 NPM全称Node Package Manager,是Node.js包管理工具,相当于前端的Maven .不需要单独安装,和nodejs一起 在命令提示符输入 npm -v 可查 ...
最新文章
- 从AlexNet到BERT:深度学习中那些最重要idea的最简单回顾
- 从sql中image类型字段中导出图片
- Blender 2.42
- ssldump编译及使用过程
- LeetCode 1753. 移除石子的最大得分(优先队列)
- 黑科技揭秘:阿里云如何做到从业务宕机到恢复业务运行只用一分半钟时间
- [Matlab]求解线性方程组
- 百度文本编辑器ueditor v1.2.3.0使用方法及配置(图片上传功能、目录更改)
- 面向对象的三大特性之三:封装
- iOS-CoreText的那些事【电子书的那些事】
- ITU-R BT.656 , 帧 , 场 === 模拟视频信号采集的处理,以及奇偶场
- 运筹学实验报告c语言,运筹学教案-实验.doc
- 高新计算机考试培训 ppt,全国计算机高新技术考试.ppt
- 幼儿园不同空间翻新设计注意事项
- 学习Python的三种境界,你现在是在什么境界?
- 随时随地开展绘图工作,还得靠CAD在线!
- [实践篇]13.12 教你读懂QNX座舱方案里的高频术语
- Cocos Creator转盘抽奖
- c语言while语句1阶层加到10阶层,用C++编程:1的阶层加到10的阶层,使用For语句,还有While和Do While语句编程!!...
- flex布局(弹性盒子三)
热门文章
- 企业实战_08_MyCat 搭建Mysql 一主二从复制环境
- Mysql8.0 的sql修改成 Mysql7.X的sql
- SpringBoot2 集成 xxl-job任务调度中心_路由策略
- SSM整合Druid数据库连接池
- 工作流实战_28_flowable 任务多实例
- 软件设计师 - 系统测试
- Node.js 入门详解(一)
- python获取视频时长方法
- .rdlc 文件设置方向_在Word里面怎么设置把字竖着打出来?
- matlab中的nlinfit,matlab中nlinfit问题!!!!!!!!!!!!