百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

k8s之helm

connygpt 2024-09-09 03:09 9 浏览

helm是k8s的一个软件包管理工具,相当于centos中的yum。本文首先在本地,也就是自己的本本上面安装本地操作环境,然后再详细梳理helm中的概念和操作实践。

使用helm需要有一个k8s集群环境,本地是使用minikube搭建的,详细的操作可参考之前的文章:https://www.toutiao.com/i6978673420808536609/?group_id=6978673420808536609,k8s集群搭建完成之后,然后下载helm可执行文件https://github.com/helm/helm/releases,并将helm复制到/usr/bin目录就装好了,可以执行下面的命令体验一下

helm repo add bitnami https://charts.bitnami.com/bitnami
helm search repo bitnami
helm install bitnami/nginx --generate-name

如果出现错误:Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused,则代表helm无法连接k8s服务,helm从环境变量KUBECONFIG读取k8s连接信息,默认位置为:~/.kube/config,正常设置k8s服务信息即可。

helm有三个重要概念,chart:封装k8s原生应用程序的一系列yaml文件,包含了创建k8s应用的必要信息,是helm用于打包k8s资源的方式;config:包含应用发布配置信息;release:是一个chart及其配置的一个运行实例。helm将charts安装到k8s中,为每个安装创建一个新的release,可以在仓库中查找或者分析新的charts。

作为k8s的包管理工具,helm具有如下功能:创建新的chart;将chart打包成tgz格式;上传chart到仓库或下载chart;在k8s中安装或卸载chart;管理chart的发布周期。

helm主要解决的问题,管理、编辑和更新分散的k8s应用配置文件;把一套相关的配置文件作为一个应用进行管理;发布和重用k8s的应用配置;应用发布者可通过helm打包应用、管理应用的依赖关系、管理应用版本并发布应用到软件仓库;使用者不需要编写复杂的应用部署文件,可在k8s上查找、安装、升级、回滚、卸载应用程序。

helm client是用户命令行工具,负责:chart开发;仓库管理;与tiller server交互;发送预安装的chart;查询release信息;升级并卸载已存在的release等。

tiller server是一个部署在k8s内部的server,负责与helm client、k8s api server交互。主要负责:监听来自helm client请求;通过chart及其配置构建一次发布;安装chart到k8s集群,并记录检测发布状态;通过k8s升级或卸载chart;client管理charts,server管理发布release。

helm 3移除了tiller server,权限和KUBECONFIG中配置的用户权限相同,release的名字可在不同的namespace中重用,release的名字必须主动指定,或使用--generate-name参数,支持将chart推送到docker镜像仓库中,并移除了helm server。

上面已经搭建了helm环境,并对helm的基本概念进行了梳理,下面将对helm的命令进行详细说明。

helm search命令负责对charts进行查找,共有两种类型的查找,helm search hub将查找artifact hub,可以在多个不同的仓库中进行查找,而helm search repo只在本地仓库中查找,本地仓库是之前通过helm repo add添加的。如:helm search hub flink。

helm install release-name char-name,使用安装命令来安装一个新的charts,需要指定两个参数,一个是release的name,一个是你想安装的chart的名字,如果不指定release的name,也可通过选项--generate-name让helm自动生成。helm安装资源的顺序为:Namespace->NetworkPolicy->ResourceQuota->LimitRange->PodSecurityPolicy->PodDisruptionBudge->ServiceAccount->Secret->SecretList->ConfigMap->StorageClass->PersistentVolume->PersistentVolumeClaim->CustomResourceDefinition->ClusterRole->ClusterRoleList->ClusterRoleBinding->ClusterRoleBindingList->Role-RoleList-RoleBinding->RoleBindingList->Service->DaemonSet->Pod->ReplicationController->ReplicaSet->Deployment->HorizontalPodAutoScaler->StatefulSet->Job->CronJob->Ingress->APIService。安装过程,可通过helm status release-name查看中间状态。

如果希望安装的时候对charts进行定制,也就是修改参数,首先helm show values chart-name查看指定chart的所有默认配置参数的值,如果希望修改某一个或多个参数的值,可通过helm install -f values.yaml chart-name --generate-name,或者helm install --values values.yaml chart-name --generate-name,又或者helm install --set k=v,k=v --generete-name进行修改。

helm upgrade动态更新release的配置,helm upgrade -f values.yaml chart-name。更新之后,可通过helm get values release-name查看新的配置是否生效。

通过helm create chart-name创建自己的chart,在chart-name目录编辑后,通过helm lint验证chart格式是否正确,编辑完成之后通过helm package chart-name进行打包,helm install安装到仓库中。

chart是一些描述k8s资源的,相关的文件的集合,可以用来部署一个简单的pod,也可以是一个复杂的应用。chart文件使用一个特殊的目录树,可以打包为带版本的归档文件,以用来部署,如果希望查看一个已经发布的chart的文件而不安装它,可执行:helm pull chart-name。详细请参考https://helm.sh/docs/topics/charts/。

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...