Helm-从0手动创建charts

Helm-从0手动创建charts

创建 chart 目录结构:

mkdir my-nginx
cd my-nginx

创建 Chart.yaml :

cat > Chart.yaml << EOF
apiVersion: v2
appVersion: v1.0
description: A Helm chart for Kubernetes
name: nginx-app
version: 0.1.0
EOF

创建 templates 目录:

[root@master my-nginx]# mkdir templates

创建 deployment.yaml:

[root@master my-nginx]# kubectl create deploy my-nginx --image nginx --dry-run=client -o yaml > templates/deployment.yaml
[root@master my-nginx]# cat templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: my-nginxname: my-nginx
spec:replicas: 1selector:matchLabels:app: my-nginxstrategy: {}template:metadata:creationTimestamp: nulllabels:app: my-nginxspec:containers:- image: nginxname: nginxresources: {}
status: {}
[root@master my-nginx]# tree ~/my-nginx/
/root/my-nginx/
├── Chart.yaml
└── templates└── deployment.yaml

以上完成后就可以使用 helm 部署,部署名为 my-nginx 的应用:

[root@master my-nginx]# helm install my-nginx .
NAME: my-nginx
LAST DEPLOYED: Tue Dec  6 17:03:59 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

查看创建的应用:

[root@master my-nginx]# helm ls
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART               APP VERSION
my-nginx        default         1               2022-12-06 17:03:59.142846484 +0800 CST deployed        nginx-app-0.1.0     v1.0

查看创建的实际资源:

[root@master my-nginx]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-6b74b79f57-lccqb   1/1     Running   0          78s

继续创建 service.yaml:

[root@master01 my-nginx]# kubectl expose deploy my-nginx --port 80 --dry-run=client -o yaml > templates/service.yaml
[root@master my-nginx]# cat templates/service.yaml
apiVersion: v1
kind: Service
metadata:creationTimestamp: nulllabels:app: my-nginxapp.kubernetes.io/managed-by: Helmname: my-nginx
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: my-nginx
status:loadBalancer: {}

创建 values.yaml:

cat > values.yaml << EOF
replicaCount: 2
service:type: NodePortnodePort: 30080
EOF

修改 deployment.yaml,注入变量,改为模板形式:

[root@master my-nginx]# cat templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: my-nginxname: my-nginx
spec:replicas: {{ .Values.replicaCount }}selector:matchLabels:app: my-nginxstrategy: {}template:metadata:creationTimestamp: nulllabels:app: my-nginxspec:containers:- image: nginxname: nginxresources: {}
status: {}

修改 service.yaml,注入变量,改为模板形式:

[root@master my-nginx]# cat templates/service.yaml 
apiVersion: v1
kind: Service
metadata:creationTimestamp: nulllabels:app: my-nginxname: my-nginx
spec:type: {{ .Values.service.type }}ports:- port: 80protocol: TCPtargetPort: 80nodePort: {{ .Values.service.nodePort }}selector:app: my-nginx
status:loadBalancer: {}

此时的目录结构:

[root@master my-nginx]# tree
.
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   └── service.yaml
└── values.yaml

修改后可升级 helm 版本,也可以删除原 helm 重新部署:

[root@master my-nginx]# helm upgrade my-nginx .
Release "my-nginx" has been upgraded. Happy Helming!
NAME: my-nginx
LAST DEPLOYED: Tue Dec  6 17:12:34 2022
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None

查看升级后的信息,REVISION 版本变为 2。

[root@master my-nginx]# helm ls
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART               APP VERSION
my-nginx        default         2               2022-12-06 17:12:34.223199278 +0800 CST deployed        nginx-app-0.1.0     v1.0

查看创建的资源,副本扩容为 2,新创建了 NodePort 类型的 service:

[root@master my-nginx]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-6b74b79f57-h7gtb   1/1     Running   0          18s
my-nginx-6b74b79f57-lccqb   1/1     Running   0          26m[root@master my-nginx]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        134m
my-nginx     NodePort    10.102.132.43   <none>        80:30080/TCP   17m

访问应用:

# curl http://ip:nodeport
[root@master my-nginx]# curl http://192.168.226.201:30080
[root@master my-nginx]# curl http://192.168.226.202:30080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
# 卸载
[root@master ~]# helm uninstall my-nginx
release "my-nginx" uninstalled
# 当您编辑chart时,可以通过运行helm lint来验证它的格式是否正确
[root@master my-nginx]# helm lint
==> Linting .
[INFO] Chart.yaml: icon is recommended1 chart(s) linted, 0 chart(s) failed
# 当需要打包chart以进行分发时,可以运行helm package命令
[root@master ~]# helm package my-nginx
Successfully packaged chart and saved it to: /root/nginx-app-0.1.0.tgz
# 现在可以通过helm install命令轻松安装该chart
[root@master ~]# helm install my-nginx ./nginx-app-0.1.0.tgz
NAME: my-nginx
LAST DEPLOYED: Wed Dec  7 13:29:05 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/611226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0开始学Git指令(2)

从0开始学Git指令 因为网上的git文章优劣难评&#xff0c;大部分没有实操展示&#xff0c;所以打算自己从头整理一份完整的git实战教程&#xff0c;希望对大家能够起到帮助&#xff01; 工作区&#xff08;Working Directory&#xff09; 就是你在电脑里能看到的目录&#x…

性能分析与调优: Linux 使用 iperf3 进行TCP网络吞吐量测试

目录 一、实验 1.环境 2.TCP网络吞吐量的微观基准测试 二、问题 1.iperf参数有哪些 2.iperf如何二进制安装 一、实验 1.环境 &#xff08;1&#xff09;主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系统 prometheus、node_exporter 192.168.204.18grafana监测…

dotdotdot插件快速实现多行文本的省略

jQuery.dotdotdot 前言 在“css新增文本样式&#xff08;完整&#xff09;”这篇&#xff0c;我们介绍了text-overflow属性省略多余的文本。用text-overflow属性可以直接省略单行文本&#xff0c;但省略多行文本&#xff0c;单独使用CSS是无法实现&#xff0c;今天我们介绍一…

RabbitMQ高级

文章目录 一.消息可靠性1.生产者消息确认2.消息持久化3.消费者确认4.消费者失败重试 MQ的一些常见问题 1.消息可靠性问题:如何确保发送的消息至少被消费一次 2.延迟消息问题:如何实现消息的延迟投递 3.高可用问题:如何避免单点的MQ故障而导致的不可用问题 4.消息堆积问题:如…

golang学习-匿名函数和闭包

1、匿名函数 没有函数名的函数&#xff0c;格式如下&#xff1a; func(参数)返回值{ 函数体 } func main() {//将匿名函数保存到变量中sum : func(x, y int) int {return x y}fmt.Println(sum(10, 20)) //通过变量调用匿名函数//自执行函数:匿名函数定义完加()直接执行fu…

了解不同方式导入导出的速度之快

目录 一、用工具导出导入 Navicat&#xff08;速度慢&#xff09; 1.1、导入&#xff1a; 共耗时&#xff1a; 1.2、导出表 共耗时&#xff1a; 二、用命令语句导出导入 2.1、mysqldump速度快 导出表数据和表结构 共耗时&#xff1a; 只导出表结构 导入 共耗时&…

保持数据同步:高并发场景下的数据库与缓存一致性维护策略

标题&#xff1a;保持数据同步&#xff1a;高并发场景下的数据库与缓存一致性维护策略 在当今数字化时代&#xff0c;应用程序对实时数据的需求变得越来越高&#xff0c;而在处理大量用户同时访问的情况下&#xff0c;数据库与缓存的一致性成为了一个挑战。无论是电子商务平台…

【前沿技术杂谈:ChatGPT】ChatGPT——热潮背后的反思

【前沿技术杂谈&#xff1a;ChatGPT】ChatGPT——热潮背后的反思 缘起&#xff1a;无中生有&#xff0c;涅槃重生人工智能技术人工智能的发展史无中生有内容自动生成技术的发展代表企业OpenAI-GPT系列技术的发展历程ChatGPT新特点 热潮&#xff1a;万众瞩目&#xff0c;群雄逐鹿…

深入理解STL空间分配器(一)

目录 1.概述 2. STL的几种空间分配器介绍 3. new_allocator 3.1 allocate的实现 3.2 deallocate的实现 3.3 其中几个宏的定义 3.4 _M_max_size的实现 4. malloc_allocator 1.概述 STL的空间分配器&#xff08;allocator&#xff09;定义于命名空间std内&#xff0c;主…

Super关键字

与this关键字用法相同&#xff0c;但super关键字指的是父类的对象 我们常用super.来调用父类对象的属性或者方法 super关键字出来调用父亲的属性还可以调用父亲的方法&#xff0c;方式也是super. super() super()表示调用父类的无参构造 super(参数列表)表示调用父类的有参…

Java中的网络编程

文章目录 网络基础知识IP 地址端口协议 Java 中网络编程InetAddress&#xff08;静态类&#xff09;UDP 通信原理UDP 发送数据步骤UDP 接收数据步骤UDP 发送接收案例 TCP 通信原理TCP 发送数据步骤TCP 接收数据步骤TCP 发送接收案例 网络基础知识 概述&#xff1a;在网络通信协…

认识Linux指令之与时间相关的指令

01.date命令 date 指定格式显示时间&#xff1a; date %Y:%m:%d date 用法&#xff1a;date [OPTION]... [FORMAT] 1.在显示方面 在显示方面&#xff0c;使用者可以设定欲显示的格式&#xff0c;格式设定为一个加号后接数个标记&#xff0c;其中常用的标记列表如下 %H : …

RT-Thread: 线程创建及应用

说明&#xff1a;这里记录 RT-Thread 的具体创建过程&#xff0c;相当于线程创建的一个模式&#xff0c;具体线程相关的信息没做介绍&#xff0c; RT-Thread 的官方文档里面已经有详细介绍&#xff0c;如有需要请移步官网。 官网链接&#xff1a;https://www.rt-thread.org/do…

【揭秘APT攻击】——内网渗透实战攻略,带你领略网络安全的绝密世界!

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 介绍 什么是内网&#xff1f; 什么是内网渗透&#xff1f; 内网渗透的目的&#xff1a; 内网…

天鹅目标检测数据集VOC格式280张

天鹅&#xff0c;一种优雅而美丽的鸟类&#xff0c;以其洁白的羽毛、优美的身姿和动人的歌声而闻名。 天鹅属于鸟纲、鸭科&#xff0c;是一种大型水禽。它们的羽毛通常是白色、黑色或灰色&#xff0c;非常光滑且富有光泽。天鹅的头部和颈部非常细长&#xff0c;呈现出优雅的曲…

面试题-手撕NMS(非极大值抑制)

非极大值抑制&#xff08;Non-Maximum Suppression&#xff0c;NMS&#xff09;是一种常用于目标检测和计算机视觉中的算法&#xff0c;用于去除重叠的边界框&#xff0c;保留最可能是真实目标的边界框。 其核心就是对一组检测框&#xff0c;找出其中属于同一个类别且分数最高…

烟雾识别摄像机

烟雾识别摄像机是一种具有智能识别功能的监控设备&#xff0c;它能够通过图像识别技术检测和识别烟雾&#xff0c;提供实时监测和报警功能。这种摄像机通常应用于各种场所&#xff0c;如工厂、仓库、办公楼、酒店等&#xff0c;起到了重要的安全监测作用。 烟雾识别摄像机的工作…

C++入门【26-C++ Null 指针】

在变量声明的时候&#xff0c;如果没有确切的地址可以赋值&#xff0c;为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。 NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序&#xff1a; 实例 #include <iostream> using…

新手练习项目 4:简易2048游戏的实现(C++)

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#xff09; 目录 一、效果图二、代码&#xff08;带注释&#xff09;三、说明 一、效果图 二、代码&#xff08;带…

光伏方案设计有什么注意点?

光伏方案设计是实现光伏发电系统高效运行的关键环节。在进行光伏方案设计时&#xff0c;有几个重要的注意点需要特别关注。 首先&#xff0c;要充分考虑地理位置和气候条件。不同地区的日照时数、太阳辐射强度和日照角度都有所不同&#xff0c;这些因素直接影响光伏发电系统的发…