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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 第七章 自定义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
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
第八章 Helm 模板高效互用动态参数生成
第八章 Helm 模板高效互用动态参数生成
90 1
|
6月前
|
前端开发 JavaScript API
构建一个自定义的图表库
构建一个自定义的图表库
|
6月前
|
开发者 iOS开发
【教程】修改应用程序开发者名称的步骤
【教程】修改应用程序开发者名称的步骤
|
定位技术 数据安全/隐私保护
MIKE 21 教程 1.3 网格搭建界面介绍之网格生成 (Mesh Generator 工具)
MIKE 21 教程 1.3 网格搭建界面介绍之网格生成 (Mesh Generator 工具)
|
Kubernetes 搜索推荐 应用服务中间件
【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板
chart:代表helm包,包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。 Repository(仓库):用来存放和共享 charts 的地方。 Release :运行在 Kubernetes 集群中的 chart 的实例,一个 chart 通常可以在同一个集群中安装多次,每一次安装都会创建一个新的 release。
511 1
【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板
|
3月前
|
资源调度 搜索推荐 Shell
使用VitePress静态网站生成器创建组件库文档网站并部署到GitHub
本文介绍了如何使用 Vue3、TypeScript 和 Vite 开发组件库并将其发布到 npm。文章详细描述了安装依赖、配置项目、创建文档网站以及编写组件文档的步骤。通过使用 VitePress,可以轻松搭建组件库的文档站点,并实现 Algolia 搜索功能。此外,还提供了自动化脚本用于部署静态网站至 GitHub 以及发布组件库到 npm。最后,展示了完整的目录结构和网站效果。
使用VitePress静态网站生成器创建组件库文档网站并部署到GitHub
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的信息学科平台系统的设计与实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的信息学科平台系统的设计与实现(源码+lw+部署文档+讲解等)
|
6月前
|
XML 存储 数据格式
使用自定义模板和示例项目开发LabVIEW项目
使用自定义模板和示例项目开发LabVIEW项目
52 1
|
定位技术 数据安全/隐私保护
MIKE 21 教程 1.1 网格搭建界面介绍之点线面的创建 (Mesh Generator 工具)
MIKE 21 教程 1.1 网格搭建界面介绍之点线面的创建 (Mesh Generator 工具)
|
存储 API
Revit API 修改项目文档中族参数的几个要点
Revit API 修改项目文档中族参数的几个要点
Revit API 修改项目文档中族参数的几个要点