zoukankan      html  css  js  c++  java
  • helm 包管理

    Helm应用包管理器

    1. 为什么需要Helm?

    K8S上的应用对象,都是由特定的资源描述组成,包括deployment、service等。都保存各自文件中或者集中写到一个配置文件。然后kubectl apply –f 部署。如果应用只由一个或几个这样的服务组成,上面部署方式足够了。而对于一个复杂的应用,会有很多类似上面的资源描述文件,例如微服务架构应用,组成应用的服务可能多达十个,几十个。如果有更新或回滚应用的需求,可能要修改和维护所涉及的大量资源文件,而这种组织和管理应用的方式就显得力不从心了。且由于缺少对发布过的应用版本管理和控制,使Kubernetes上的应用维护和更新等面临诸多的挑战,主要面临以下问题:

    • 如何将这些服务作为一个整体管理
    • 这些资源文件如何高效复用
    • 不支持应用级别的版本管理
    1. Helm 介绍

    Helm是一个 Kubernetes 的包管理工具,就像Linux下的包管理器,如 yum/apt 等,可以很方便的将之前打包好的yaml文件部署到 kubernetes 上。

    Helm有两个重要概念:

    • helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理
    • Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合
    • Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象
    1. Helm v3 变化

    2019年11月13日,Helm团队发布 Helm v3的第一个稳定版本。

    该版本主要变化如下:

    • 架构变化:最明显的变化是 Tiller 的删除
    • Release 名称可以在不同命名空间重用
    • 支持将 Chart 推送至 Docker 镜像仓库中
    • 使用JSONSchema验证chart values

    Helm 客户端

    1. 安装 Helm 客户端 
    2. curl -SLO https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
    src]# https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
    src]# tar -xf helm-v3.0.0-linux-amd64.tar.gz 
    src]# cp linux-amd64/helm  /usr/bin/
    ~]# helm version
    version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
    

    2.Helm 常见命令

    命令描述
    create 创建一个chart并指定名字
    dependency 管理chart依赖
    get 下载一个release。可用子命令:all、hooks、manifest、notes、values
    history 获取release历史
    install 安装一个chart
    list 列出release
    package 将chart目录打包到chart存档文件中
    pull 从远程仓库中下载chart并解压到本地 # helm pull stable/mysql --untar
    repo 添加,列出,移除,更新和索引chart仓库。可用子命令:add、index、list、remove、update
    rollback 从之前版本回滚
    search 根据关键字搜索chart。可用子命令:hub、repo
    show 查看chart详细信息。可用子命令:all、chart、readme、values
    status 显示已命名版本的状态
    template 本地呈现模板
    uninstall 卸载一个release
    upgrade 更新一个release
    version 查看helm客户端版本

    3、配置国内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 update
    
    // 查看配置的存储库
    ~]# helm repo list 
    NAME    URL                                                   
    stable  http://mirror.azure.cn/kubernetes/charts              
    aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    ~]# helm  search  repo  aliyun
    
    // 删除存储库
    helm repo remove aliyun
    

    Helm基本使用

    • 安装: chart install
    • 升级: chart upgrade
    • 回滚: chart rollback

    1 . 使用 chart 部署一个应用

    • 查找 chart
    ~]# helm search repo mysql
    
    • 查看 charts
    ~]# helm show values stable/mysql
    
    • 安装 包
    - ~]# helm install mydb stable/mysql
    
    • 查看 release 状态
    ~]# helm list 
    NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
    mydb    default         1               2020-07-18 09:58:54.209184918 +0800 CST deployed        mysql-1.6.6     5.7.30    
    
    • 卸载
    ~]# helm uninstall mydb
    
    1. 安装前自定义chart配置选项

    上面部署的mysql并没有成功,这是因为并不是所有的chart都能按照默认配置运行成功,可能会需要一些环境依赖,例如PV。所以我们需要自定义chart配置选项,安装过程中有两种方法可以传递配置数据。

    • - --values(或 -f ):指定带有覆盖的YAML文件。这可以多次指定,最右边的文件优先
    • --set:在命令行上指定替代。如果两者都用,--set优先级高

    --values使用,先将修改的变量写到一个文件中

    ~]# helm show values stable/mysql > config.yaml
    ~]# cat config.yaml
    persistence:
      enabled: true
      storageClass: "managed-nfs-storage"
      accessMode: ReadWriteOnce
      size: 8Gi
    mysqlUser: "k8suser"
    mysqlPassword: "123456"
    mysqlDatabase: k8sdb
    
    ~]# helm install mydb -f config.yaml stable/mysql
    

    --set在命令行上指定替代

    ~]# helm install db --set persistence.storageClass="managed-nfs-storage" stable/mysql
    

    也可以把chart包下载下来查看详情:helm pull stable/mysql --untar

  • 相关阅读:
    关于Asp.net应用程序生命周期
    xmlHttpRequest 以Post方式发数据到Asp.net页,在gb2312编码下的解决办法
    Asp.net中TreeView gb2312状态PopulateNodesFromClient乱码问题
    Subsonic中的MarkOld与MarkNew的一些使用
    非递归一次性加载分类数据到TreeViw
    Atitit rss没落以及替代品在线阅读器
    Atitit 2016年attilax事业成就表
    Atitit HTTP 认证机制基本验证 (Basic Authentication) 和摘要验证 (Digest Authentication)attilax总结Atitit HT
    Atitit 项目语言的选择 java c#.net  php??
    atitit 商业项目常用模块技术知识点 v3 qc29
  • 原文地址:https://www.cnblogs.com/xiexun/p/14486978.html
Copyright © 2011-2022 走看看