专业网站建设推荐q479185700顶上,dnf怎么做辅助网站,商务电商网站建设,网站建设经费一、Helm介绍 helm通过打包的方式#xff0c;支持发布的版本管理和控制#xff0c;很大程度上简化了Kubernetes应用的部署和管理。 Helm本质就是让k8s的应用管理#xff08;Deployment、Service等#xff09;可配置#xff0c;能动态生成。通过动态生成K8S资源清单文件支持发布的版本管理和控制很大程度上简化了Kubernetes应用的部署和管理。 Helm本质就是让k8s的应用管理Deployment、Service等可配置能动态生成。通过动态生成K8S资源清单文件deployment.yaml、service.yaml。然后kubectl自动调用K8S资源部署。 对于K8s来说应用资源配置可以定义为K8s API对象包括DeploymentNamespaceService PVPersistent Volumes和PVCPersistentVolumeClaims等等。通常一个应用的部署会涉及很多资源的共同协作用户会定义这些API对象到一系列Yaml文件中然后通过kubectl来逐一进行部署。 那么问题来了假如我没接触过K8s, 只想部署个应用了解下不会写Yaml一个个配这些资源对象怎么破需要去结合K8s文档学习Yaml语法。过了几天我终于学会了一个个配好了这些资源对象的Yaml文件并逐一部署在这台机器上。后面想在这台机器上再重复部署几套另外还有十台环境要配成和这台一样怎么办拷贝过去再一一部署出来这配置管理也太麻烦了不好用直接劝退 先别急幸好已经有Helm避免了我们去完成这些繁琐配置和维护过程。它能够把这些零零散散的应用资源文件放在一起进行统一配置极大方便了开发人员对K8s集群应用的管理。 1、Helm 组件及相关术语 Helm是官方提供类似于YUM的包管理是部署环境的流程封装Helm有三个重要的概念chart、release和Repository
HelmHelm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。TillerTiller 是 Helm 的服务端部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求并根据 Chart 生成 Kubernetes 的部署文件 Helm 称为 Release 然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。ChartHelm 的软件包采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包其包含了一组定义 Kubernetes 资源相关的 YAML 文件。Chart有特定的文件目录结构如果开发者想自定义一个新的 Chart只需要使用Helm create命令生成一个目录结构即可进行开发。RepoistoryHelm 的软件仓库Repository 本质上是一个 Web 服务器该服务器保存了一系列的 Chart 软件包以供用户下载并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository 官方仓库的地址是https://hub.helm.sh。Release使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。 2、Helm工作原理 Chart Install 过程 Helm从指定的目录或者tgz文件中解析出Chart结构信息 Helm将指定的Chart结构和Values信息通过gRPC传递给Tiller Tiller根据Chart和Values生成一个Release Tiller将Release发送给Kubernetes用于生成Release Chart Update过程 Helm从指定的目录或者tgz文件中解析出Chart结构信息 Helm将要更新的Release的名称和Chart结构Values信息传递给Tiller Tiller生成Release并更新指定名称的Release的History Tiller将Release发送给Kubernetes用于更新Release Chart Rollback过程 Helm将要回滚的Release的名称传递给Tiller Tiller根据Release的名称查找History Tiller从History中获取上一个Release Tiller将上一个Release发送给Kubernetes用于替换当前Release 二、Helm部署 现在越来越多的公司和团队开始使用Helm这个Kubernetes的包管理器我们也会使用Helm安装Kubernetes的常用组件。Helm由客户端命令helm工具和服务端tiller组成。 helm的GitHub地址https://github.com/helm/helm
方式一使用官方提供的脚本一键安装
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh
方式二手动下载安装
wget https://get.helm.sh/helm-v3.11.3-linux-amd64.tar.gz
tar -zxvf helm-v3.11.3-linux-amd64.tar.gz
cd linux-amd64/
cp helm /usr/local/bin/
echo source (helm completion bash) ~/.bashrc
source ~/.bashrc
做完上述设置后即可使用helm search搜索官方helm hub chart库
helm search hub nginx
添加第三方Chart库
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add bitnami https://charts.bitnami.com/bitnami 查看Chart库
helm repo list 可以使用helm search repo从你所添加的仓库中查找chart的名字
helm search repo nginx
三、helm部署nginx应用
1、harbor仓库相关配置
在harbor仓库中新建项目公开bitnami再拉取镜像
docker pull bitnami/nginx:1.19.7-debian-10-r1
上传镜像到harbor仓库
docker push 192.168.65.30:88/bitnami/nginx:1.19.7-debian-10-r1
2、nginx Chart包
拉取nginx Chart包并做相应配置
helm pull bitnami/nginx --version 14.1.1
解压nginx Chart包
tar -zxf nginx-14.1.1.tgz
修改配置文件
cd nginx/
vim values.yaml9 global:10 imageRegistry: 192.168.65.30:88 # 指定仓库地址71 image: # 指定镜像72 registry: docker.io73 repository: bitnami/nginx74 tag: 1.19.7-debian-10-r175 digest:
523 service:
524 ## param service.type Service type
525 ##
526 type: ClusterIP # 设置service类型
2.1、测试nginx部署效果
安装webserver
helm install webserver .
查看详细信息
helm status webserver
查看分配到的IP再访问服务
kubectl get all
curl 查看到的ip
2.2、升级与回滚
修改配置文件
vim values.yaml
120 replicaCount: 3 升级
helm upgrade webserver .
查看升级结果
kubectl get pod
查看记录
helm history webserver
御载
helm uninstall webserver
三、构建Helm Chart
1、创建
创建一个mychart
helm create mychart
mychart目录结结
tree .
.
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
目录结构说明 charts/包含 chart 所依赖的其他 chart Chart.yaml用于描述 chart 信息的 yaml 文件应用描述相关文件 templates/chart 模板文件引入变量值后可以生成用于 Kubernetes 的 manifest 文件 templates/NOTES.txt可选: 包含简短使用说明的纯文本文件 values.yaml用于存储 chart 所需要的默认配置应用部署相关文件 以下是可选文件 — LICENSE用于存储关于 chart 的 LICENSE 文件 — README.mdREADME 文件 — values.schema.json一个使用JSON结构的 values.yaml 文件 — crds/自定义资源的定义 Chart.yaml文件结构和说明 Chart.yaml文件是chart包中必须存在的文件它包含以下字段
apiVersion: # chart API 版本信息, 通常是 v1 (必须)
name: # chart 的名称 (必须)
version: # chart 包的版本 (必须)
kubeVersion: # 指定 Kubernetes 版本 (可选)
type: # chart类型 可选
description: # 对项目的描述 (可选)
keywords:- # 有关于项目的一些关键字 (可选)
home: # 项目 HOME 页面的 URL 地址 (可选)
sources:- # 项目源码的 URL 地址 (可选)
dependencies: # chart 必要条件列表 可选- name: # chart名称 (nginx)version: # chart版本 (1.2.3)repository: # 可选仓库URL (https://example.com/charts) 或别名 (repo-name)condition: # 可选 解析为布尔值的yaml路径用于启用/禁用chart (e.g. subchart1.enabled )tags: # 可选- # 用于一次启用/禁用 一组chart的tagimport-values: # 可选- # ImportValue 保存源值到导入父键的映射。每项可以是字符串或者一对子/父列表项alias: # 可选 chart中使用的别名。当你要多次添加相同的chart时会很有用
maintainers: # 可选维护者信息- name: # 维护者的名称email: # 维护者的邮件地址url: # 维护者的个人主页
engine: gotpl # 模板引擎的名称可选默认为 gotpl
icon: # 可选指定 chart 图标的 SVG 或 PNG 图像的 URL
appVersion: # 应用程序包含的版本
deprecated: # 可选使用布尔值该 chart 是否被废弃
annotations:example: # 按名称输入的批注列表 可选.
设置配置文件values.yaml
vim values.yaml7 image:8 repository: myapp # 指定镜像9 pullPolicy: IfNotPresent10 # Overrides the image tag whose default is the chart appVersion.11 tag: v1 # 指定tag
检查依赖和模板配置是否正确
helm lint . 打包
cd ..
helm package mychart/
添加第三方仓库这个charts项目需要提前在harbor仓库中创建
helm repo add --username admin --password Harbor12345 mychart http://192.168.65.30:88/chartrepo/chart
1.1、安装push插件
helm plugin install https://github.com/chartmuseum/helm-push现在用离线安装
wget https://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gz获取插件目录
helm env
HELM_BINhelm
HELM_BURST_LIMIT100
HELM_CACHE_HOME/root/.cache/helm
HELM_CONFIG_HOME/root/.config/helm
HELM_DATA_HOME/root/.local/share/helm
HELM_DEBUGfalse
HELM_KUBEAPISERVER
HELM_KUBEASGROUPS
HELM_KUBEASUSER
HELM_KUBECAFILE
HELM_KUBECONTEXT
HELM_KUBEINSECURE_SKIP_TLS_VERIFYfalse
HELM_KUBETLS_SERVER_NAME
HELM_KUBETOKEN
HELM_MAX_HISTORY10
HELM_NAMESPACEdefault
HELM_PLUGINS/root/.local/share/helm/plugins # push插件目录
HELM_REGISTRY_CONFIG/root/.config/helm/registry/config.json
HELM_REPOSITORY_CACHE/root/.cache/helm/repository
HELM_REPOSITORY_CONFIG/root/.config/helm/repositories.yaml
创建插件目录
mkdir -p /root/.local/share/helm/plugins/helm-push/
cd /root/.local/share/helm/plugins/helm-push/
解压包
tar -zxf helm-push_0.10.3_linux_amd64.tar.gz
查看插件
helm plugin list
上传chart包到仓库
helm cm-push --usernameadmin --passwordHarbor12345 nginx-14.1.1.tgz mychart
查询chart
helm search repo mychart
拉取chart
helm pull mychart/mychart --version0.1.0 1.2、部署
部署mychart应用到集群
helm install webserver mychart