【云原生】kubernetes应用程序包管理工具Helm

这篇具有很好参考价值的文章主要介绍了【云原生】kubernetes应用程序包管理工具Helm。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

【云原生】kubernetes应用程序包管理工具Helm,云原生,kubernetes,kubernetes,容器,云原生,原力计划

 

Helm

  • 什么是 Helm

  • 安装 Helm

  • 重要概念

  • 使用 Helm

1 简介

官网地址: Helm

Helm是一个Kubernetes应用程序包管理工具,它允许你轻松管理和部署Kubernetes应用程序。Helm通过使用称为Charts的预定义模板来简化Kubernetes应用程序的部署和管理。Chart包含了一组Kubernetes对象定义,可以描述一个应用程序的完整部署和资源需求,包括Deployment、Service、ConfigMap、Secret等。使用Helm,你可以轻松地安装、升级、卸载和回滚Kubernetes应用程序。

同时,Helm还提供了一些便捷的功能,如依赖管理、全局变量、条件渲染等,可以帮助你更好地管理应用程序的部署。Helm有两个主要的组件:Helm客户端(helm)和Helm服务器(Tiller)。Helm客户端可以在本地运行,而Tiller则运行在Kubernetes集群中,并负责将Charts转换为Kubernetes对象。

2 安装

下载地址: Releases · helm/helm · GitHub

每个Helm 版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。

  1. 下载 需要的版本

  2. 解压(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)

  3. 在解压目录中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)

  4. 添加仓库: helm repo add bitnami https://charts.bitnami.com/bitnami

  5. 验证安装: helm help.

3 重要概念

  • Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。

  • Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。

  • Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 releaserelease name

4 使用

4.1 搜索 charts

Helm 自带一个强大的搜索命令,可以用来从两种来源中进行搜索:

  • helm search hub 从 Artifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库。

  • helm search repo 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。

4.2 安装

使用 helm install 命令来安装一个新的 helm 包。最简单的使用方法只需要传入两个参数:你命名的release名字和你想安装的chart的名称。

[root@k8s-node1 ~]# helm install nginx bitnami/nginx
NAME: nginx
LAST DEPLOYED: Wed Apr  5 07:18:04 2023
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 13.2.34
APP VERSION: 1.23.4
​
** Please be patient while the chart is being deployed **
NGINX can be accessed through the following DNS name from within your cluster:
​
    nginx.kube-system.svc.cluster.local (port 80)
​
To access NGINX from outside the cluster, follow the steps below:
​
1. Get the NGINX URL by running these commands:
​
  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace kube-system -w nginx'
​
    export SERVICE_PORT=$(kubectl get --namespace kube-system -o jsonpath="{.spec.ports[0].port}" services nginx)
    export SERVICE_IP=$(kubectl get svc --namespace kube-system nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    echo "http://${SERVICE_IP}:${SERVICE_PORT}"

注意: 安装chart时创建了一个新的 release 对象。上述发布被命名为 nginx。 (如果想让Helm生成一个名称,删除发布名称并使用--generate-name。)

helm 安装顺序: Helm | 使用Helm


4.3 查看列表

你可以通过 helm list 命令看到当前部署的所有 release:

[root@k8s-node1 ~]# helm list
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
nginx   kube-system     1               2023-04-05 07:34:48.421708425 -0400 EDT deployed        nginx-13.2.34   1.23.4 
4.3 查看状态

你可以使用 helm status 来追踪 release 的状态,或是重新读取配置信息:

[root@k8s-node1 ~]# helm status nginx
NAME: nginx
LAST DEPLOYED: Wed Apr  5 07:18:04 2023
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 13.2.34
APP VERSION: 1.23.4
​
** Please be patient while the chart is being deployed **
NGINX can be accessed through the following DNS name from within your cluster:
​
    nginx.kube-system.svc.cluster.local (port 80)
​
To access NGINX from outside the cluster, follow the steps below:
​
1. Get the NGINX URL by running these commands:
​
  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace kube-system -w nginx'
​
    export SERVICE_PORT=$(kubectl get --namespace kube-system -o jsonpath="{.spec.ports[0].port}" services nginx)
    export SERVICE_IP=$(kubectl get svc --namespace kube-system nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    echo "http://${SERVICE_IP}:${SERVICE_PORT}"
4.4 卸载
[root@k8s-node1 ~]# helm uninstall nginx
release "nginx" uninstalled

5 安装自定义 Chart

上述安装方式只会使用 chart 的默认配置选项。很多时候,我们需要自定义 chart 来指定我们想要的配置。

5.1 拉取自定义的 chart
[root@k8s-node1 ~]# helm create app

注意: 当前目录中会出现一个 nginx-xxx.tgz 文件 这个文件就是 charts 的包。

5.2 查看 chart 目录结构
app/
  Chart.yaml
  values.yaml
  charts/
  templates/
  ...
  • templates/ 目录包括了模板文件。当Helm评估chart时,会通过模板渲染引擎将所有文件发送到templates/目录中。 然后收集模板的结果并发送给Kubernetes。

  • values.yaml 文件也导入到了模板。这个文件包含了chart的 默认值 。这些值会在用户执行helm installhelm upgrade时被覆盖。

  • Chart.yaml 文件包含了该chart的描述。你可以从模板中访问它。charts/目录 可以 包含其他的chart(称之为 子chart)。

5.3 自定义模板
$ rm -rf mychart/templates/*
  • 编写 namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: {{ .Chart.Name }}
  namespace: {{ .Values.namespace }}
  • 编写 deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Chart.Name}}
  namespace: {{.Values.namespace}}
  labels:
    app: {{ .Chart.Name}}
spec:
  replicas: {{ .Values.replicas }}
  template:
    metadata:
      name: {{ .Chart.Name}}
      labels:
        app: {{ .Chart.Name}}
    spec:
      containers:
        - name: {{ .Chart.Name}}
          image: {{ .Values.image}}
          imagePullPolicy: {{.Values.imagePullPolicy}}
          ports:
            - containerPort: {{.Values.containerPort}}
      restartPolicy: {{ .Values.restartPolicy }}
  selector:
    matchLabels:
      app: {{ .Chart.Name}}
  • 编写 service.yml

apiVersion: v1
kind: Service
metadata:
  name: {{.Chart.Name}}
  namespace: {{.Values.namespace}}
spec:
  selector:
    app: {{.Chart.Name}}
  ports:
    - port: {{.Values.service.port}}
      targetPort: {{.Values.containerPort}}
  type: {{ .Values.service.type }}
  • 编写 Chart.yml

apiVersion: v2
name: app
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
​
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
​
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"
  • 编写 values.yaml文章来源地址https://www.toymoban.com/news/detail-702707.html

replicas: 1
namespace: app
image: nginx:1.19
imagePullPolicy: IfNotPresent
restartPolicy: Always
containerPort: 80
​
service:
  port: 80
  type: ClusterIP
5.4 验证是否存在错误
$ helm lint app
5.5 打包自定义 chart
$ helm package app
5.6 安装 chart
$ helm install app myapp-1.tgz

到了这里,关于【云原生】kubernetes应用程序包管理工具Helm的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生和Kubernetes如何简化应用程序开发

    在谈论当前技术时,“云计算”正变得非常普遍,作为开发人员,将会继续体验使用云计算应用程序的优势;在云计算中,另一个正在出现的术语是云原生。在进入实际话题之前,首先了解一下云原生到底是什么。 深入了解云原生应用 现在,世界各地的公司都了解云计算应用

    2024年01月24日
    浏览(42)
  • 云原生之深入解析使用Telepresence轻松在本地调试和开发Kubernetes应用程序

    telepresence 下载:https://www.telepresence.io/docs/latest/install/ kubectl 下载:https://kubernetes.io/docs/tasks/tools/ 如果版本小于 v2.0.3,则需要升级 telepresence(https://www.telepresence.io/docs/latest/instal

    2024年02月02日
    浏览(49)
  • Kubernetes管理工具Helm

    Helm 是一个用于管理 Kubernetes 应用程序的工具,它提供了一种简化和自动化部署的方式。在本文中,我将总结一下我使用 Helm 的经验和教训。 首先,我要说的是 Helm 的安装非常简单。你只需要下载并安装 Helm 的二进制文件,然后运行几个命令即可完成安装。而且,Helm 还提供

    2024年02月12日
    浏览(56)
  • 应用程序管理工具

    应用程序管理是 DevOps 的重要组成部分。它可以定义为在所有阶段监控和管理软件应用程序的可用性、运行状况、性能和功能的过程,包括规划、设计、构建、测试、部署、维护和更新。这意味着应用程序从概念到停止都受到监控。 管理应用程序可确保业务系统的高效运行、

    2024年02月10日
    浏览(51)
  • 【云原生,k8s】Helm应用包管理器介绍

    目录 一、为什么需要Helm? (一)Helm介绍 (二)Helm有3个重要概念: (三)Helm特点 二、Helm V3变化 (一)架构变化 (二)自动创建名称空间 三、Helm应用包管理器部署 1、部署Helm客户端工具 2、Helm常用命令 3、配置国内的Chart仓库 4、使用chart部署一个Nginx应用 5、使用chart部

    2024年02月12日
    浏览(36)
  • 【ALM工具软件】上海道宁与Perforce为您带来用于整个生命周期的应用程序生命周期管理软件

    Helix ALM是 用于整个生命周期的 应用程序生命周期管理的ALM软件 具有专用于 需求管理(Helix RM)、测试用例管理(Helix TCM) 问题管理(Helix IM)的功能模块 Helix ALM提供了 无与伦比的可追溯性 您将知道是否已测试并满足要求 测试运行是否已通过(或失败) 以及问题是否已解

    2024年02月09日
    浏览(53)
  • 企业聊天应用程序使用 Kubernetes

    客户端: 在我们的架构中,客户端可以分为三种类型:iOS 和 Android 移动应用程序以及 Web 聊天。移动应用程序首先通过 API 网关服务与服务器进行通信,其中客户端会生成一个访问令牌,该令牌将授权每个通信和服务。 网络聊天也以相同的方式进行通信,并且与 Web 管理应用

    2024年02月07日
    浏览(36)
  • Epinio:Kubernetes 的应用程序开发引擎

    王海龙,Rancher 中国社区技术经理,Linux Foundation APAC Evangelist,负责 Rancher 中国技术社区的维护和运营。拥有 9 年的云计算领域经验,经历了 OpenStack 到 Kubernetes 的技术变革,无论底层操作系统 Linux,还是虚拟化 KVM 或是 Docker 容器技术都有丰富的运维和实践经验。 Kubernetes 已成

    2024年02月01日
    浏览(38)
  • 自动缩放Kubernetes上的Kinesis Data Streams应用程序

    想要学习如何在Kubernetes上自动缩放您的Kinesis Data Streams消费者应用程序,以便节省成本并提高资源效率吗?本文提供了一个逐步指南,教您如何实现这一目标。 通过利用Kubernetes对Kinesis消费者应用程序进行自动缩放,您可以从其内置功能中受益,例如水平Pod自动缩放器(Hor

    2024年02月08日
    浏览(41)
  • 迁移到云原生:如何使用微服务迁移应用程序

    企业遇到大规模部署和监督生产中的应用程序的任务。幸运的是,我们可以使用大量技术和工具。然而,从传统的,整体的结构转变为云态一个人提出了自己的障碍。在这里,您会发现将应用程序从整体设置转移到基于微服务的体系结构时要进行的基本初始步骤列表。 Compa

    2024年02月03日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包