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/
作者:红雨
出处:https://www.cnblogs.com/52why
微信公众号: 红雨python