第七章 自定义Chart并部署一个应用

简介: 第七章 自定义Chart并部署一个应用

1.创建自定义模板 helm create <模板名称>

helm create mychart 是一个用于创建一个新的 Helm chart 的命令。Helm 是 Kubernetes 的包管理器,用于定义、安装和升级 Kubernetes 应用。

当你运行 helm create mychart 命令时,Helm 会创建一个新的目录结构,其中包含一个基本的 Helm chart。这个 chart 是一个用于定义 Kubernetes 应用的模板,它包含许多有用的文件和文件夹,如 Chart.yaml(描述 chart 的元数据),values.yaml(用于存储默认值和提示用户输入的提示)和 templates/(定义 Kubernetes 资源对象的模板)。

使用命令创建了 chart,可以使用 helm package 命令将其打包为 .tgz 文件,使用 helm install 或 helm upgrade 命令将安装到 Kubernetes 集群中。

# 使用命令创建自定义 chart 包
[root@master01 hpro]# helm create mychart
Creating mychart
[root@master01 hpro]#
[root@master01 hpro]#
 
# 可以看到已经创建了
[root@master01 hpro]# ls
mychart
 
# 文件包跟以前拉取的包没有什么区别
# 文件作用前面已经讲过
[root@master01 hpro]# cd mychart/
[root@master01 mychart]# ls
charts  Chart.yaml  templates  values.yaml
 
### 文件中
#  Chart.yaml 存放chrat属性信息
# templates 编写yaml文件
# yaml 文件可以使用全局变量
# templates 把这个文件清空使用k8s快速创建
 
 

2.清空 templates 文件夹使用 k8s命令导出YAML

# 清空 templates 文件夹
 
[root@master01 mychart]# cd templates/
[root@master01 templates]# ls
deployment.yaml  _helpers.tpl  hpa.yaml  ingress.yaml  NOTES.txt  serviceaccount.yaml  service.yaml  tests
 
# 可以看到已经清空
[root@master01 templates]# rm -rf *
[root@master01 templates]# ls

3.接着我们用命令创建YAML

# 前提是同学们有k8s基础啊
 
kubectl create deploy web-test --image=nginx --dry-run -o yaml > web-deploy.yaml
 

这条命令是在 Kubernetes 集群中创建一个新的部署(Deployment)对象,创建一个名为 web-test ,并使用 nginx 镜像作为容器的基础。命令解释如下:

  • kubectl: 这个就不多说了。
  • create: 用于创建新的资源对象。
  • deploy: 表示创建的是一个 Deployment 对象,即一种在集群中自动扩展和管理的应用程序容器化实例的资源。
  • web-test: 自定义的 Deployment 的名称。
  • --image=nginx: 指定容器镜像为 nginx
  • --dry-run: 模拟执行命令,而不会真正地创建资源。可以在不实际创建对象的情况下查看输出结果。
  • -o yaml: 这将输出格式设置为 YAML,用于配置文件和数据序列化。
  • > web-deploy.yaml: 这将输出重定向到名为 web-deploy.yaml 的文件中。如果该文件已存在,它将被覆盖;如果不存在,它将被创建。

4. 快速创建svc

kubectl expose deployment web-test --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > servics.yaml

这条命令用于在 Kubernetes 集群中暴露一个已存在的 Deployment(在本例中为 web-test),并获取其服务定义。命令解释如下:

  • kubectl: 这个就不多说了。
  • expose: 用于将一个或多个 Pod 暴露为 Kubernetes 服务。
  • deployment web-test: 表示资源名为 web-test 的 Deployment。
  • --port=80: 指定要暴露的端口号为 80。
  • --target-port=80: 指定目标端口号也为 80,通常用于匹配容器内运行的服务的端口。
  • --type=NodePort: 指定要创建的服务类型为 NodePort。
  • --dry-run: 模拟执行命令,而不会真正地创建资源。可以在不实际创建对象的情况下查看输出结果。
  • -o yaml: 这将输出格式设置为 YAML,这是一个人类可读的格式,常用于配置文件和数据序列化。
  • > servics.yaml: 重定向到名为 servics.yaml 的文件中。如果该文件已存在,将被覆盖;如果不存在,它将被创建。

5.这是我使用 k8s快速创建命令创建的,在(templates)文件夹下

[root@master01 templates]# ls
servics.yaml  web-deploy.yaml

6.使用helm创建自定义的模板 helm install <自定义名字> <文件夹>

# 使用Helm创建
[root@master01 hpro]# helm install web1 mychart/
NAME: web1
LAST DEPLOYED: Sun Jan 14 01:10:06 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
 
 
# 可以看到创建的 pod和svc 
[root@node1 test]# kubectl get svc -A
NAMESPACE     NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes            ClusterIP   10.96.0.1        <none>        443/TCP                  203d
default       web-test              NodePort    10.103.178.251   <none>        80:30187/TCP             39s
[root@node1 test]# kubectl get pod -A
NAMESPACE     NAME                                 READY   STATUS              RESTARTS   AGE
default       nginx-dep1-cf6cfcf66-2sh46           0/1     Completed           0          37d
default       web-test-5f547489c6-rm5c8            0/1     ContainerCreating   0          63s

6.通过helm卸载 helm uninstall  <应用名称>

# 通过helm卸载
[root@node1 test]# helm uninstall web1
release "web1" uninstalled

7.版本记录 helm upgrade <自定义名字> <文件夹>

[root@master01 hpro]# helm install web1 mychart/
NAME: web1
LAST DEPLOYED: Sun Jan 14 01:14:16 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
 
# 如果helm中yaml修改了要升级使用-可以看到 REVISION: 2 是2了
[root@master01 hpro]# helm upgrade web1 mychart/
Release "web1" has been upgraded. Happy Helming!
NAME: web1
LAST DEPLOYED: Sun Jan 14 01:14:23 2024
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 Kubernetes Ubuntu
第一章 Helm 详细介绍
第一章 Helm 详细介绍
289 0
|
12月前
|
Kubernetes JavaScript 前端开发
k8s学习--chart包开发(创建chart包)
k8s学习--chart包开发(创建chart包)
598 1
|
5月前
|
人工智能 自然语言处理 API
推荐几个常用免费的文本转语音工具
本文推荐了几款免费的文本转语音工具,包括功能全面的AI易视频、支持多语言的Google TTS、操作便捷的Natural Reader、离线使用的Balabolka以及轻量级的Speech2Go。其中AI易视频特别适合小说转语音,可智能分配角色音色,打造广播剧般的听觉体验。这些工具各具特色,能满足不同场景需求,助力内容创作更高效。
|
存储 关系型数据库 MySQL
第九章 使用Helm安装MySQL
第九章 使用Helm安装MySQL
374 1
|
负载均衡 算法
Envoy 负载均衡与限流设计
【2月更文挑战第29天】Envoy负载均衡策略包括优先级、恐慌阈值、区域感知和资源限制。它按优先级分配流量,使用恐慌阈值避免健康节点过载,实现区域内的首选服务选择,并通过资源管理限制上游集群的连接和请求数。此外,Envoy提供全局限流功能,在网络和HTTP层面对通信进行控制,确保服务器稳定性。
|
11月前
|
存储 人工智能 自然语言处理
高效档案管理案例介绍:文档内容批量结构化解决方案解析
档案文件内容丰富多样,传统人工管理耗时低效。思通数科AI平台通过自动布局分析、段落与标题检测、表格结构识别、嵌套内容还原及元数据生成等功能,实现档案的高精度分块处理和结构化存储,大幅提升管理和检索效率。某历史档案馆通过该平台完成了500万页档案的数字化,信息检索效率提升60%。
353 5
|
定位技术
数据收集方法
数据收集方法
702 1
|
12月前
|
Java Python
如何通过Java程序调用python脚本
如何通过Java程序调用python脚本
423 0
|
运维 监控 Docker
掌握 Docker Compose:简化你的多容器应用部署
在微服务架构和容器化技术日益普及的今天,管理多个容器的部署和运维变得颇具挑战。Docker Compose 通过一个 YAML 文件定义和运行多容器 Docker 应用,极大地简化了这一过程。本文介绍了 Docker Compose 的基本概念、使用方法及其优势,包括简化配置、一键部署、易于版本控制和环境一致性。通过具体示例展示了如何安装 Docker Compose、创建 `docker-compose.yml` 文件并管理服务。掌握 Docker Compose 可显著提高开发效率和应用运维质量。
|
人工智能 数据可视化 API
Multi-Agent实践第9期: 多智能体的升级体验
AgentScope 的新版本主要从 RAG,可视化和系统提示优化三个角度进行了更新,旨在降低开发者的开发代价,提供更加友好的开发体验。