kubernetes中如何实现Helm

64次阅读
没有评论

共计 4910 个字符,预计需要花费 13 分钟才能阅读完成。

这篇文章主要介绍 kubernetes 中如何实现 Helm,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一:简介
在 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

在执行 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

kubectl create serviceaccount –namespace kube-system tiller

kubectl create clusterrolebinding tiller-cluster-rule –clusterrole=cluster-admin –serviceaccount=kube-system:tiller

安装 tiller

helm init  -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1

为 tiller 设置 serviceaccount

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:

 {}

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 : 列出所有仓库

NAME  URL

stable https://kubernetes-charts.storage.googleapis.com

local  http://127.0.0.1:8879/charts

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 中如何实现 Helm”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计4910字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)