首页 > 其他分享 >helm初始化自定义应用

helm初始化自定义应用

时间:2024-09-25 09:45:13浏览次数:7  
标签:初始化 自定义 yaml Chart Helm values myapp memory helm

使用 Helm 初始化一个应用(即创建一个 Helm Chart),可以通过 Helm 提供的 helm create 命令生成一个基础的 Helm Chart 目录结构。下面是具体步骤:

1. 安装 Helm

首先确保你的环境中已经安装了 Helm。如果还没有安装,可以按照 Helm 官方文档进行安装:

2. 初始化 Helm Chart

运行以下命令来创建一个新的 Helm Chart:

helm create myapp

这将会在当前目录下生成一个名为 myapp 的目录,里面包含了一些预生成的模板文件和默认配置。

3. Helm Chart 目录结构

helm create 命令生成的目录结构如下:

myapp/
├── Chart.yaml            # Chart 的元数据
├── values.yaml           # 配置值的默认文件
├── charts/               # 依赖的子 Chart
├── templates/            # 用于存放 Kubernetes 资源文件模板
│   ├── deployment.yaml   # Deployment 资源模板
│   ├── service.yaml      # Service 资源模板
│   └── _helpers.tpl      # 模板辅助文件
└── .helmignore           # 忽略文件

4. 修改 Chart.yaml

Chart.yaml 文件是 Helm Chart 的元数据文件,通常需要根据项目情况进行修改:

apiVersion: v2
name: myapp              # Chart 的名字
description: A Helm chart for Kubernetes

type: application
version: 0.1.0           # 当前 Chart 版本
appVersion: "1.0"        # 应用程序的版本号

5. 修改 values.yaml

values.yaml 文件包含了模板使用的默认配置,你可以根据实际应用的需求修改里面的参数。

例如:

replicaCount: 2

image:
  repository: nginx
  tag: "1.16"
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80

resources:
  limits:
    cpu: 100m
    memory: 128Mi
  requests:
    cpu: 100m
    memory: 128Mi

6. 自定义模板文件

templates/ 目录下存放的是 Kubernetes 资源模板文件,Helm 会根据这些模板生成 Kubernetes 资源文件并部署。

你可以编辑或添加自己的 Kubernetes 资源模板文件,如 deployment.yamlservice.yaml 等。例如,deployment.yaml 默认模板文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "myapp.fullname" . }}
  labels:
    {{- include "myapp.labels" . | nindent 4 }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      {{- include "myapp.selectorLabels" . | nindent 6 }}
  template:
    metadata:
      labels:
        {{- include "myapp.selectorLabels" . | nindent 8 }}
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        ports:
        - containerPort: {{ .Values.service.port }}

你可以根据应用的需求自定义这些模板文件。

7. 安装应用

当你完成 Helm Chart 的配置后,可以使用以下命令来安装应用:

helm install myapp ./myapp

这个命令会在 Kubernetes 集群中部署应用。

8. 更新应用

如果你修改了 Helm Chart 或 values.yaml 中的参数,想要更新部署,可以使用以下命令:

helm upgrade myapp ./myapp

9. 卸载应用

如果不再需要应用,可以使用以下命令卸载它:

helm uninstall myapp

使用 Helm 可以在多环境部署(开发、测试、生产环境)时,通过修改 values.yaml 文件来进行参数化配置 给个例子

下面是一个 Helm 部署应用的例子,展示了如何使用 values.yaml 文件进行参数化配置,特别是在多环境(开发、测试、生产)部署时。

1. Helm Chart 结构

假设你有一个简单的应用 myapp,目录结构如下:

myapp/
├── Chart.yaml
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
└── values.yaml

2. deployment.yaml 模板文件

templates/deployment.yaml 中,你可以使用 values.yaml 文件中的值来参数化 Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Chart.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ .Chart.Name }}
  template:
    metadata:
      labels:
        app: {{ .Chart.Name }}
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        ports:
        - containerPort: {{ .Values.service.port }}
        resources:
          requests:
            memory: {{ .Values.resources.requests.memory }}
            cpu: {{ .Values.resources.requests.cpu }}
          limits:
            memory: {{ .Values.resources.limits.memory }}
            cpu: {{ .Values.resources.limits.cpu }}

3. values.yaml 文件

values.yaml 是 Helm 的默认配置文件,里面定义了默认的参数值:

replicaCount: 3

image:
  repository: myapp
  tag: "latest"

service:
  type: ClusterIP
  port: 80

resources:
  requests:
    memory: "128Mi"
    cpu: "100m"
  limits:
    memory: "256Mi"
    cpu: "200m"

4. 多环境 values.yaml 文件

为不同环境创建不同的 values.yaml 文件。例如,为开发环境创建 values-dev.yaml,为生产环境创建 values-prod.yaml

values-dev.yaml(开发环境)

replicaCount: 1

image:
  repository: myapp
  tag: "dev"

service:
  type: NodePort
  port: 30001

resources:
  requests:
    memory: "64Mi"
    cpu: "50m"
  limits:
    memory: "128Mi"
    cpu: "100m"

values-prod.yaml(生产环境)

replicaCount: 5

image:
  repository: myapp
  tag: "stable"

service:
  type: ClusterIP
  port: 80

resources:
  requests:
    memory: "512Mi"
    cpu: "250m"
  limits:
    memory: "1Gi"
    cpu: "500m"

5. Helm 安装和部署

在开发环境和生产环境下,使用不同的 values.yaml 文件进行部署:

部署到开发环境:

helm install myapp ./myapp -f values-dev.yaml

部署到生产环境:

helm install myapp ./myapp -f values-prod.yaml

6. 说明

  • replicaCount: 开发环境下使用 1 个副本,生产环境下使用 5 个副本。
  • image.tag: 开发环境下使用 dev 版本镜像,生产环境使用 stable 版本镜像。
  • service.port: 开发环境下使用 NodePort,生产环境使用 ClusterIP
  • resources: 开发环境下分配的 CPU 和内存较少,生产环境则分配较多的资源。

通过这种方式,你可以方便地在不同环境下使用相同的 Helm Chart,只需切换 values.yaml 文件即可轻松实现参数化配置。

标签:初始化,自定义,yaml,Chart,Helm,values,myapp,memory,helm
From: https://www.cnblogs.com/jasmine456/p/18430681

相关文章

  • Minio生命周期规则及桶初始化
    packageorg.ailun;importio.minio.*;importio.minio.messages.*;importjava.util.List;/***@version1.0*@since:JDK11*/publicclassTest{privatestaticStringbucketName="bucketName";publicstaticvoidmain(String[......
  • 4.1 Xenomai如何初始化
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!4.1Xenomai如何初始化        在上一章节《3.6第四行之__ipipe_init_proc()-CSDN博客》,描述了IPIPE初始化的最后一步__ipipe_init_p......
  • Android连接蓝牙自定义封装SDK(基于Cordova与ionic)
    今天给大家分享一款基于Cordova与ionic框架自定义封装的Android手机连接蓝牙的插件。自己公司遇到的业务需求是,与第三方公司合作,需要在项目现场打印项目物资与物料验收单,后期提供给财务核对报销等。第三方公司提供蓝牙打印机与手持机,我们需要自己结合业务开发相对应的功能。......
  • OpenCV_自定义线性滤波(filter2D)应用详解
    OpenCVfilter2D将图像与内核进行卷积,将任意线性滤波器应用于图像。支持就地操作。当孔径部分位于图像之外时,该函数根据指定的边界模式插值异常像素值。卷积核本质上是一个固定大小的系数数组,数组中的某个元素被作为锚点(一般是数组的中心)。上面讲了线性滤波的实质就是计算相......
  • vue自定义指令实现打字效果
    实现如通义灵码官网关于代码片段中,当鼠标hover上代码上时,出现打字效果,示例地址:https://tongyi.aliyun.com/lingma?spm=5176.28508143.J_ahRFo5CaAe_asSOaCgS4J.14.5421154auHz4xJ&scm=20140722.M_185502201.P_131.MO_2276-ID_10360025-MID_10360025-CID_31292-ST_10352-V_1通过vu......
  • opea helm app
    Helm|Docs  Helm中文手册  envThereare2ENVvalues,oneisfortheharborregistryFQDN,anotherisusedforthe workspaceofimagetostoreharborurl=your-harbor.comproject=catalog-appsInstallthecertificateonthemachineweleveragethe......
  • 多校园信息付费发布顶置自定义表单小程序开源版开发
    多校园信息付费发布顶置自定义表单小程序开源版开发为校园管理和互动提供了强大的支持,包括用户端和运营后台两大部分。用户端允许学生和教职工方便地访问各种功能模块,而运营后台则使管理员能够高效地管理和配置系统。产品支持自定义模块和表单,允许根据需求创建各种功能,例如表白墙、......
  • 信息学奥赛复赛复习02-CSP-J2019-02-结构体、无构造函数、有构造函数、初始化列表构造
    PDF文档公众号回复关键字:2024092412019CSP-J题目2公交换乘[题目描述]著名旅游城市B市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案在搭乘一次地铁后可以获得一张优惠票,有效期为45分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过......
  • 4. VM是如何初始化的-create_vm()
    前言在3.初窥全貌-main方法执行全流程-CSDN博客,我们了解了一个Java类的main函数在执行java命令到最终被执行的全路径,但是那里面最重要的三步1.创建vm;2.加载main类;3.执行main方法;我们并没有展开学习,这一章,我们从创建VM开始学习,这是整个系列里最重的函数。流程很多,但......
  • 阿里云函数计算自定义域名的SSL证书免费全自动申请及部署
    ####(本人现在只做了证书部署,自动任务可以执行但是所生成的记录值没办法自动在阿里云的域名解析列表中更新,因此查到这篇文章,但发现太麻烦……又感觉以后一定会用到,所以先转载保存记录一下,原文地址:https://developer.aliyun.com/article/1475347)阿里云函数计算大大简化了开发部......