我最新最全的文章都在南瓜慢说 www.pkslow.com,文章更新也只在官网,欢迎大家来喝茶~~

1 简介

Helm作为一个优秀的包管理器,这部分我们之前已经做了介绍,文章如下:

用Helm部署Kubernetes应用,支持多环境部署与版本回滚

Kubernetes用Helm安装Ingress并踩一下使用的坑

而Helm的模板功能,一样非常强大。它可以非常方便的定义各种Kubernetes的资源模板,如Deployment、Service、Ingress、ConfigMap等。不同环境的变量放在不同文件上,渲染时指定环境变量文件即可。

2 初体验

使用Helm的Template功能,需要先创建一个Chart,这是Helm的基本文件组成架构。我们来创建一个Nginx的相关资源文件,命令如下:

helm create pkslow-nginx

命令执行完成后,就会自动创建Chart的相关文件:

关键文件:

  • 目录template:放置模板文件,想要渲染什么文件出来,就在这个目录放置对应模板;
  • 文件Chart.yaml:该Chart的描述,如果只是使用Helm的模板功能,可以不用管;
  • 文件values.yaml:包含变量默认值。

templates/tests对我们作用不大,删掉。

我们尝试不修改模板、不添加变量,直接渲染出结果文件如下:

$ helm template pkslow-nginx/ --output-dir ./result
wrote ./result/pkslow-nginx/templates/serviceaccount.yaml
wrote ./result/pkslow-nginx/templates/service.yaml
wrote ./result/pkslow-nginx/templates/deployment.yaml

根据一些变量和判断,helm直接帮我们生成了三种资源的文件。查看其中一个文件service.yaml,还是非常完整的,基本可以满足需要了,再根据自己的需求改改就好了。

3 添加模板文件

试着添加一个模板文件configmap.yaml到templates目录,内容如下:

apiVersion: v1
kind: ConfigMap
metadata:
name: pkslow-file
namespace: default
data:
application.yaml: |-
server:
port: 8080
pkslow:
name: Larry
age: 18
webSite: www.pkslow.com

执行命令后渲染的结果如下:

---
# Source: pkslow-nginx/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: pkslow-file
namespace: default
data:
application.yaml: |-
server:
port: 8080
pkslow:
name: Larry
age: 18
webSite: www.pkslow.com

与模板并没有什么不同,那是因为我们没有在模板文件里使用变量和判断语句等。

3.1 模板中使用变量

我们修改模板如下:

apiVersion: v1
kind: ConfigMap
metadata:
name: pkslow-config-{{ .Values.environment }}
namespace: default
data:
application.yaml: |-
server:
port: {{ .Values.server.port }}
pkslow:
name: {{ .Values.pkslow.name }}
age: {{ .Values.pkslow.age }}
{{- if .Values.pkslow.webSite }}
webSite: {{ .Values.pkslow.webSite }}
{{- end }}

可以看见我们在模板中使用了许多双大括号的变量{{ .Values.xxx }},我们需要在values.yaml文件中定义这些变量,如下:

environment: dev
server:
port: 80
pkslow:
name: Larry Deng
age: 28
webSite: https://www.pkslow.com

重新执行命令$ helm template pkslow-nginx/ --output-dir ./result,渲染的结果如下:

---
# Source: pkslow-nginx/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: pkslow-config-dev
namespace: default
data:
application.yaml: |-
server:
port: 80
pkslow:
name: Larry Deng
age: 28
webSite: https://www.pkslow.com

3.2 为不同环境设置不同的变量

多环境管理在Helm Template这也是非常简单的,我们创建一个values-dev.yaml的变量文件,内容如下:

environment: dev
server:
port: 8080
pkslow:
name: Larry Deng
age: 1

通过以下命令来指定dev环境的变量文件:

$ helm template pkslow-nginx/ --output-dir ./result -f pkslow-nginx/values-dev.yaml

这样渲染出来的结果就是dev的相关配置了。其它环境同理。

3.3 通过命令行设置变量

使用--set--set-string,使用如下:

$ helm template pkslow-nginx/ --output-dir ./result -f pkslow-nginx/values-dev.yaml --set pkslow.webSite=www.pkslow.com

总结

代码请查看:https://github.com/LarryDpk/pkslow-samples

Helm Template初体验,方便管理多环境的更多相关文章

  1. Scrapy初体验(一) 环境部署

    系统选择centOs 7,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, ...

  2. Kinect for Windows SDK开发初体验(一)环境配置

    1.开发环境需求 (1).硬件需求 a.需要拥有双核,2.66GHz以上的CPU. b.显卡支持Microsoft DirectX 9.0c; c.2GB的内存 d.Kinect for Window ...

  3. ArcGis SOE(server object extensions)之REST Template初体验

    一.安装vs和arcgis server for .net(本例是vs2010.as 10),然后打开vs新建一个项目

  4. MyEclipse性能调优初体验

    MyEclipse性能调优初体验 简介一下工作环境,MyEclipse2014,你懂的 项目中有一个基于web的工作流引擎,仅仅要执行起来就CPU差点儿耗尽(尽管看似27%,事实上已经把俺4核的CPU ...

  5. cucumber java从入门到精通(1)初体验

    cucumber java从入门到精通(1)初体验 cucumber在ruby环境下表现让人惊叹,作为BDD框架的先驱,cucumber后来被移植到了多平台,有cucumber-js以及我们今天要介绍 ...

  6. Ignite缓存管理初体验

    Ignite缓存管理初体验:ignite服务端配置,大家可以用参考官方进行配置(或者使用默认配置也可以). 本文中的ignite使用版本是1.7,与spring结合使用.maven依赖配置 ignit ...

  7. Spring boot集成Rabbit MQ使用初体验

    Spring boot集成Rabbit MQ使用初体验 1.rabbit mq基本特性 首先介绍一下rabbitMQ的几个特性 Asynchronous Messaging Supports mult ...

  8. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  9. 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...

随机推荐

  1. python字典转bytes类型字典

    python字典转bytes类型字典import base64 import json 1. a={"Vod":{"userData":"{}&quo ...

  2. 用NumPy genfromtxt导入数据

    用NumPy genfromtxt导入数据 NumPy provides several functions to create arrays from tabular data. We focus ...

  3. YOLOV4知识点分析(一)

    YOLOV4知识点分析(一) 简 介 yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection arxiv:https://arx ...

  4. TensorRT-安装-使用

    TensorRT-安装-使用 一.安装 这里 是英伟达提供的安装指导,如果有仔细认真看官方指导,基本上按照官方的指导肯定能安装成功. 问题是肯定有很多人不愿意认真看英文指导,比如说我就是,我看那个指导 ...

  5. CUDA刷新器:CUDA编程模型

    CUDA刷新器:CUDA编程模型 CUDA Refresher: The CUDA Programming Model CUDA,CUDA刷新器,并行编程 这是CUDA更新系列的第四篇文章,它的目标是 ...

  6. Gbps接口面向汽车应用

    Gbps接口面向汽车应用 Gbps interfaces target automotive appications 巴黎--不久前,移动通信行业是一个领着芯片商的领头羊,命令坐着,脚跟着,然后翻身. ...

  7. 使用adb命令在模拟器安装apk

    1.adb connect 127.0.0.1:7555 连接网易模拟器地址2.adb devices -L 查看有几个连接端口地址3.执行推送配置文件 命令 adb push 文件 路径

  8. springboot实现自定义拦截器

    为了更容易理解,我们通过一个代码例子来演示. 例子: 我们现在要访问http://localhost:8080/main.html页面,这个页面需要登录之后才能够浏览,没登录不能浏览. 那么现在问题来 ...

  9. Docker与k8s的恩怨情仇(一)—成为PaaS前浪的Cloud Foundry

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 大家在工作中或许或多或少都接触过Docker,那你知道Docker以及容器化背后的原理到底是什么吗? 容器化 ...

  10. 如何在CentOS 7上搭建LAMP环境(使用YUM或编译)

    什么是LAMP? LAMP是Linux,Apache,MySQL和PHP的缩写. 它是一堆应用程序的堆栈,它们在Web服务器上一起工作以托管网站. 话虽如此,每个程序都有不同的目的: 在LAMP中, ...