博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kubernetes实战篇之helm示例yaml文件文件详细介绍
阅读量:4327 次
发布时间:2019-06-06

本文共 4141 字,大约阅读时间需要 13 分钟。

前面完整示例里,我们主要讲解helm打包,部署,升级,回退等功能,关于这里面的文件只是简单介绍,这一节我们详细介绍一下这里面的文件,以方便我们参照创建自己的helm chart.

Helm Chart 结构

Chart 目录结构

mychart/  Chart.yaml          # Yaml文件,用于描述Chart的基本信息,包括名称版本等  LICENSE             # [可选] 协议  README.md           # [可选] 当前Chart的介绍  values.yaml         # Chart的默认配置文件  requirements.yaml   # [可选] 用于存放当前Chart依赖的其它Chart的说明文件  charts/             # [可选]: 该目录中放置当前Chart依赖的其它Chart  templates/          # [可选]: 部署文件模版目录,模版使用的值来自values.yaml和由Tiller提供的值  templates/NOTES.txt # [可选]: 放置Chart的使用指南

默认生成的chart如果没有修改是没有这么多的.

Chart.yaml 文件

name: [必须] Chart的名称version: [必须] Chart的版本号,版本号必须符合 SemVer 2:http://semver.org/description: [可选] Chart的简要描述keywords:  -  [可选] 关键字列表,便于检索home: [可选] 项目地址sources:  - [可选] 当前Chart的下载地址列表maintainers: # [可选]  - name: [必须] 名字    email: [可选] 邮箱engine: gotpl # [可选] 模版引擎,默认值是gotplicon: [可选] 一个SVG或PNG格式的图片地址

requirements.yaml 和 charts目录

requirements.yaml 文件内容:

dependencies:  - name: example    version: 1.2.3    repository: http://example.com/charts  - name: Chart名称    version: Chart版本    repository: 该Chart所在的仓库地址

Chart支持两种方式表示依赖关系,可以使用requirements.yaml或者直接将依赖的Chart放置到charts目录中。

templates 目录

templates目录中存放了Kubernetes部署文件的模版。

例如:

# db.yamlapiVersion: v1kind: ReplicationControllermetadata:  name: deis-database  namespace: deis  labels:    heritage: deisspec:  replicas: 1  selector:    app: deis-database  template:    metadata:      labels:        app: deis-database    spec:      serviceAccount: deis-database      containers:        - name: deis-database          image: {
{.Values.imageRegistry}}/postgres:{
{.Values.dockerTag}} imagePullPolicy: {
{.Values.pullPolicy}} ports: - containerPort: 5432 env: - name: DATABASE_STORAGE value: {
{default "minio" .Values.storage}}

模版语法扩展了 golang/text/template的语法:

# 这种方式定义的模版,会去除test模版尾部所有的空行{
{- define "test"}}模版内容{
{- end}} # 去除test模版头部的第一个空行{
{- template "test" }}

用于yaml文件前置空格的语法:

# 这种方式定义的模版,会去除test模版头部和尾部所有的空行{
{- define "test" -}}模版内容{
{- end -}} # 可以在test模版每一行的头部增加4个空格,用于yaml文件的对齐{
{ include "test" | indent 4}}

创建自己的chart

我们创建一个名为mongodb的chart,看一看chart的文件结构

$ helm create mongodb$ tree mongodbmongodb├── Chart.yaml #Chart本身的版本和配置信息├── charts #依赖的chart├── templates #配置模板目录│   ├── NOTES.txt #helm提示信息│   ├── _helpers.tpl #用于修改kubernetes objcet配置的模板│   ├── deployment.yaml #kubernetes Deployment object│   └── service.yaml #kubernetes Serivce└── values.yaml #kubernetes object configuration 2 directories, 6 files

模板

Templates目录下是yaml文件的模板,遵循语法。使用过的静态网站生成工具的人应该对此很熟悉。

我们查看下deployment.yaml文件的内容。

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: {
{ template "fullname" . }} labels: chart: "{
{ .Chart.Name }}-{
{ .Chart.Version | replace "+" "_" }}"spec: replicas: {
{ .Values.replicaCount }} template: metadata: labels: app: {
{ template "fullname" . }} spec: containers: - name: {
{ .Chart.Name }} image: "{
{ .Values.image.repository }}:{
{ .Values.image.tag }}" imagePullPolicy: {
{ .Values.image.pullPolicy }} ports: - containerPort: {
{ .Values.service.internalPort }} livenessProbe: httpGet: path: / port: {
{ .Values.service.internalPort }} readinessProbe: httpGet: path: / port: {
{ .Values.service.internalPort }} resources:{
{ toyaml .Values.resources | indent 12 }}

这是该应用的Deployment的yaml配置文件,其中的双大括号包扩起来的部分是Go template,其中的Values是在values.yaml文件中定义的:

# Default values for mychart.# This is a yaml-formatted file.# Declare variables to be passed into your templates.replicaCount: 1image:  repository: nginx  tag: stable  pullPolicy: IfNotPresentservice:  name: nginx  type: ClusterIP  externalPort: 80  internalPort: 80resources:  limits:    cpu: 100m    memory: 128Mi  requests:    cpu: 100m    memory: 128Mi

比如在Deployment.yaml中定义的容器镜像image: "{

{ .Values.image.repository }}:{
{ .Values.image.tag }}"其中的:

  • .Values.image.repository就是nginx

  • .Values.image.tag就是stable

以上两个变量值是在create chart的时候自动生成的默认值

转载于:https://www.cnblogs.com/tylerzhou/p/11141538.html

你可能感兴趣的文章
Guitar and Music Theory
查看>>
用SQL命令查看Mysql数据库大小
查看>>
关于 Python
查看>>
贝叶斯网络
查看>>
SpringBoot整合ElasticSearch实现多版本的兼容
查看>>
ajax url参数中文乱码解决
查看>>
Thread Runnable 区别
查看>>
ORACLE JOB 设置
查看>>
微信小程序想要最短服务路径
查看>>
HDU - 4812 D Tree 点分治
查看>>
POJ 2763 Housewife Wind
查看>>
MinGW安装与配置
查看>>
【UVA11806 Cheerleaders】 题解
查看>>
TCP三次握手和四次挥手
查看>>
【SVN】win7 搭建SVN服务器
查看>>
iOS第三方做滤镜最主流的开源框架GPUImage
查看>>
面向对象三大特性
查看>>
网络架构与七层参考模式简介
查看>>
用python实现经典排序
查看>>
node-1
查看>>