什么是Kubernetes Helm?为什么要使用Helm?

前言

编写一堆Kubernetes配置文件是一件很麻烦的事情。对于一些容器,我们可能需要10多个yaml文件。维护它们是一个问题,而且在不同的环境中运行或使用相同的文件更是是一个噩梦。

我们可以使用一些 bash 技巧来替换某些值,但这是一个不好的做法。

这就是我们为什么要使用helm。

我应该提到,还有另一个很好的工具ksonnet,它以自己的方式进行“相同”操作。

在这篇文章中,我将介绍为什么Helm是Kubernetes应用程序必不可少的要素,将Kubernetes应用程序与Helm打包的过程,以及如何使用Helm部署可能具有的某些复杂应用程序。

为什么要使用helm

我最近在部署的微服务很复杂,我的发布文件目录中有65个以上的Kubernetes配置文件 ... o()┛)。

主要问题是,我要如何把这个服务部署到多个环境中?

或者如何使用Kubernetes制作CI/CD?

当然做一些shell脚本是一个选择,但是我不是很喜欢这样做。

然后,我开始使用Kubernetes研究CI/CD pipline,发现一些团队正在将Helm集成到该过程中。

我们可以将理解为为像应用程序包那样的应用程序,在其中我们可以进行依赖管理,不同类型的钩子(安装前,升级前,安装后等),并且可以轻松升级或回滚。

安装

  • 选择一个你需要安装的版本 https://github.com/helm/helm/releases
  • 解压 tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
  • 找到解压目录中的二进制文件,把它移动到你的系统变量目录中 例如 mv linux-amd64/helm /usr/local/bin/helm
[root@localhost helm-test]# helm init
Creating /root/.helm
Creating /root/.helm/repository
Creating /root/.helm/repository/cache
Creating /root/.helm/repository/local
Creating /root/.helm/plugins
Creating /root/.helm/starters
Creating /root/.helm/cache/archive
Creating /root/.helm/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /root/.helm. Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster. Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
[root@localhost helm-test]#

查看kubernetes kube-system的namespace下的pods

[root@localhost test-app]# kubectl get pods --namespace=kube-system
NAME READY STATUS RESTARTS AGE
coredns-58cc8c89f4-q7lgg 1/1 Running 4 40d
coredns-58cc8c89f4-wdqqx 1/1 Running 4 40d
etcd-localhost.localdomain 1/1 Running 4 40d
kube-apiserver-localhost.localdomain 1/1 Running 4 40d
kube-controller-manager-localhost.localdomain 1/1 Running 4 40d
kube-proxy-gt72b 1/1 Running 4 40d
kube-scheduler-localhost.localdomain 1/1 Running 4 40d
tiller-deploy-58f57c5787-t2b7w 0/1 ImagePullBackOff 0 22m
weave-net-qdr2l 2/2 Running 8 40d
[root@localhost test-app]#

会发现tiller-deploy-*正在启动.

创建示例

[root@localhost helm-test]# helm create test-app
Creating test-app
  • 创建完成后目录结构如下
[root@localhost helm-test]# tree test-app/
test-app/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│   └── test-connection.yaml
└── values.yaml 3 directories, 9 files
[root@localhost helm-test]#
  • Chart.yaml:这是包含对图表的描述的主文件
  • values.yaml:这是包含图表默认值的文件
  • templates: 这是Kubernetes资源定义为模板的目录
  • charts:这是一个可选目录,可能包含子图表
%重点%

正像我们看到的一样,所有templates 文件夹中Kubernetes配置文件都是模板。

你可以使用 Chart.yaml 文件来描述当前的项目,并且可以对它进行版本控制。

我们只需要一个文件,用于配置应用程序,并在values.yaml中存储所有值。

运行 :

⚡ helm install --name test test-app/

这样我们第一个helm的demo就执行成功了.

另,出现以下错误,代表podtiller-deploy-*未启动成功:

Error: could not find a ready tiller pod

详细资料参见 https://helm.sh/docs/ 官方文档

Kubernetes 编排神器之 Helm的更多相关文章

  1. ORACLE恢复神器之ODU/AUL/DUL

    分享ORACLE数据库恢复神器之ODU.DUL和AUL工具. ODU:ORACLE DATABASE UNLOADER DUL:DATA UNLOADER AUL:也称MyDUL 关于三种工具说明: ...

  2. python三大神器之virtualenv pip, virtualenv, fabric通称为pythoner的三大神器。

    python三大神器之virtualenv   pip, virtualenv, fabric通称为pythoner的三大神器. virtualenv virtualenv------用来建立一个虚拟 ...

  3. kubernetes实战篇之helm使用技巧

    系列目录 使用压缩包安装chart 我们使用helm package打包的时候,默认会在当前位置生成一个tgz压缩包,然后helm把它复制到到$HOME/.helm/repository目录下,现在还 ...

  4. [转帖]APP逆向神器之Frida【Android初级篇】

    APP逆向神器之Frida[Android初级篇] https://juejin.im/post/5d25a543e51d455d6d5358ab 说到逆向APP,很多人首先想到的都是反编译,但是单看 ...

  5. SSH客户端神器之 MobaXterm

    SSH客户端神器之 MobaXterm 由于需要连接远程 Linux 服务器,早期使用过 Putty,SecureCRT,后面主要使用 Xshell. 自从接触了 MobaXterm之后,个人感觉比 ...

  6. kubernetes系列(十七) - 通过helm安装dashboard详细教程

    1. 前提条件 2. 配置https证书为secret 3. dashboard安装 3.1 helm拉取dashboard的chart 3.2 配置dashboard的chart包配置 3.3 he ...

  7. Kubernetes K8S之通过helm部署metrics-server与HPA详解

    Kubernetes K8S之通过helm部署metrics-server与 Horizontal Pod Autoscaling (HPA)详解 主机配置规划 服务器名称(hostname) 系统版 ...

  8. 简化Kubernetes应用部署工具-Helm

    [编者的话]微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernete ...

  9. kubernetes包管理工具Helm安装

    helm官方建议使用tls,首先生成证书. openssl genrsa -out ca.key.pem openssl req -key ca.key.pem -new -x509 -days -s ...

随机推荐

  1. JavaScript基础入门12 - 面向对象编程

    目录 JavaScript 面向对象编程 前言 构造函数创建对象 instanceof constructor 返回值 原型对象 关于对象的属性查找 in hasOwnProperty() JS当中实 ...

  2. PJzhang:从csdn到pipal密码分析工具

    猫宁!!! 偶然看到一篇短文,是对2011年csdn泄露的约643万数据的数据汇总分析,这里做个简要总结 .   一.单一密码使用5000人以上的,14个,当时密码中有两个命名方式很有趣,dearbo ...

  3. 类属性与对象实现,init方法的作用,绑定方法,绑定方法与普通函数的区别,继承,抽象与继承,派生与覆盖

    今日内容: 1.类属性与对象属性 2.init方法的作用 3.绑定方法 4.绑定方法与普通函数的区别(非绑定方法) 5.继承 6.抽象与继承 7.派生与覆盖 1.类属性与对象属性 类中应该进存储所有对 ...

  4. 更改默认浏览器(Windows7)

    更改默认浏览器 第一个方法(最好用): 第一步,先点击左下角WIN 然后点默认程序(画框框的图上) 第二步骤,来到控制面板主页,点击设置程序 第三步骤,左键单击选择要设置为默认浏览器的程序(我用360 ...

  5. python基础之元祖tuple

    元祖是只读列表,不可哈希,可循环查询,可切片*儿子不能改,孙子可更改--元祖里面单个元素不能更改---元祖内列表可更改增:tu1+tu2查:tu1[index] tu1[start_index:end ...

  6. Oracle Express Edition

    Oracle Express Edition(简洁版/开发版)非注册下载安装及SQL*Plus的简单使用 https://www.cnblogs.com/cjw1115/p/6209439.html ...

  7. netcore发布的坑

    当我选择目标运行时为Linux-64时,生成的接口为第二图, 而当我选择目标运行时为可移植或windows-64时,生成的接口则是正确的.和我写的代码,以及本地按F5启动调试的效果一致. 整个项目从v ...

  8. Mongo分片+副本集集群搭建

    一. 概念简单描述 1. MongoDB分片集群包含组件: mongos,configserver,shardding分片 2. Mongos:路由服务是Sharded cluster的访问入口,本身 ...

  9. MSF魔鬼训练营-3.2.2 操作系统辨识

    利用操作系统视频进行社会工程学攻击.例如在探测到目标用户所使用的网络设备.服务器设备厂家型号等信息后.可伪装成相关厂家的技术人员通过电话.邮件等方式与系统管理员取得联系得到信任.NMAP 示例: 使用 ...

  10. [c++] 计算太阳高度角

    /* 输入参数: Longitude - 经度(单位"度") Latitude - 纬度(单位"度") Year - 年 Month - 月 Day - 日 H ...