• helm K8s打包介绍


    Helm介绍

    Helm 是 Kubernetes 的包管理器,诞生于2015年,2018年加入CNCF。

    Helm安装

    二进制版本安装

    • tar -zxvf helm-v3.0.0-linux-amd64.tar.gz(解压targz包)
    • mv linux-amd64/helm /usr/local/bin/helm(移动可执行文件)

    备注:获取下载链接之后,使用wget命令下载。

    包管理器下载

    curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
    sudo apt-get install apt-transport-https --yes
    echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
    sudo apt-get update
    sudo apt-get install helm
    

    备注:目前linux系统并不自带helm的源。

    三大概念

    chart:chart即helm包,包含了在k8s中运行应用程序或服务需要的所有资源定义。可以把它看成centos中的rpm。

    repository:仓库,用来存放charts的地方。可以把它看成docker中的docker hub。

    release:运行在k8s中的chart实例,一个chart包通常可以在同一集群安装多次。

    Helm资源安装顺序

    • Namespace:命令空间
    • NetworkPolicy:网络ACL
    • ResourceQuota:资源配置,限制资源使用的策略
    • LimitRange:namespace范围内,限制pod或container资源使用量的策略
    • PodSecurityPolicy
    • PodDisruptionBudget
    • 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

    创建charts

    基础命令

    # 初始化charts包
    helm create chart-name
    # 修改charts包中配置
    # 打包charts
    helm package chart-name
    # 安装chart
    helm install chart-name chart-name-{version}.tgz
    

    文件结构

    这里是helm2.16.9初始化的文件结构,与其它版本可能会有些差异,不过大同小异。

    chart-name
    	charts/								# 包含chart依赖的其他chart
    	Chart.yaml							# 包含了chart信息的YAML文件
    	templates/							# 模板目录
    		deployment.yaml					# deployment声明文件
    		ingress.yaml					# ingress声明文件
    		serviceaccount.yaml				# serviceaccount声明文件
    		tests/							# 测试文件夹
    			test-connection.yaml
    		_helpers.tpl
    		NOTES.txt						# 包含简要使用说明的纯文本文件
    		service.yaml					# service 声明文件
    	values.yaml							# chart 默认的配置值
    

    Chart.yaml文件是chart包的必需文件,初始时包含如下信息:

    apiVersion: chart API 版本 (必需)
    appVersion: 包含的应用版本(可选)。不需要是语义化,建议使用引号
    description: 一句话对这个项目的描述(可选)
    name: chart名称 (必需)
    version: 语义化2 版本(必需)
    

    其余可添加信息:

    kubeVersion: 兼容Kubernetes版本的语义化版本(可选)
    type: chart类型 (可选)
    keywords:
      - 关于项目的一组关键字(可选)
    home: 项目home页面的URL (可选)
    sources:
      - 项目源码的URL列表(可选)
    dependencies: # chart 必要条件列表 (可选)
      - name: chart名称 (nginx)
        version: chart版本 ("1.2.3")
        repository: (可选)仓库URL ("https://example.com/charts") 或别名 ("@repo-name")
        condition: (可选) 解析为布尔值的yaml路径,用于启用/禁用chart (e.g. subchart1.enabled )
        tags: # (可选)
          - 用于一次启用/禁用 一组chart的tag
        import-values: # (可选)
          - ImportValue 保存源值到导入父键的映射。每项可以是字符串或者一对子/父列表项
        alias: (可选) chart中使用的别名。当你要多次添加相同的chart时会很有用
    maintainers: # (可选)
      - name: 维护者名字 (每个维护者都需要)
        email: 维护者邮箱 (每个维护者可选)
        url: 维护者URL (每个维护者可选)
    icon: 用做icon的SVG或PNG图片URL (可选)
    deprecated: 不被推荐的chart (可选,布尔值)
    annotations:
      example: 按名称输入的批注列表 (可选).
    

    注意:除此之外,不要添加其它信息,从helm3.3.2之后,不容许有其它额外字段。如果一定有需要,需要在annotation中添加自定义的元数据。

    Helm官方中文教程:https://helm.sh/zh/docs/

  • 相关阅读:
    设计模式系列之-抽象工厂
    设计模式系列之-工厂方法
    设计模式系列之-简单工厂
    键盘事件keydown、keypress、keyup随笔整理总结(摘抄)
    js 方法重载
    JS禁止右键
    jquery.validate运用和扩展
    Javascript Math.ceil()与Math.round()与Math.floor()区别
    Jquery操作下拉框(DropDownList)实现取值赋值
    jquery中attr和prop的区别
  • 原文地址:https://www.cnblogs.com/52why/p/16248887.html
Copyright © 2020-2023  润新知