lqshow / notes

Cheat Sheet
10 stars 2 forks source link

Helm 快速入门 #51

Open lqshow opened 5 years ago

lqshow commented 5 years ago

Overview

Helm 是 Kubernetes 的一个包管理工具,就类似 Ubuntu上 的 APT,和 CentOs 上的 yum 命令。 具有如下功能:

# FROM SCRIPT
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh

Installing Tiller Server

# 安装 Tiller
helm init

# 覆盖 Tiller image
helm init --upgrade --tiller-image gcr.io/kubernetes-helm/tiller:v2.10.0

# 升级 Tiller
helm init --upgrade

# 确认 Tiller 是否在集群安装好
kubectl get pods --namespace kube-system -l app=helm

ClusterRoleBinding

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
# 调整 service account
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

Components

client 管理 charts, server 管理发布 release

Helm Client

用户命令行工具,用来创建,拉取,搜索和验证 Charts,初始化 Tiller 服务。

  1. 本地 chart 开发
  2. 仓库管理
  3. 与 Tiller sever 交互
  4. 发送预安装的 chart
  5. 查询 release 信息
  6. 要求升级或卸载已存在的 release

Tiller Server

部署在 Kubernetes 集群内部的 server,与 Helm client、Kubernetes API server 进行交互。

  1. 监听来自 Helm client 的请求

  2. 通过 chart 及其配置构建一次发布

  3. 安装 chart 到 Kubernetes集群,并跟踪随后的发布

  4. 通过与 Kubernetes交互升级或卸载 chart

Basic concept

Chart

一个 Helm 包,包含了运行 Kubernetes 一个应用实例所需要的镜像、依赖和资源定义等,是描述一组相关 Kubernetes 资源的文件集合。

Chart 的基本结构

.
├── Chart.yaml              # 用于描述这个 chart, 包括名字,描述信息以及版本号
├── README.md
├── templates               # Kubernetes 模板
│   ├── NOTES.txt           # 用于介绍 chart 部署后的信息。例如介绍如何使用该 chart,缺省设置等
│   ├── _helpers.tpl
│   ├── deployment.yaml
│   ├── pvc.yaml
│   ├── secrets.yaml
│   └── svc.yaml
└── values.yaml             # 用于存储 templates 目录中模板文件中用到的变量

Config

包含了应用发布配置信息

Release

在 Kubernetes 集群上运行的 Chart 及其配置的一个实例。

在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。

Repository

用于发布和存储 Chart 的仓库。

References