云原生之旅 - 5)Kubernetes时代的包管理工具 Helm

前言上一篇文章 [基础设施即代码 使用 Terraform 创建 Kubernetes] 教会了你如何在Cloud上面建Kubernetes资源,那么本篇来讲一下如何在Kubernetes上面部署应用 。大家都知道 Kubernetes上的应用对象,都是由特定的资源描述组成,然后保存至一个个YAML文件,通过 kubectl apply –f 部署,但是这种手动的方式面临很多问题,容易出错,代码冗余,缺少版本控制等 。所以我们需要一些工具来帮助我们更快的达到部署以及管理应用的目的 。目前很流行的工具主要是 Helm 和 Kustomize(下一篇会介绍),本篇主要介绍 Helm 。

Helm是一个 Kubernetes 的包管理工具,就像Linux下的包管理器,如 yum/apt 等,可以很方便的将之前打包好的yaml文件部署到 kubernetes 上 。Helm有几个重要概念:
  • helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理
  • Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合
  • Release:基于Chart的部署实体,一个 Chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象
  • Repository:主要就是用来存放和共享 Chart 使用,相当于是 GitHub,不过这里主要是供 Kubernetes 使用 。
关键词: Helm入门,Helm实践,使用Terraform 安装Helm Charts,自制Helm Charts,自定义Helm Chart,编写自己的Helm Charts
安装参考官方文档,我这里是MacOS `brew install helm` 就行了 。
使用Helm命令安装Chart我们以安装bitnami 的Nginx为例子
helm repo add bitnami https://charts.bitnami.com/bitnamihelm repo listhelm search repo nginxhelm install mywebserver bitnami/nginx安装到一个已存在的Namespace
helm install mywebserver bitnami/nginx -n demo安装到一个新的Namespace
helm install mywebserver bitnami/nginx -n demo --create-namespace安装某特定版本
helm install mywebserver bitnami/nginx --version 13.2.8查看
helm listhelm list -n demo修改参数安装,如下是把service type 改为ClusterIP,默认为LB类型
helm install my-nginx bitnami/nginx --set service.type="ClusterIP"## 更多参数可参考文档
也可通过values.yaml修改参数
helm inspect values bitnami/nginx > values.yamlvim values.yamlhelm install mywebserver bitnami/nginx -f values.yamlNAME: mywebserverLAST DEPLOYED: Tue Oct  4 10:23:16 2022NAMESPACE: defaultSTATUS: deployedREVISION: 1TEST SUITE: NoneNOTES:CHART NAME: nginxCHART VERSION: 13.2.9APP VERSION: 1.23.1如果想把Chart从repository下载到本地安装
pull到本地并解压 然后install from local
helm pull bitnami/nginx --untarhelm install mywebserver2 ./nginxClean up
helm uninstall mywebserverhelm repo remove bitnami### 本文首发于博客园 https://www.cnblogs.com/wade-xu/p/16839834.html
使用 Terraform Helm Provider 安装 Helm Chart还没有Terraform入门的,请移步本人前面的文档 。例 云原生之旅 - 3)基础设施即代码 Terraform 快速入门
Terraform 代码示例如下
云原生之旅 - 5)Kubernetes时代的包管理工具 Helm

文章插图
云原生之旅 - 5)Kubernetes时代的包管理工具 Helm

文章插图

经验总结扩展阅读