一:简介
在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求,环境变量等内容,并能为这些容器定制存储,网络等设备,最后设计和编写Deployment,Configmap,Service及Ingress等相关yaml配置文件,再提交给Kubernetes进行部署。这些复杂的过程将逐步被Helm应用包管理工具实现。
Helm是一个由CNCF孵化和管理的项目,用于对需要在Kubernetes上部署复杂应用进行定义,安装和更新。Helm以Chart的方式对应用软件信息描述,可以方便地创建,版本化,共享和发布复杂的应用软件。
二:Helm的主要概念
1. Chart:是Helm管理的安装包,里面包含需要部署的安装包资源。类似于yum中的rpm文件。每个Chart包含下面两部分:包的基本描述文件Chart.yaml放在templates目录中的一个或多个Kubernetes manifest文件模板。
2.Release:在Kubernetes集群上运行的一个Chart实例。在同一个集群上,一个Chart可以安装多次。例如一个MySQL Chart,如果想在服务器上运行两个MySQL数据库,就可以基本这个Chart安装两次。每次安装都会生成新的Release,会有独立的Release名称。
3.Repository: 用于存放和共享Chart的仓库。
三:Helm的安装
1.Helm由两部分组成,客户端helm和服务的tiller.
2.客户端helm的安装
在执行get_helm.sh脚本的过程中,如果无法获取helm安装包,可以提前通过https://github.com/kubernetes/helm/releases下载当前最新稳定版本的安装包到当前目录,再执行get_helm.sh文件。 这里使用的是helm-v2.9.1-linux-amd64.tar.gz。
3.客户端tiller安装
创建serviceaccount和clusterrolebinding
安装tiller
为tiller设置serviceaccount
检查是否安装成功
四:Helm的使用
1.helm search: 搜索可用的Chart
Helm初始化完成之后,默认配置为使用官方的Kubernetes Chart仓库。官方仓库包含大量的经过组织和持续维护的Chart,这个仓库通常命名为stable。
可以用helm inspect <chart_name>命令查看Chart的详细信息。
2.helm create:创建一个chart
helm create nginx
templates目录下的deployment.yaml是部署应用的yaml文件,其中的双?括号包扩起来的部分是Go template,其中的Values是在 values.yaml ?件中定义。
a. charts目录中是本chart依赖的chart,当前是空的
b. Chart.yaml这个yaml文件用于描述Chart的基本信息,如名称版本等
c. templates是Kubernetes manifest文件模板目录,模板使用chart配置的值生成Kubernetes manifest文件。模板文件使用的Go语言模板语法
d. templates/NOTES.txt 纯文本文件,可在其中填写chart的使用说明
e. value.yaml 是chart配置的默认值
3. helm install –dry-run –debug ./: 验证模板和配置
4.helm install : 安装Chart
在安装过程中,Helm客户端会输出一些有用的信息,例如Release的状态,以及额外的配置步骤等。在helm install过程中,可以使用helm status命令来跟踪release状态。
5.自定义Chart配置
a.--values 或者-f: 使用yaml配置文件进行参数配置,可以配置多个文件,最后一个优先生效。多个文件中重复的value会进行覆盖操作,不同的value会叠加生效。
b.--set: 在命令行直接设置参数
举例:
helm install stable/mariadb -f config.yaml -f config2.yaml
helm install stable/mariadb --set mariadbDatabase=firstdb,mariadbRootPassword=abcdefg
6.helm upgrade和helm rollback: 应用的更新或回滚
helm upgrade会利用用户提供的更新信息来对Release进行更新。应为Kubernetes Chart可能会有很大的规模或者相对复杂的关系,helm 会尝试进行最小影响的更新,只更新相对于上一个release来说发生变化的内容。
7.helm delete : 删除一个Release
8.helm repo : 仓库的使用
a. helm repo list : 列出所有仓库
b. helm repo add : 添加仓库
c.helm repo update : 更新仓库中的Chart信息
9.快速制作自定义的Chart
同其它软件开发过程一样,快速制作一个简单Chart的方法,就是从其它项目中复制并修改。例如我们要简单地改写前面MariaDB的Chart 令其使用本地的私有镜像仓库,可以按照如下步骤进行:
a. 下载Chart: 使用helm fetch stable/mariadb命令下载这一Chart的压缩包
b.编辑Chart
c.利用tar 解压后,将目录重新命名为mymariadb
d.修改templates中的deployment.yaml
e.将Chart.yaml 中的版本号修改为0.1.1 name为mymariadb
f.使用helm package mymariadb打包chart,并生成一个名为mymariadb-0.11.tgz的压缩包
g.安装chart 通过helm install mymariadb-0.1.1.tgz命令将新生成的Chart安装到集群当中。
10. 搭建私有Repository
Chart仓库主要由Chart压缩包和索引文件构成,通过HTTP/HTTPS 对外提供服务。
通过 helm repo index 创建索引
在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求,环境变量等内容,并能为这些容器定制存储,网络等设备,最后设计和编写Deployment,Configmap,Service及Ingress等相关yaml配置文件,再提交给Kubernetes进行部署。这些复杂的过程将逐步被Helm应用包管理工具实现。
Helm是一个由CNCF孵化和管理的项目,用于对需要在Kubernetes上部署复杂应用进行定义,安装和更新。Helm以Chart的方式对应用软件信息描述,可以方便地创建,版本化,共享和发布复杂的应用软件。
二:Helm的主要概念
1. Chart:是Helm管理的安装包,里面包含需要部署的安装包资源。类似于yum中的rpm文件。每个Chart包含下面两部分:包的基本描述文件Chart.yaml放在templates目录中的一个或多个Kubernetes manifest文件模板。
2.Release:在Kubernetes集群上运行的一个Chart实例。在同一个集群上,一个Chart可以安装多次。例如一个MySQL Chart,如果想在服务器上运行两个MySQL数据库,就可以基本这个Chart安装两次。每次安装都会生成新的Release,会有独立的Release名称。
3.Repository: 用于存放和共享Chart的仓库。
三:Helm的安装
1.Helm由两部分组成,客户端helm和服务的tiller.
2.客户端helm的安装
点击(此处)折叠或打开
- curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
-
- chmod 755 get_helm.sh
-
- ./get_helm.sh
3.客户端tiller安装
创建serviceaccount和clusterrolebinding
点击(此处)折叠或打开
- kubectl create serviceaccount --namespace kube-system tiller
-
- kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
点击(此处)折叠或打开
- helm init -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1
点击(此处)折叠或打开
- kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
点击(此处)折叠或打开
- kubectl -n kube-system get pods|grep tiller
-
- tiller-deploy-59c7578f9b-qqwpm 1/1 Running 0 17h
点击(此处)折叠或打开
- helm version
-
- Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
- Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
四:Helm的使用
1.helm search: 搜索可用的Chart
Helm初始化完成之后,默认配置为使用官方的Kubernetes Chart仓库。官方仓库包含大量的经过组织和持续维护的Chart,这个仓库通常命名为stable。
可以用helm inspect <chart_name>命令查看Chart的详细信息。
2.helm create:创建一个chart
helm create nginx
templates目录下的deployment.yaml是部署应用的yaml文件,其中的双?括号包扩起来的部分是Go template,其中的Values是在 values.yaml ?件中定义。
a. charts目录中是本chart依赖的chart,当前是空的
b. Chart.yaml这个yaml文件用于描述Chart的基本信息,如名称版本等
c. templates是Kubernetes manifest文件模板目录,模板使用chart配置的值生成Kubernetes manifest文件。模板文件使用的Go语言模板语法
d. templates/NOTES.txt 纯文本文件,可在其中填写chart的使用说明
e. value.yaml 是chart配置的默认值
3. helm install –dry-run –debug ./: 验证模板和配置
点击(此处)折叠或打开
- [debug] Created tunnel using local port: '44785'
-
- [debug] SERVER: "127.0.0.1:44785"
-
- [debug] Original chart version: ""
- [debug] CHART PATH: /root/helm/nginx
-
- NAME: listless-blackbird
- REVISION: 1
- RELEASED: Wed Jun 6 10:00:49 2018
- CHART: nginx-0.1.0
- USER-SUPPLIED VALUES:
- {}
-
- COMPUTED VALUES:
- affinity: {}
- image:
- pullPolicy: IfNotPresent
- repository: nginx
- tag: stable
- ingress:
- annotations: {}
- enabled: false
- hosts:
- - chart-example.local
- path: /
- tls: []
- nodeSelector: {}
- replicaCount: 1
- resources: {}
- service:
- port: 80
- type: ClusterIP
- tolerations: []
-
- HOOKS:
- MANIFEST:
-
- ---
- # Source: nginx/templates/service.yaml
- apiVersion: v1
- kind: Service
- metadata:
- name: listless-blackbird-nginx
- labels:
- app: nginx
- chart: nginx-0.1.0
- release: listless-blackbird
- heritage: Tiller
- spec:
- type: ClusterIP
- ports:
- - port: 80
- targetPort: http
- protocol: TCP
- name: http
- selector:
- app: nginx
- release: listless-blackbird
- ---
- # Source: nginx/templates/deployment.yaml
- apiVersion: apps/v1beta2
- kind: Deployment
- metadata:
- name: listless-blackbird-nginx
- labels:
- app: nginx
- chart: nginx-0.1.0
- release: listless-blackbird
- heritage: Tiller
- spec:
- replicas: 1
- selector:
- matchLabels:
- app: nginx
- release: listless-blackbird
- template:
- metadata:
- labels:
- app: nginx
- release: listless-blackbird
- spec:
- containers:
- - name: nginx
- image: "nginx:stable"
- imagePullPolicy: IfNotPresent
- ports:
- - name: http
- containerPort: 80
- protocol: TCP
- livenessProbe:
- httpGet:
- path: /
- port: http
- readinessProbe:
- httpGet:
- path: /
- port: http
- resources:
- {}
在安装过程中,Helm客户端会输出一些有用的信息,例如Release的状态,以及额外的配置步骤等。在helm install过程中,可以使用helm status命令来跟踪release状态。
5.自定义Chart配置
a.--values 或者-f: 使用yaml配置文件进行参数配置,可以配置多个文件,最后一个优先生效。多个文件中重复的value会进行覆盖操作,不同的value会叠加生效。
b.--set: 在命令行直接设置参数
举例:
helm install stable/mariadb -f config.yaml -f config2.yaml
helm install stable/mariadb --set mariadbDatabase=firstdb,mariadbRootPassword=abcdefg
6.helm upgrade和helm rollback: 应用的更新或回滚
helm upgrade会利用用户提供的更新信息来对Release进行更新。应为Kubernetes Chart可能会有很大的规模或者相对复杂的关系,helm 会尝试进行最小影响的更新,只更新相对于上一个release来说发生变化的内容。
7.helm delete : 删除一个Release
8.helm repo : 仓库的使用
a. helm repo list : 列出所有仓库
点击(此处)折叠或打开
- NAME URL
- stable https://kubernetes-charts.storage.googleapis.com
- local http://127.0.0.1:8879/charts
c.helm repo update : 更新仓库中的Chart信息
9.快速制作自定义的Chart
同其它软件开发过程一样,快速制作一个简单Chart的方法,就是从其它项目中复制并修改。例如我们要简单地改写前面MariaDB的Chart 令其使用本地的私有镜像仓库,可以按照如下步骤进行:
a. 下载Chart: 使用helm fetch stable/mariadb命令下载这一Chart的压缩包
b.编辑Chart
c.利用tar 解压后,将目录重新命名为mymariadb
d.修改templates中的deployment.yaml
e.将Chart.yaml 中的版本号修改为0.1.1 name为mymariadb
f.使用helm package mymariadb打包chart,并生成一个名为mymariadb-0.11.tgz的压缩包
g.安装chart 通过helm install mymariadb-0.1.1.tgz命令将新生成的Chart安装到集群当中。
10. 搭建私有Repository
Chart仓库主要由Chart压缩包和索引文件构成,通过HTTP/HTTPS 对外提供服务。
通过 helm repo index 创建索引
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28624388/viewspace-2155690/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28624388/viewspace-2155690/