zoukankan      html  css  js  c++  java
  • Helm操作指南

    • Helm 简介
      • 我们可以将helm看作Kubernetes下的yum(centos 下负责安装包管理的工具)。helm是一个用于Kubernetes包管理器,每一个包称为chart,一个chart是一个目录(一般会打包为name-version.tgz包,便于传输管理)。   
      • helm提供应用部署、删除、升级、回滚等功能。
    • Helm 组件及相关术语
      • Helm
        • helm是命令行下的客户端工具。主要用于kubernetes应用程序chart的创建、打包、创建、和管理本地和远程的chart仓库。     
      • Tiller
        • tiller是helm的服务器,部署在kubernetes集群中,tiller用于接收helm 的请求。并根据chart生成kunernetes的部署文件(helm称为release),然后交给kubernetes创建应用。tiller还提供release的升级、删除、回滚等一系列功能。             
      • Chart
        • chart是helm的软件包,采用tar格式。 其中包含一组kubernetes资源相关的yaml文件。         
      • Repoistory                                
        • repoistory是helm的软件仓库,repoistory本质上是一个web服务器。该服务器保存了一系列chart软件包以给用户下载,并提供了一个该repoistory的chart包的清单以供查询。helm可以同时管理多个不同的repoistory。        
      • Release 
        • 使用helm install 命令在kubernetes集群部署的chart称为release。
        • 注意:helm提到的release和通常概念的版本不同,这里的release可以理解为helm使用chart打包部署的一个应用实例。     
    • Helm 工作原理
      •     
      • Chart install 过程:
        1. helm从指定的目录或者.tgz文件解析出chart结构信息。
        2. helm将指定的chart结构和values信息通过grpc传递给tiller。
        3. tiller根据chart和values生成一个relesae。
        4. tiller将release传递给kunernetes用于生成release。
      • Chart Update过程:
        1. helm从指定的目录或者.tgz文件解析出chart结构信息。
        2. helm将要更新的relsase的名称、结构信息、values信息传递给tiller。
        3. tiller生成release并更新指定名称的release的history。
        4. tiller将release发送给kubernetes用于更新release。 
      • Chart Rollback过程:
        1. helm将要回滚的release名称传递给tiller。
        2. tiller将根据release名称查找history。
        3. tiller将从history中获取一个release。
        4. tiller将上一个release发送给kubernetes用于替换当前的release。 
    • Helm 部署  
      • helm 客户端安装
        • helm init #安装helm客户端(默认是谷歌镜像)
        • helm init --client-only --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/  #使用国内镜像安装
      • helm 服务端安装tiller
      • 给 tiller 授权
      • 验证 tiller是否安装成功
        • kubectl -n kube-system get pods|grep tille
        • helm version 
      • 卸载 helm 服务端 tiller
        • helm reset --force
      • helm 使用
        1. 更换仓库:
          • 若遇到Unable to get an update from the “stable” chart repository (https://kubernetes-charts.storage.googleapis.com) 错误 手动更换stable 存储库为阿里云的存储库
            1. helm repo remove stable #移除原先的仓库。
            2. helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts #添加新的仓库地址
            3. helm repo update #更新仓库
        2. 查看存储库中可用的所有 helm chart:
          1. helm search #查看所有chart
        3. 更新 charts 列表:
          1. helm repo update #更新charts列表 
        4. 安装 charts 
          • Monocular是一个开源软件,用于管理kubernetes上以helm charts形式创建的服务。可以通过它来安装
            1. helm charts
            2. Nginx ingress controller
        5. 查看 kubernetes 已经安装的 charts
          • helm list #查看charts列表
        6. 删除安装的 chart 
          • helm delete xxx #删除指定的chart 
    • Helm Chart 结构     
      • chart 目录结构
        •  
          myapp/                     # Chart 目录
          ├── charts                 # 这个 charts 依赖的其他 charts,始终被安装
          ├── Chart.yaml             # 描述这个 Chart 的相关信息、包括名字、描述信息、版本等
          ├── LICENSE                # [可选]协议
          ├── Requirements.yaml      # [可选] 用于存放当前Chart依赖的其它Chart的说明文件
          ├── Readme.md              # [可选]当前chart的介绍
          ├── templates              # 模板目录
          │ ├── deployment.yaml      # deployment 控制器的 Go 模板文件
          │ ├── _helpers.tpl         # 以 _ 开头的文件不会部署到 k8s 上,可用于定制通用信息
          │ ├── ingress.yaml         # ingress 的模板文件 
          │ ├── NOTES.txt            # Chart 部署到集群后的一些信息,例如:如何使用、列出缺省值
          │ ├── service.yaml         # service 的 Go 模板文件
          │ ├── secrets.yaml         # secrets的 Go 模板文件
          │ └── tests
          │ └── test-connection.yaml
          └── values.yaml            # 模板的值文件,这些值会在安装时应用到 GO 模板生成部署文件

        • Chart.yaml 文件
          • name : [必须] chart的名称 
          • apiVersion :[可选] api版本和版本号
          • version : [必须] chart的版本号,版本号必须符合SemVer 2   简书 https://www.jianshu.com/p/e2619a7aa60e
          • description : [可选] 文档描述
          • keywords:
            •  -  [可选]关键字列表
          • home : [可选] 项目地址 
          • sources :
            •  -  [可选]当前chart的下载地址列表                                                
        • Chart 目录和 Requirements.yaml
          • chart支持两种方式表示依赖关系,可以使用Requirements.yaml或直接将依赖的chart放置到chart目录中。
          • dependencies:
            - name: example
            version: 1.2.3
            repository: http://example.com/charts
            - name: Chart名称
            version: Chart版本
            repository: 该Chart所在的仓库地址
        • templates 目录
          • templates目录存放了kubernetes部署文件的模板。
          • yaml文件模板遵循 go template语法 官网链接 https://golang.org/pkg/text/template/
          • 模板语法扩展了 golang/text/template的语法:
    # 这种方式定义的模版,会去除test模版尾部所有的空行
    {{- define "test"}}
    模版内容
    {{- end}}

    # 去除test模版头部的第一个空行
    {{- template "test" }}   
    • 检查配置和模板是否有效     
      • helm install --dry-run --debug <chart_dir> #验证配置的模板变量与渲染的yaml是否一致
    • 部署到kubernetes 
      • 在mychart目录下执行命令
        • helm install .   #安装到默认命名空间
        • helm install --namespace gitlab --name gitlab-runner *.tgz  #安装到指定命名空间
      • 查看部署的relaese
        • helm list              #查看relaese list
      • 删除部署的relaese
        • helm delete XXX  #执行删除命令 
      • 查看部署relaese相信信息
        • helm get XXX     #查看详细信息     
      • 打包分享
        • 我们可以修改chart.yaml中的配置信息,然后使用下列命令将chart打包成一个压缩文     件。
        • helm pakaage .        #打包文件,得到xxx-version.tgz

      • 将应用包发布到 Repository     
        • 虽然我们打包了 chart 并且发布到了helm本地目录中,但通过helm search找不到刚刚生成的chart包。
          • helm search XXX #查找包
        • 这是因为 repository目录中的  chart包还没有被helm管理。但是通过helm repo list 命令可以查看目前 helm中配置的repository信息。
          • helm repo list       #查看repository信息   
          • 注意:在新版中,使用helm init 命令会默认配置一个名为local的本地仓库。      
      • 第三方的chart存储库
      • helm 升级和回退一个应用
        • helm history xxx      #查看发布的历史版本
        • helm search XXX -l    #查看chart包版本    
        • 升级一个应用
          • 我们可以指定升到某一个版本,如果不指定,默认是最新版。 
          • helm upgrade XXX local/XXX   #升级
        • 回退一个应用
          • helm rollback XXX #默认回退到上一个版本     
        • 删除一个应用
          • helm delete XXX   #删除
          • helm ls -a XXX    #确认是否已经删除,状态为delete
          • helm ls -deleted  #列出删除的relaese 
      • helm 如何结合CI/CD?
        • 采用helm可以把零散的kubernetes应用配置文件作为一个chart管理。chart源码和源代码一起放到Git库中管理。通过把chart参数化,可以在测试环境和生成环境采用不同的chart参数。
        • helm CD/CD流程图:   
            
        • helm 如何在多环境下(Test、Staging、Production)的业务配置?
          • chart是支持参数替换的,可以把业务配置的相关参数设置为模板变量,使用helm install 命令部署的时候指定一个值,这样就可以把业务参数从chart中剥离了。
          • 例如:helm install --values=values-production.yaml wordpress
  • 相关阅读:
    Python中的垃圾回收机制
    一个很好的复习网站
    数据结构与算法 python语言描述
    数据结构与算法学习链接
    [转] 什么是WSGI
    【转】HTTP协议详解
    【转】Android HTTP协议
    Android获取本机IP地址
    Andrid 多线程下载
    Android 应用程序启动过程源代码分析
  • 原文地址:https://www.cnblogs.com/TSir/p/12313611.html
Copyright © 2011-2022 走看看