首页 > 其他分享 >K8S-Helm

K8S-Helm

时间:2023-03-13 23:34:52浏览次数:33  
标签:harbor chart repo helm Helm release K8S

一.helm概述

1.1什么是helm

  • 在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment、svc 等,步骤较繁琐。

随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂:

  • Helm 通过打包的方式,支持发布的版本管理和控制, 很大程度上简化了 Kubernetes 应用的部署和管理。
  • Helm 本质就是让 K8s 的应用管理(Deployment、Service 等)可配置,可以通过类似于传递环境变量的方式能动态生成。
  • 通过动态生成 K8s 资源清单文件(deployment.yaml、service.yaml)。然后调用 Kubectl 自动执行 K8s 资源部署。

1.2helm中的三个重要概念

①Chart(软件包)

  • Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。

②Repository(仓库)

  • Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。

③Release

  • 使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。可以理解为 Helm 使用 Chart 包部署的一个应用实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。
  • 以 MySQL chart 为例,如果你想在你的集群中运行两个数据库,你可以安装该 chart 两次。每一个数据库都会拥有它自己的 release 和 release name。可以将 release 想象成应用程序发布的版本号。

1.3helm2和heml3的区别

 Helm 官网: https://helm.sh/

  • Helm2 是 C/S 架构,主要分为客户端 helm 和服务端 Tiller。
  • 在 Helm 2 中,Tiller 是作为一个 Deployment 部署在 kube-system 命名空间中,很多情况下,我们会为 Tiller 准备一个 ServiceAccount ,这个 ServiceAccount 通常拥有集群的所有权限。
  • 用户可以使用本地 Helm 命令,自由地连接到 Tiller 中并通过 Tiller 创建、修改、删除任意命名空间下的任意资源。

 

  • 在 Helm 3 中,Tiller 被移除了。
  • 新的 Helm 客户端会像 kubectl 命令一样,读取本地的 kubeconfig 文件,使用我们在 kubeconfig 中预先定义好的权限来进行一系列操作。

二.helm安装与初始化

①安装 helm

//下载二进制 Helm client 安装包
https://github.com/helm/helm/tags

tar -zxvf helm-v3.6.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm version

//命令补全
source <(helm completion bash)

 

 

②使用 helm 安装 Chart

//添加常用的 chart 仓库,
helm repo add bitnami https://charts.bitnami.com/bitnami
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 incubator https://charts.helm.sh/incubator

//更新 charts 列表
helm repo update
helm repo list

//查看 stable 仓库可用的 charts 列表
helm search repo stable

//删除 incubator 仓库
helm repo remove incubator

//查看 chart 信息
helm show chart stable/mysql #查看指定 chart 的基本信息

helm show all stable/mysql #获取指定 chart 的所有信息

//安装 chart
helm install my-redis bitnami/redis [-n default] #指定 release 的名字为 my-redis,-n 指定部署到 k8s 的 namespace

helm install bitnami/redis --generate-name #不指定 release 的名字时,需使用 –generate-name 随机生成一个名字

//查看所有 release
helm ls
helm list

//查看指定的 release 状态
helm status my-redis

//删除指定的 release
helm uninstall my-redis

 

 

三.helm基本操作

①查看存储库

helm repo list
 
helm search repo aliyun

 

②删除存储库

helm repo remove aliyun

 

③安装一个新的 helm 包

helm install  

 

④追踪 release 的状态,或是重新读取配置信息

helm status 

四.helm仓库部署

helm 可以使用 harbor 作为本地仓库,将自定义的 chart 推送至 harbor 仓库。

//安装 harbor
#上传 harbor-offline-installer-v1.9.1.tgz 和 docker-compose 文件到 /opt 目录
cd /opt
cp docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose

tar zxf harbor-offline-installer-v1.9.1.tgz
cd harbor/

vim harbor.yml
hostname: 192.168.80.13
harbor_admin_password: Harbor12345     #admin用户初始密码
data_volume: /data                     #数据存储路径,自动创建
chart:
  absolute_url: enabled                #在chart中启用绝对url
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor          #日志路径

#安装带有 Clair service 和 chart 仓库服务的 Harbor
./install.sh --with-clair --with-chartmuseum

//安装 push 插件
#在线安装
helm plugin install https://github.com/chartmuseum/helm-push

#离线安装
wget https://github.com/chartmuseum/helm-push/releases/download/v0.8.1/helm-push_0.8.1_linux_amd64.tar.gz

mkdir ~/.local/share/helm/plugins/helm-push
tar -zxvf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/helm-push

helm repo ls

#登录 Harbor WEB UI 界面,创建一个新项目
浏览器访问:http://192.168.80.10 ,默认的管理员用户名和密码是 admin/Harbor12345
点击 “+新建项目” 按钮
填写项目名称为 “chart_repo”,访问级别勾选 “公开”,点击 “确定” 按钮,创建新项目

#添加仓库
helm repo add harbor http://192.168.80.13/chartrepo/chart_repo --username=admin --password=Harbor12345
#注:这里的 repo 的地址是<Harbor URL>/chartrepo/<项目名称>,Harbor 中每个项目是分开的 repo。如果不提供项目名称, 则默认使用 library 这个项目。

#推送 chart 到 harbor 中
cd /opt/helm
helm push nginx harbor

#查看 chart_repo 项目中的 Helm Charts

 

标签:harbor,chart,repo,helm,Helm,release,K8S
From: https://www.cnblogs.com/suoluo212/p/17192086.html

相关文章

  • 基于Kubernetes(k8s)部署Dubbo+Nacos服务
    一、说明本文介绍基于Kubernetes(k8s)环境集成阿里云私有镜像仓库来部署一套Dubbo+Nacos的微服务系统,并使用KubernetesDNS以及port-forward的方式来打通网络......
  • Helm
    一、Helm概述1、Helm简介Helm是kubernetes生态系统中的一个软件包管理工具,类似ubuntu的apt,centos的yum或python的pip一样,专门负责管理kubernetes应用资源;使用helm可以......
  • K8S中HPA详解
    一、HPA解决的问题HPA全称是HorizontalPodAutoscaler,也就是对k8s的workload的副本数进行自动水平扩缩容(scale)机制,也是k8s里使用需求最广泛的一种Autoscaler机制,在开始......
  • Rancher管理K8S
    一、Rancher简介Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数......
  • 【云原生】k8s 环境快速部署(一小时以内部署完)
    目录1)基于ansible一键部署k8s流程图2)安装ansible3)下载4)修改配置1、修改节点信息,配置文件:/etc/ansible/hosts2、修改install-k8s/init/templates/hosts5)导镜像5)执行部署6)......
  • K8S 性能优化 - OS sysctl 调优
    前言K8S性能优化系列文章,本文为第一篇:OSsysctl性能优化参数最佳实践。参数一览sysctl调优参数一览#KubernetesSettingsvm.max_map_count=262144kernel.softl......
  • k8s中如何正确删除pod
    ---♦ 在日常的k8s运维过程中,避免不了会对某些pod进行剔除,那么如何才能正确的剔除不需要的pod呢? 首先,需要查出想要删除的pod#可通过任意方式进行查询kubectlget......
  • K8S 性能优化-K8S Node 参数调优
    前言K8S性能优化系列文章,本文为第四篇:KubernetesNode性能优化参数最佳实践。系列文章:《K8S性能优化-OSsysctl调优》《K8S性能优化-K8SAPIServer调优》《......
  • K8S 性能优化-K8S Node 参数调优
    前言K8S性能优化系列文章,本文为第四篇:KubernetesNode性能优化参数最佳实践。系列文章:《K8S性能优化-OSsysctl调优》《K8S性能优化-K8SAPIServer调优》......
  • K8S迁移
    详解kubernetes备份恢复利器Velero|深入了解Carina系列第三期  Carina 是由博云主导并发起的云原生本地存储项目(GitHub地址为:https://github.com/cari......