内容简介:helm是什么?引用helm官方的英文介绍:The package manager for Kubernetes Helm is the best way to find, share, and use software built for Kubernetes.意思就是helm是kubernetes生态中的一个包管理工具,可以快速发现、共享以及为Kubernetes构建应用.
helm是什么?
引用helm官方的英文介绍:
The package manager for Kubernetes Helm is the best way to find, share, and use software built for Kubernetes.意思就是helm是kubernetes生态中的一个包管理工具,可以快速发现、共享以及为Kubernetes构建应用.
原创作者:钟亮
为什么要拥抱helm?
在没使用helm之前,向kubernetes部署应用,我们要依次部署deployment、svc等,步骤较繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理.
本文包含的主要内容
一、 安装helm
二、helm常用命令
三、自定义Chart
四、 Chart模板
五、参考文档
一、安装helm
helm客户端
下载helm: https://github.com/helm/helm/releases ,其中有Mac、 Linux 、Windows版本,本文以Linux为例.
tar -zxvf helm-v2.9.1-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm helm help #确认是否安装成功
helm服务端
直接安装
helm init --upgrade
docker pull gcr.io/kubernetes-helm/tiller
tips:安装服务端会拉取:gcr.io/kubernetes-helm/tiller ,遗憾的是国内无法直接访问”gcr.io”等.
使用阿里云镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/kube_containers/tiller docker tag registry.cn-hangzhou.aliyuncs.com/kube_containers/tiller gcr.io/kubernetes-helm/tiller:v2.9.1 helm init
确认服务端(tiller)
kubectl get pods -o wide -n kube-system |grep tiller
Running tiller安装成功
确认客户端和服务端连接成功
helm version Client: &version.Version{ SemVer:"v2.9.1", GitCommit:" 20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"} Server: &version.Version{ SemVer:"v2.9.1", GitCommit:" 20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
显示client和Server表示客户端和服务连接成功}}}
**helm search**
通过helm search 可查找helm仓库中可用chart
{{{helm search mysql #查找mysql
NAME CHART VERSION APP VERSION DESCRIPTION
stable/mysql 0.8.2 5.7.14 Fast, reliable,
scalable, and easy to use open-...
stable/prometheus-mysql-exporter 0.1.0 v0.10.0 A Helm chart for
prometheus mysql exporter with...
stable/percona 0.3.2 5.7.17 free, fully compatible,
enhanced, open source d...
stable/percona-xtradb-cluster 0.1.5 5.7.19 free, fully compatible,
enhanced, open source d...
stable/phpmyadmin 0.1.7 4.8.2 phpMyAdmin is an mysql
administration frontend
stable/gcloud-sqlproxy 0.3.6 1.11 Google Cloud SQL Proxy
stable/mariadb 4.2.7 10.1.34 Fast, reliable,
scalable, and easy to use open-...
helm install stable/mysql #安装mysql
helm的一些常用命令如下
helm search 查找可用的Charts helm inspect 查看指定Chart的基本信息 helm install 根据指定的Chart 部署一个Release到K8s helm create 创建自己的Chart helm package 打包Chart,一般是一个压缩包文件 release: helm list 列出已经部署的Release helm delete [RELEASE] 删除一个Release. 并没有物理删除, 出于审计需要,历史可查。 helm status [RELEASE] 查看指定的Release信息,即使使用helm delete命令删除的Release. helm upgrade 升级某个Release helm rollback [RELEASE] [REVISION] 回滚Release到指定发布序列 helm get values [RELEASE] 查看Release的配置文件值 repo: helm repo list helm repo add [RepoName] [RepoUrl] helm repo update
自定义Chart
以jptStore为例自定义Chart
Chart基本结构
helm-Chart-demo-jptstore -templates -deployment.yaml -service.yaml -Chart.yaml -values.yaml -REAME.md
Chart.yaml
name: hello-Chart version: 1.0.0 `
deployment.yaml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: jpt-test namespace: ns-team-1-env-2 spec: replicas: 1 template: metadata: labels: app: jpt-test spec: containers: - name: jpt-test image: registry.cn-hangzhou.aliyuncs.com/mckj/jptstrore imagePullPolicy: Always ports: - containerPort: 8080 hostPort: 8083 protocol: TCP
镜像:registry.cn-hangzhou.aliyuncs.com/mckj/jptstrore,部署在ns-team-1-env-2命名空间下,映射主机端口为8083以便于部署后访问测试。名为jtp-test的deployment.
service.yaml
apiVersion: v1 kind: Service metadata: name: jpt-test namespace: ns-team-1-env-2 spec: ports: - name: http-p-8080 port: 8080 protocol: TCP targetPort: 8080 selector: app: jpt-test
在ns-team-1-env-2下部署一个名为jpt-test的service
install Chart
cd helm-Chart-demo-jptstore #切到templates目录级 helm install .
确认是否部署成功
kubectl get deploy,svc,pod -n ns-team-1-env-2 |grep jpt-test
Helm Chart模板
基于上面的Chart我们将镜像等参数提取到values.yaml文件中,在deployment.yaml通过模板访问
配置文件 values.yaml
image: repository: registry.cn-hangzhou.aliyuncs.com/mckj/jptstrore tag: latest pullPolicy: Always
注意 key和value之间有给空格,不然后面渲染模板语法通不过}}}
**deployment.yaml中引用values.yaml中的数据**
{{{apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{.Chart.Name}} #访问Chart.yaml中的数据
namespace: ns-team-1-env-2
spec:
replicas: 1
template:
metadata:
labels:
app: jpt-test
spec:
containers:
name: jpt-test
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
containerPort: 8080
hostPort: 8083
protocol: TCP
执行带有模板的Chart
cd helm helm install .
模板语法通过会出现下面的输出数据
RESOURCES:
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jpt-test ClusterIP 10.111.17.249 <none> 8080/TCP 0s
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
jpt-test 1 1 1 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
jpt-test-5bd49d546b-45dz8 0/1 Terminating 0 8d
jpt-test-5bd49d546b-75764 0/1 Pending 0 0s
下载本文例子访问 : https://github.com/gitzl/helm-Chart-demo-jptstore
参考文档
中文文档 https://whmzsu.github.io/helm-doc-zh-cn/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机程序设计艺术(第1卷)
[美] 唐纳德·E. 克努特 / 苏运霖 / 国防工业出版社 / 2002-9 / 98.00元
7卷本《计算机程序设计艺术》的第1卷以基本的程序设计概念和技术开始,然后专注于信息结构——计算机内部信息的表示、数据元素之间的结构关系以及如何有效地处理它们,给出了对于模拟、数值方法、符号计算、软件和系统设计的初等应用。书中附有大量习题和答案,标明了难易程序及数学概念的使用。 此新版本增加了几十项简单且重要的算法和技术,并对有关数学预备知识作了大量修改以适应现时研究的趋势。一起来看看 《计算机程序设计艺术(第1卷)》 这本书的介绍吧!