Helm安装管理部署k8s工具
Helm 是 Kubernetes 的包管理工具,用于创建、打包和部署应用程序。它使用称为 Chart 的打包文件来描述 Kubernetes 资源对象的集合,从而简化了 Kubernetes 应用程序的部署和管理。
·
一、Helm 简介
Helm 是 Kubernetes 的包管理工具,用于创建、打包和部署应用程序。它使用称为 Chart 的打包文件来描述 Kubernetes 资源对象的集合,从而简化了 Kubernetes 应用程序的部署和管理。
二、Helm 包含两个组件:
Helm 客户端:用于创建、打包和部署 Chart。
Tiller 服务器:在 Kubernetes 集群中运行,负责管理已安装的 Chart。(Helm 3 中,Tiller 服务器被移除,因此不再需要单独安装 Tiller)
Helm 客户端与 Tiller 服务器通过 Kubernetes API 通信,以创建、更新和删除 Kubernetes 资源对象。
三、安装Helm
1. 安装Helm客户端
Kubernetes集群(版本为1.8或更高版本)
kubectl命令行工具
curl命令行工具
首先,我们需要从Helm官方网站下载Helm二进制文件。请根据您的操作系统下载相应的二进制文件。例如,在Linux系统上,我们可以使用以下命令来下载Helm v3.7.0:
curl https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz -o helm.tar.gz
然后,我们需要将二进制文件解压缩并将可执行文件移动到系统路径中。例如,在Linux系统上,我们可以使用以下命令:
tar -zxvf helm.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
验证是否成功安装
'version.BuildInfo{Version:"v3.7.0", GitCommit:"eeac83883cb4014fe60267ec6373570374ce770b", GitTreeState:"clean", GoVersion:"go1.16.8"}
2.创建Chart
创建一个nginx的chart
[root@longxi-01 home]# helm create nginx
Creating nginx
查看结构
[root@longxi-01 home]# tree nginx/
nginx/
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
3 directories, 10 files
Chart.yaml: Chart的元数据,包括Chart名称、版本、描述、维护者等信息。
values.yaml: 包含Chart的默认值和配置选项。使用者可以通过自定义values来覆盖默认值。
charts/: 包含Chart所依赖的其他Chart。这些依赖项也称为子Chart。
templates/: 包含Kubernetes资源的模板文件。这些模板文件使用Go语言的模板引擎来渲染Kubernetes YAML文件。
helpers/: 包含一些通用的Go语言模板文件,可以在其他模板文件中重用。
LICENSE: Chart的许可证。
README.md: Chart的文档,包括如何使用Chart、如何配置Chart等等。
下面是一些常用的目录和文件:
templates/deployment.yaml: 用于定义Kubernetes Deployment资源的模板文件。
templates/service.yaml: 用于定义Kubernetes Service资源的模板文件。
templates/ingress.yaml: 用于定义Kubernetes Ingress资源的模板文件。
templates/configmap.yaml: 用于定义Kubernetes ConfigMap资源的模板文件。
templates/secret.yaml: 用于定义Kubernetes Secret资源的模板文件。
values.yaml: 包含Chart的默认值和配置选项。使用者可以通过自定义values来覆盖默认值。
Chart.yaml: Chart的元数据,包括Chart名称、版本、描述、维护者等信息。
配置并启用Chart
接下来,我们需要配置 Chart,指定应用名称、镜像等信息。在 nginx 目录下,打开 values.yaml 文件,将其修改为如下内容:
replicaCount: 1
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: ""
service:
type: ClusterIP
port: 80
ingress:
enabled: false
annotations: {}
path: /
hosts:
- chart-example.local
tls: []
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}
启动
[root@longxi-01 ~]# cd /home/nginx/
[root@longxi-01 nginx]# helm install nginx .
NAME: nginx
LAST DEPLOYED: Wed Dec 13 23:00:33 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=nginx,app.kubernetes.io/instance=nginx" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT
四、拓展:
1. 添加常用的chart源
#添加阿里云的源
[root@longxi-01 nginx]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#更新
[root@longxi-01 nginx]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈
#查看源
[root@longxi-01 nginx]# helm repo list
NAME URL
stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#按源查询
[root@longxi-01 nginx]# helm search repo gitlab
NAME CHART VERSION APP VERSION DESCRIPTION
stable/gitlab-ce 0.2.1 GitLab Community Edition
stable/gitlab-ee 0.2.1 GitLab Enterprise Edition
#官网查询,慢一点但是比较全面
[root@longxi-01 nginx]# helm search hub gitlab
更多推荐
已为社区贡献7条内容
所有评论(0)