第七章 自定义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 模板高效互用动态参数生成
88 1
|
6月前
|
前端开发 JavaScript API
构建一个自定义的图表库
构建一个自定义的图表库
|
定位技术 数据安全/隐私保护
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。
502 1
【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板
|
定位技术 数据安全/隐私保护
MIKE 21 教程 1.1 网格搭建界面介绍之点线面的创建 (Mesh Generator 工具)
MIKE 21 教程 1.1 网格搭建界面介绍之点线面的创建 (Mesh Generator 工具)
|
开发框架 图形学
Unity Hub 自定义一个创建新项目模板(Template)
Unity Hub 自定义一个创建新项目模板(Template)
485 1
Unity Hub 自定义一个创建新项目模板(Template)
|
机器学习/深度学习 数据采集 SQL
如何自定义开发算法组件
使用【阿里云-机器学习PAI-pai studio】,用python开发自定义算法组件,并且上传内网,发布部署到PAI平台
508 0
|
存储 数据可视化 前端开发
Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)
Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)
Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)
|
数据可视化 IDE 开发工具
OpenCV可视化界面插件Image Watch(支持VS2012-VS2019)
OpenCV可视化界面插件Image Watch(支持VS2012-VS2019)
843 0
|
存储 Kubernetes API
Kubernetes 学习笔记(三)--- 资源清单定义入门
目录 一、K8S中常见的资源 二、创建资源清单 2.1 创建资源的方法: 2.2 常用资源的配置清单 2.3 利用资源清单创建Pod 2.4 kubectl命令管理资源有三种用法 一、K8S中常见的资源 Kubernetes中把资源实例化以后称之为对象,这里先介绍K8S中常见的核心资源有哪些: 工作负载型资源(workload):Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob。
1987 0