Helm Template初体验,方便管理多环境
我最新最全的文章都在南瓜慢说 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初体验,方便管理多环境的更多相关文章
- Scrapy初体验(一) 环境部署
系统选择centOs 7,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, ...
- Kinect for Windows SDK开发初体验(一)环境配置
1.开发环境需求 (1).硬件需求 a.需要拥有双核,2.66GHz以上的CPU. b.显卡支持Microsoft DirectX 9.0c; c.2GB的内存 d.Kinect for Window ...
- ArcGis SOE(server object extensions)之REST Template初体验
一.安装vs和arcgis server for .net(本例是vs2010.as 10),然后打开vs新建一个项目
- MyEclipse性能调优初体验
MyEclipse性能调优初体验 简介一下工作环境,MyEclipse2014,你懂的 项目中有一个基于web的工作流引擎,仅仅要执行起来就CPU差点儿耗尽(尽管看似27%,事实上已经把俺4核的CPU ...
- cucumber java从入门到精通(1)初体验
cucumber java从入门到精通(1)初体验 cucumber在ruby环境下表现让人惊叹,作为BDD框架的先驱,cucumber后来被移植到了多平台,有cucumber-js以及我们今天要介绍 ...
- Ignite缓存管理初体验
Ignite缓存管理初体验:ignite服务端配置,大家可以用参考官方进行配置(或者使用默认配置也可以). 本文中的ignite使用版本是1.7,与spring结合使用.maven依赖配置 ignit ...
- Spring boot集成Rabbit MQ使用初体验
Spring boot集成Rabbit MQ使用初体验 1.rabbit mq基本特性 首先介绍一下rabbitMQ的几个特性 Asynchronous Messaging Supports mult ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
随机推荐
- GO学习-(14) Go语言基础之接口
Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类 ...
- docker磁盘空间清理办法
docker磁盘空间清理办法 前段时间遇到docker磁盘空间太少,无法写入数据的问题.起因是因为我在本地(Mac Pro)运行了多个mysql容器,并且导入了一部分线上数据,最后还没导入完毕就已经没 ...
- 在NVIDIA(CUDA,CUBLAS)和Intel MKL上快速实现BERT推理
在NVIDIA(CUDA,CUBLAS)和Intel MKL上快速实现BERT推理 直接在NVIDIA(CUDA,CUBLAS)或Intel MKL上进行高度定制和优化的BERT推理,而无需tenso ...
- 单点突破:MySQL之基础
前言 开发环境:MySQL5.7.31 本文并不是mysql语法语句的教程或者笔记,如果初学MySQL,想要看sql的教程或者学习各种语法语句规范,可以看看一千行MySQL学习笔记或者MySQL教程| ...
- SpringCloud-OAuth2(三):进阶篇
上篇文章讲了SpringCloud OAuth 的实战篇,但是在微服务环境下,常常会有一个认证中心. 而普通服务接收到请求后,判断token是否有效并不是自己处理的,因为token的管理统一交给认证中 ...
- CMake 两种变量原理
目录 [TOC] 1.两种变量的定义参考 2.两种变量的作用域原理及使用 1.Normal Variables (1).包含 add_subdirectory().function().(本质是值拷贝 ...
- 14、iptables_nat源地址转换(内网共享上网)
14.1.环境说明: 1.架构图:
- 5、rsync全网备份
定时备份rsync(增量备份,无差异备份,daemon进程)+crontab,主要备份一些任务脚本和配置文件,如果此时有用户增加数据, 如果是增量备份的话不会备份下来,因为在备份的那一刻,数据已经被锁 ...
- 42、mysql数据库(函数)
1.mysql中提供的内置函数: (1)数学函数: 1)ROUND(x,y): 返回参数x的四舍五入的有y位小数的值.x不可转换时返回0,x为null时返回null. 2)RAND(): 返回0到1内 ...
- 移动端touch、click、tap的区别
一.click 与tap比较 click与tap都会出发点击事件,但是在手机web端,click会有200-300ms延迟,所以一般用tap(轻击)代替click作为点击事件.singleTap 和 ...