Helm v3安装与应用

网友投稿 351 2022-10-26

Helm v3安装与应用

系统环境

系统版本:CentOS Linux release 7.8.2003 (Core) Docker版本:Docker version 20.10.0, build 7287ab3 Helm 版本:v3.2.3 Kubernetes 版本:v1.17.3

Helm简单说明

有关 Helm V2 和 Helm V3 的架构和使用差异,以及Helm相关基本概念,网上有太多的资源,本文不再多做说明,重点说明下Helm安装与应用。

Helm 用途

做为 Kubernetes 的一个包管理工具,Helm具有如下功能:

创建新的 chart chart 打包成 tgz 格式 上传 chart 到 chart 仓库或从仓库中下载 chart 在Kubernetes集群中安装或卸载 chart 管理用Helm安装的 chart 的发布周期

Helm 重要概念

Helm 有三个重要概念:

chart:包含了创建Kubernetes的一个应用实例的必要信息 config:包含了应用发布配置信息 release:是一个 chart 及其配置的一个运行实例

下载并安装 Helm 客户端

访问 Helm Github 下载页面 Linux amd64,然后在 Linux 系统中使用 Wget 命令进行下载。

#下载Helm客户端 $ wget https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gz #接下来解压下载的包,然后将客户端放置到 /usr/local/bin/ 目录下: #解压 Helm $ tar -zxvf helm-v3.2.3-linux-amd64.tar.gz #复制客户端执行文件到 bin 目录下,方便在系统下能执行 helm 命令 $ cp linux-amd64/helm /usr/local/bin/

注意:helm 客户端需要下载到安装了 kubectl 并且能执行能正常通过 kubectl 操作 kubernetes 的服务器上,否则 helm 将不可用。

如果你不是在k8s集群master节点上使用helm,可使用如下方法:

# 安装当前k8s版本的kubectl工具 yum install -y kubectl-1.17.3-0 # 从master节点上拷贝/root/.kube文件: scp -r root@MasterIP:/root/.kube /root/ # 我们可以在helm客户端执行安装,查看kubernetes命令 kubectl get pod -n kube-system

添加 Chart 仓库

在 Helm 中默认是不会添加 Chart 仓库,所以这里我们需要手动添加,下面是添加一些常用的 Charts 库,命令如下:

Helm 的基本操作

安装应用

通过 Helm 在 Repo 中查询可安装的 Nginx 包:

helm search repo nginx NAME CHART VERSION APP VERSION DESCRIPTION stable/nginx-ingress 1.41.3 v0.34.1 DEPRECATED! An nginx Ingress controller that us... stable/nginx-ldapauth-proxy 0.1.6 1.13.5 DEPRECATED - nginx proxy with ldapauth stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego stable/gcloud-endpoints 0.1.2 1 DEPRECATED Develop, deploy, protect and monitor...

使用 -n Namespace 部署我们的应用:

# 创建命名空间blog kubectl create namespace blog # 查看创建的命名空间 kubectl get ns # 选择一个chart在k8s上部署我们的应用 helm install nginx bitnami/nginx -n blog # 查看应用状态 helm status nginx -n blog helm list -n blog

自定义参数安装应用

Helm 中支持使用自定义yaml 文件和--set命令参数对要安装的应用进行参数配置,使用如下:

查看应用 chart 可配置参数

首先使用helm show values {仓库名称}/{应用名称}来查看对应应用的可配置参数:

helm show values bitnami/nginx image: registry: docker.io repository: bitnami/nginx tag: 1.17.10-debian-10-r33 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128Mi ......(太长,略)

方式一:使用自定义 values.yaml 文件安装应用

使用自定义配置文件来配置安装应用的参数:

(1)创建自定义配置文件 values.yaml

cat > values.yaml << EOF image: registry: docker.io repository: bitnami/nginx resources: limits: cpu: 1000m memory: 1024Mi requests: cpu: 1000m memory: 1024Mi service: type: NodePort port: 80 EOF

(2)使用自定义配置文件运行应用

helm install -f values.yaml nginx bitnami/nginx -n blog

(3)查看应用和服务

helm list -n blog kubectl get svc -n blog NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx NodePort 10.105.233.105 80:30384/TCP 4m13s

方式二:使用 --set 配置参数进行安装

--set 参数是在使用 helm 命令时候添加的参数,可以在执行 helm 安装与更新应用时使用,多个参数间用,隔开,使用如下:

注意:如果配置文件和 --set 同时使用,则 --set 设置的参数会覆盖配置文件中的参数配置。

# 使用set创建一个release helm install --set 'registry.registry=docker.io,registry.repository=bitnami/nginx' nginx bitnami/nginx -n blog # 更新一个release helm upgrade --set 'servers[0].port=8080' nginx bitnami/nginx -n blog

卸载应用

# 卸载应用,并保留安装记录 helm uninstall nginx -n blog --keep-history # 查看全部应用(包含安装和卸载的应用) helm list -n blog --all # 卸载应用,不保留安装记录 helm delete nginx -n blog

升级应用

# 创建新的配置参数文件 values.yaml: cat > values.yaml << EOF service.type: NodePort service.nodePorts.30002 EOF # 应用更新: helm upgrade -f values.yaml nginx bitnami/nginx -n blog # 查看新配置是否生效: helm get values nginx -n blog USER-SUPPLIED VALUES: service.nodePorts.30002 service.type: NodePort

渲染模板

如果想查看通过指定的参数渲染的 Kubernetes 部署资源模板,可以通过下面命令:

helm template bitnami/nginx -n mydlqcloud # 可以看到渲染的模板如下: --- # Source: nginx/templates/svc.yaml apiVersion: v1 kind: Service metadata: name: RELEASE-NAME-nginx labels: app.kubernetes.io/name: nginx helm.sh/chart: nginx-5.3.1 app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm spec: type: LoadBalancer externalTrafficPolicy: "Cluster" ports: - name: http port: 80 targetPort: http selector: app.kubernetes.io/name: nginx app.kubernetes.io/instance: RELEASE-NAME --- # Source: nginx/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: RELEASE-NAME-nginx labels: app.kubernetes.io/name: nginx helm.sh/chart: nginx-5.3.1 app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm spec: selector: matchLabels: app.kubernetes.io/name: nginx app.kubernetes.io/instance: RELEASE-NAME replicas: 1 template: metadata: labels: app.kubernetes.io/name: nginx helm.sh/chart: nginx-5.3.1 app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm spec: containers: - name: nginx image: docker.io/bitnami/nginx:1.17.3-debian-10-r63 imagePullPolicy: "IfNotPresent" ports: - name: http containerPort: 8080

参考文档

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:距离 Java 开发者玩转 Serverless,到底还有多远?
下一篇:一种基于UART&SPI接口验证工具的设计与实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~