技术漫谈 | Kunbernetes利器-helm

栏目: 服务器 · 发布时间: 6年前

内容简介: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构建应用.

技术漫谈 | Kunbernetes利器-helm

原创作者:钟亮

为什么要拥抱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://docs.helm.sh/

中文文档 https://whmzsu.github.io/helm-doc-zh-cn/

参考Demo https://github.com/gitzl/helm/ ... nginx

原文地址: https://mp.weixin.qq.com/s/Ju1WsUxP6mW6hy7fMCUwAA


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机程序设计艺术(第1卷)

计算机程序设计艺术(第1卷)

[美] 唐纳德·E. 克努特 / 苏运霖 / 国防工业出版社 / 2002-9 / 98.00元

7卷本《计算机程序设计艺术》的第1卷以基本的程序设计概念和技术开始,然后专注于信息结构——计算机内部信息的表示、数据元素之间的结构关系以及如何有效地处理它们,给出了对于模拟、数值方法、符号计算、软件和系统设计的初等应用。书中附有大量习题和答案,标明了难易程序及数学概念的使用。 此新版本增加了几十项简单且重要的算法和技术,并对有关数学预备知识作了大量修改以适应现时研究的趋势。一起来看看 《计算机程序设计艺术(第1卷)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具