helm部署

Helm

一、环境准备

一套k8s的集群,helm主要是k8s集群的包管理器,主要用来管理helm中的各种chart包。

二、传统部署

传统服务部署到k8s集群的流程拉取代码 ->打包编译–>构建镜像一>准备一堆相关部署的yam文件(如:deployment、service、ingress等)->kubedt apply 部署到k8s集群

传统方式部署引发的问题
  • 随着引用的增多,需要维护大量的yaml文件
  • 不能根据一套vaml文件来创建多个环境,需要手动进行修改。
    例如:一般环境都分为dev、预生产、生产环境,部署完了dev这套环境,后面再部署预生产和生产环境,还需要复制出两套,并手动修改才行。

三、什么是helm

Helm是Kubernetes 的包管理工具,可以方便地发现、共享和构建 Kubernetes 应用helmn是k8s的包管理器。相当于centos系统中的yum工具。可以将一个服务相关的所有资源信息整合到一个chart包中,并且可以使用一套资源发布到多个环境中, 可以将应用程序的所有资源和部署信息组合到单个部署包中。就像Linux下的rpm包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。

四、helm的组件

1.Chart:

就是helm的一个整合后的chat包,包含一个应用所有的kubernetes声明模版,类似于yum的rpm包或者apt的dpkg文件

理解:
helm将打包的应用程序部署到k8s并将它们构建成Chat。这些Chat将所有预配置的应用程序资源以及所有版本都包含在一个易于管理的包中。Helm把kubernetes资源(如deployments、services或ingres等)打包到一个chart中,chart被保存到chart仓库。通过chart仓库可用来存储和分享chart


2.Helm客户端:

helm的客户端组件,负责和k8s apiserver通信

3.Repository:

用于发布和存储chart包的仓库,类似vum仓库或docker仓库用chart包部署的一个实例。通过chat在k8s中部署的应用都会产生一个唯一的Release, 同一chart部署多次就会产生多个Release

4.Release:

理解:
将这些yam部署完成后,他也会记录部署时候的一个版本,维护了一个release版本状态,通过Release这个实例,他会具体帮我们创建pod,deployment等资源

五、安装helm3

1、首先准备集群

[root@ip-10-101-1-142 linux-amd64]# kubectl get nodes
NAME           STATUS   ROLES               AGE    VERSION
10.101.0.76    Ready    worker              475d   v1.20.6
10.101.1.142   Ready    controlplane,etcd   475d   v1.20.6
10.101.1.229   Ready    worker              475d   v1.20.6
10.101.1.241   Ready    worker              28d    v1.20.6
10.101.1.84    Ready    worker              475d   v1.20.6
10.101.1.87    Ready    worker              475d   v1.20.6

2、安装步骤如下


wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz


tar -zxvf helm-v3.5.2-linux-amd64.tar.gz

sudo mv linux-amd64/helm /usr/local/bin/helm

helm version


3、创建chart

helm create mychart

[root@ip-10-101-1-142 mychart]# ls
charts  Chart.yaml  templates  values.yaml

[root@ip-10-101-1-142 nyq]# tree mychart/
mychart/                    #chart包的名称
├── charts                  ##存放子chat的目录
├── Chart.yaml              #保存chart的基本信息包括名字、描述信息等
├── templates               #模板文件目录,目录里面存放所有yaml模板文件
│   ├── deployment.yaml     #创建deployment对象的模板文件
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt           #存放提示信息的文件,个绍chart帮助信息
│   ├── serviceaccount.yaml  
│   ├── service.yaml
│   └── tests               #用于测试的文件,测试部署完chart后是否正常
│       └── test-connection.yaml
└── values.yaml


#values.yaml用于存储 templates 目录中模板文件中用到变量的值,这些变量定义都是为了让templates目录下yaml引用

六、实际应用

templates目录下的都是提供的模版文件,都可以删除掉
简单的使用 deployment service就可以

实例一、helm创建configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: configmapname
  namespace: default
data:
  webservice.endpoint.transferfund: http://www.customer-service.app/api/tf


创建release示例

[rancher@ip-10-102-25-233 ~]$ helm install myconfigmap ./mychart

NAME: myconfigmap
LAST DEPLOYED: Thu Aug  3 03:34:52 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None


[rancher@ip-10-102-25-233 ~]$ helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
myconfigmap     default         1               2023-08-03 03:34:52.893883354 +0000 UTC deployed        mychart-0.1.0   1.16.0     


[rancher@ip-10-102-25-233 ~]$ helm get manifest myconfigmap
---
# Source: mychart/templates/configmap.yml
apiVersion: v1
kind: ConfigMap
metadata:
  name: web-env
data:
  myvalue: "hello world"


[rancher@ip-10-102-25-233 ~]$ kubectl get configmap
NAME               DATA   AGE
kube-root-ca.crt   1      6d20h
web-env            1      5m38s

[rancher@ip-10-102-25-233 ~]$ helm uninstall myconfigmap
release "myconfigmap" uninstalled

[rancher@ip-10-102-25-233 ~]$ helm list

NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION



[rancher@ip-10-102-25-233 ~]$ kubectl get configmap
NAME               DATA   AGE
kube-root-ca.crt   1      6d20h


实例二、helm创建configmap
[rancher@ip-10-102-25-233 ~]$ ls
blue-green-deployment  cluster.rkestate  cluster.yml  cluster.yml.bk  kube_config_cluster.yml  mychart  mychart-v2
[rancher@ip-10-102-25-233 ~]$ helm install myconfigmap2 mychart-v2/
NAME: myconfigmap2
LAST DEPLOYED: Thu Aug  3 04:28:29 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[rancher@ip-10-102-25-233 ~]$ 
[rancher@ip-10-102-25-233 ~]$ 
[rancher@ip-10-102-25-233 ~]$ 
[rancher@ip-10-102-25-233 ~]$ helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
myconfigmap2    default         1               2023-08-03 04:28:29.123627489 +0000 UTC deployed        mychart-v2-0.1.0        1.16.0     
[rancher@ip-10-102-25-233 ~]$ 
[rancher@ip-10-102-25-233 ~]$ 
[rancher@ip-10-102-25-233 ~]$ 
[rancher@ip-10-102-25-233 ~]$ kubectl get myconfigmap
error: the server doesn't have a resource type "myconfigmap"
[rancher@ip-10-102-25-233 ~]$ kubectl get configmap
NAME                     DATA   AGE
kube-root-ca.crt         1      6d21h
myconfigmap2-configmap   1      46s


[rancher@ip-10-102-25-233 ~]$ helm uninstall myconfigmap2

实际测试
[rancher@ip-10-102-25-233 ~]$ helm install myconfigmap3 mychart-v2/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /home/rancher/mychart-v2

NAME: myconfigmap3
LAST DEPLOYED: Thu Aug  3 04:33:08 2023
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
MY_VALUE: hello world""

HOOKS:
MANIFEST:
---
# Source: mychart-v2/templates/configmsp.yml
apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfigmap3-configmap
data:
  myvalue: hello world""


七、chart安装方式

helm通过各种类型chart包安装一个release实例名来部署k8s相关的资源(如: pod,deployment,svc;ingress等,根据模板文件定义)
1、从加入到本地的chart官方仓库(从官方仓库安装)安装release实例
2、将从chart仓库拉下来的压缩包进行安装release实例(下载好的压缩包本地离线安装release)
3、将从chat仓库拉下来的压缩包解压后,从解压目录安装release实例(解压下载好的压缩包,从解压目录离线安装release实例)
4、从一个网络地址仓库压缩包直接安装release实例

helm 官方地址
https://helm.sh/zh/docs/helm/helm_repo/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值