前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每日一个云原生小技巧 #24】Helm Templates

【每日一个云原生小技巧 #24】Helm Templates

作者头像
郭旭东
发布2023-11-16 15:56:45
2040
发布2023-11-16 15:56:45
举报
文章被收录于专栏:云原生工具箱云原生工具箱

基础知识和控制结构

  1. 模板基础:
    • Helm Templates 使用 Go 模板语言。
    • 它们定义了 Kubernetes 资源的配置文件,通常是 YAML 格式。
    • Templates 可以包含静态内容和动态插入的值。
  2. Values 文件:
    • values.yaml 文件用于存储配置值,这些值在模板中被引用。
    • 可以通过命令行参数或不同的 values.yaml 文件覆盖这些值。
  3. 控制结构:
    • 条件判断: 使用 if-else 结构根据条件输出不同的配置。
    • 循环: 使用 range 来遍历列表或字典。
    • 变量和函数: 支持定义局部变量和使用内置函数。

使用技巧

  1. 参数化: 尽可能使模板参数化,以便通过不同的 values.yaml 文件重用。
  2. 模板函数: 利用 Helm 提供的模板函数,如 includedefault
  3. 维护清晰结构: 将复杂模板分解为更小的、可重用的片段。
  4. 注释: 在模板中添加注释,说明复杂的逻辑或重要的配置项。

使用案例

案例 1: 基本的 Deployment 模板

文件结构:

  • deployment.yaml – 包含 Kubernetes Deployment 的定义。
  • values.yaml – 定义了一些默认的配置值。

deployment.yaml 示例:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.app.name }}
spec:
  replicas: {{ .Values.app.replicas }}
  template:
    metadata:
      labels:
        app: {{ .Values.app.name }}
    spec:
      containers:
      - name: {{ .Values.app.name }}
        image: "{{ .Values.app.image }}"
        ports:
        - containerPort: {{ .Values.app.port }}

values.yaml 示例:

代码语言:javascript
复制
app:
  name: myapp
  image: myapp:1.0.0
  replicas: 3
  port: 80

案例 2: 使用条件和循环

目的:

  • 根据不同的配置,启用或禁用某些 Kubernetes 资源。

模板示例:

代码语言:javascript
复制
{{ if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {{ .Values.app.name }}-ingress
spec:
  rules:
  {{- range .Values.ingress.hosts }}
  - host: {{ .host }}
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: {{ $.Values.app.name }}
            port:
              number: {{ $.Values.app.port }}
  {{- end }}
{{ end }}

values.yaml 片段:

代码语言:javascript
复制
ingress:
  enabled: true
  hosts:
    - host: example.com
    - host: another.com

这些案例展示了 Helm Templates 的基本用法和一些常见的高级技巧。通过这些示例,你可以开始构建自己的 Helm Charts,并根据你的特定需求进行定制。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础知识和控制结构
  • 使用技巧
  • 使用案例
    • 案例 1: 基本的 Deployment 模板
      • 案例 2: 使用条件和循环
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档