第五章 使用Helm部署一个应用

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 第五章 使用Helm部署一个应用

PS:使用Heml的好处就是在不用编写一堆的YAML了真的可以解放双手又可以愉快的摸鱼了。

1.使用 chart 部署一个应用(这个应用为例 redis)

1.在仓库中查找对应的版本,查找 chart 包
#命令格式
 
helm search repo <应用名称>
 
# 可以看到查找到的历史版本
 
[root@master01 hpro]#     helm search repo redis
NAME                                    CHART VERSION   APP VERSION     DESCRIPTION
aliyun/redis                            1.1.15          4.0.8           Open source, advanced key-value store. It is of...
aliyun/redis-ha                         2.0.1                           Highly available Redis cluster with multiple se...
bitnami/redis                           18.6.3          7.2.4           Redis(R) is an open source, advanced key-value ...
bitnami/redis-cluster                   9.1.5           7.2.4           Redis(R) is an open source, scalable, distribut...
stable/prometheus-redis-exporter        3.5.1           1.3.4           DEPRECATED Prometheus exporter for Redis metrics
stable/redis                            10.5.7          5.0.7           DEPRECATED Open source, advanced key-value stor...
stable/redis-ha                         4.4.6           5.0.6           DEPRECATED - Highly available Kubernetes implem...
aliyun/sensu                            0.2.0                           Sensu monitoring framework backed by the Redis ...
stable/sensu                            0.2.5           0.28            DEPRECATED Sensu monitoring framework backed by...
2.如果想要查看具体的详细信息使用下面的命令显示特定 Chart 的 values.yaml 文件的内容,内容呢显示很多,我只是复制了第一行。
# 命令格式
helm show values <应用名称>
 
# 显示特定的 values.yaml 文件的内容
[root@master01 hpro]# helm show values aliyun/redis
# ServiceToken: ""
 
 
# 也可以通过这个命令,按空格键翻页
[root@master01 hpro]# helm show values aliyun/redis | more
# ServiceToken: ""
 
# 命令格式
helm show chart <应用名称>
 
# 显示特定的 chart .yaml 文件的内容
[root@master01 hpro]# helm show chart aliyun/redis
3.通过Helm从阿里云仓库拉取redis应用,并将其保存在你的本地目录中。默认情况下会下载最新版本的Chart。
# 命令格式
helm pull <Chart名称>
 
# 拉取到本地
[root@master01 hpro]# helm pull aliyun/redis
 
# 拉取指定版本的应用
# 命令格式 
helm pull <应用名> --version <版本>
[root@master01 hpro]# helm pull stable/redis --version 10.5.7
 
# 可以看到是一个压缩包
[root@master01 hpro]# ls
redis-1.1.15.tgz
 
# 接着进行解压
[root@master01 hpro]# tar -xf redis-1.1.15.tgz
 
# 解压后就是一个这样的文件夹
[root@master01 hpro]# ls
redis  redis-1.1.15.tgz
 
# 进入文件夹可以看到
[root@master01 hpro]# cd redis/
[root@master01 redis]#
[root@master01 redis]#
[root@master01 redis]#
[root@master01 redis]# ls
Chart.yaml  README.md  templates  values.yaml
4.Chart 包中各个文件的作用-(文件内容后边会讲解)

这些文件都是 Helm Chart 的组成部分,每个文件都有其特定的用途:

  1. Chart.yaml:这个文件用于描述这个 Chart 的基本信息,包括名字、描述信息以及版本等。
  2. values.yaml:这个文件包含了 Chart 的所有可配置项及其默认值。在安装 Chart 时,用户可以传递配置项的值来覆盖默认值。
  3. templates/:这个目录中包含的是 Kubernetes 资源申明的模板文件。在安装时,Kubernetes 会将这些模板文件与配置项的值结合起来,得到 Kubernetes 的资源定义,并应用到 Kubernetes 上。
  4. README.md:这是一个易读的帮助文档文件,为用户提供关于如何使用 Chart 的信息。
5. templates 文件夹中的作用 -(文件内容后边会讲解)
# 可以看到有几个文件
 
[root@master01 redis]# cd templates/
[root@master01 templates]# ls
deployment.yaml  _helpers.tpl  networkpolicy.yaml  NOTES.txt  pvc.yaml  secrets.yaml  svc.yaml
  1. Chart.yaml:描述了 Chart 的基本信息,包括名字、描述信息以及版本等。
  2. values.yaml:包含了 Chart 的所有可配置项及其默认值。在安装 Chart 时,用户可以传递配置项的值来覆盖默认值。
  3. templates/:这个目录中包含的是 Kubernetes 资源申明的模板文件。在安装时,Kubernetes 会将这些模板文件与配置项的值结合起来,得到 Kubernetes 的资源定义,并应用到 Kubernetes 上。
  4. _helpers.tpl:Helm 视为公共库定义文件,主要用于定义通用的子模版、函数等,不会将这些公共库文件的渲染结果提交给 Kubernetes 处理。
  5. deployment.yaml:用于定义 Kubernetes 的 Deployment 资源。
  6. ingress.yaml:用于定义 Kubernetes 的 Ingress 资源。
  7. networkpolicy.yaml:用于定义 Kubernetes 的 NetworkPolicy 资源。
  8. NOTES.txt:Chart 包的帮助信息文件,执行 Helm install 命令安装成功后会输出这个文件的内容。
  9. pvc.yaml:用于定义 Kubernetes 的 PersistentVolumeClaim 资源。
  10. secrets.yaml:用于定义 Kubernetes 的 Secret 资源。
  11. svc.yaml:用于定义 Kubernetes 的 Service 资源。
6.命令以及文件功能都介绍了接着我们部署一个redis应用。使用 helm install 命令可以安装一个 Helm Chart 到 Kubernetes 集群中。这个命令中,需要指定 Chart 的名称、版本以及你要安装的配置。
# 可以直接安装不用下载
# 命令格式 helm install <自定义的名字> <应用>
helm install ui-test stable/weave-scope
 
# 命令格式
helm install <应用名>  <文件包>
 
[root@master01 hpro]# helm install test-redis  ./redis
WARNING: This chart is deprecated
NAME: test-redis
LAST DEPLOYED: Fri Jan 12 22:19:22 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
This Helm chart is deprecated
 
# 安装成功后会显示一些配置信息
 
To connect to your Redis server:
 
1. Run a Redis pod that you can use as a client:
 
   kubectl run --namespace default test-redis-client --rm --tty -i --restart='Never' \
    --env REDIS_PASSWORD=$REDIS_PASSWORD \
   --image docker.io/bitnami/redis:5.0.7-debian-10-r32 -- bash
 
2. Connect using the Redis CLI:
   redis-cli -h test-redis-master -a $REDIS_PASSWORD
   redis-cli -h test-redis-slave -a $REDIS_PASSWORD
 
To connect to your database from outside the cluster execute the following commands:
 
    kubectl port-forward --namespace default svc/test-redis-master 6379:6379 &
    redis-cli -h 127.0.0.1 -p 6379 -a $REDIS_PASSWORD

逐条解释命令:

  1. 连接到Redis服务器
  • 首先,运行一个Redis pod作为客户端。这里使用了kubectl run命令来创建一个临时的pod。这个pod仅用于连接到Redis服务器。
  • --namespace default:指定在默认的命名空间中运行这个pod。
  • test-redis-client:这是pod的名称。
  • --rm:当这个pod退出时,自动删除它。
  • --tty -i:为pod分配一个TTY并保持其处于交互模式。
  • --restart='Never':确保pod不会在退出后自动重启。
  • --env REDIS_PASSWORD=$REDIS_PASSWORD:设置环境变量,用于传递Redis的密码。
  • --image docker.io/bitnami/redis:5.0.7-debian-10-r32:指定使用的Redis镜像。
  • -- bash:在容器内部启动bash shell。
  1. 使用Redis CLI连接
  • redis-cli -h test-redis-master -a $REDIS_PASSWORD:使用Redis命令行工具连接到名为test-redis-master的服务,并使用环境变量中的密码进行身份验证。
  • redis-cli -h test-redis-slave -a $REDIS_PASSWORD:同上,但连接到名为test-redis-slave的服务。
  1. 从集群外部连接到数据库
  • kubectl port-forward --namespace default svc/test-redis-master 6379:6379 &:使用kubectl port-forward命令将名为test-redis-master的服务的6379端口转发到本地的6379端口。这样,你就可以从外部机器访问这个端口来连接到Redis服务器。
  • redis-cli -h 127.0.0.1 -p 6379 -a $REDIS_PASSWORD:从外部机器使用Redis命令行工具连接到本地的6379端口,并使用环境变量中的密码进行身份验证。
7.可以看到已经在创建了
[root@master01 hpro]# kubectl get pod -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
default       test-redis-master-0                0/1     Pending   0          16s
default       test-redis-slave-0                 0/1     Pending   0          16s
kube-system   coredns-7ff77c879f-gthg8           1/1     Running   4          26d
kube-system   coredns-7ff77c879f-xwkl9           1/1     Running   4          26d
kube-system   etcd-master01                      1/1     Running   17         27d
kube-system   kube-apiserver-master01            1/1     Running   11         27d
kube-system   kube-controller-manager-master01   1/1     Running   5          27d
kube-system   kube-flannel-ds-2qj7v              1/1     Running   7          26d
kube-system   kube-flannel-ds-82v8z              1/1     Running   3          26d
kube-system   kube-proxy-5gzhq                   1/1     Running   3          27d
kube-system   kube-proxy-7h646                   1/1     Running   5          27d
kube-system   kube-scheduler-master01            1/1     Running   5          27d

说明:Pending    是因为没有做 Volume 后边会讲到

Warning  FailedScheduling  6s (x8 over 8m20s)  default-scheduler  running "VolumeBinding" filter plugin for pod "test-redis-master-0": pod has unbound immediate PersistentVolumeClaims

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
18天前
|
存储 Kubernetes Ubuntu
第一章 Helm 详细介绍
第一章 Helm 详细介绍
42 0
|
7月前
|
Kubernetes Linux Shell
【K8S 系列】k8s 学习二,kubernetes 核心概念及初步了解安装部署方式
【K8S 系列】k8s 学习二,kubernetes 核心概念及初步了解安装部署方式
111 0
|
17天前
|
存储 NoSQL Redis
Helm安装集群整理
Helm安装集群整理
|
SQL 开发框架 运维
Helm开发/调试的最佳实践
本文的目标不限于对Helm官方文档的翻译或解释,更在于帮助开发者能够快速编写出一个标准且合理的helm chart。 ## Helm简介 一句话描述:Helm是Kubernetes的包管理工具 ### Helm vs Operator Helm 和 Operator都可以实现在k8s上安装应用。但二者有着不同的适用场景。 Helm适用于: - 开发者群体 - 门槛低:熟悉k8s即可 -
1739 0
|
18天前
|
存储 Kubernetes 监控
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
49 0
|
18天前
|
Kubernetes 容器
ChaosBlade的Helm安装双架构主要包括以下步骤
【1月更文挑战第22天】【1月更文挑战第109篇】ChaosBlade的Helm安装双架构主要包括以下步骤
127 1
|
18天前
|
Kubernetes 容器
ChaosBlade的Helm安装双架构主要包括以下步骤:
【1月更文挑战第8天】【1月更文挑战第39篇】ChaosBlade的Helm安装双架构主要包括以下步骤:
156 1
|
11月前
|
存储 Kubernetes 关系型数据库
事半功倍:Helm的了解与使用
事半功倍:Helm的了解与使用
177 0
|
存储 Kubernetes 应用服务中间件
部署和体验Helm(2.16.1版本)
在Kubernetes上进行容器化部署并非易事,docker、环境变量、存储、网络等方面都会涉及到,这些复杂的操作可以被Helm应用包管理工具实现,避免了全手工操作的
504 0
部署和体验Helm(2.16.1版本)
|
存储 Kubernetes Cloud Native
【云原生-Helm】k8s-helm-简介及基础配置
【云原生-Helm】k8s-helm-简介及基础配置
330 0
【云原生-Helm】k8s-helm-简介及基础配置