【helm的yaml如何写】

一、helm包目录结构:

  1. 目录结构如下:

myapp                                   - chart 包目录名
├── charts                              - 依赖的子包目录,里面可以包含多个依赖的chart包
├── Chart.yaml                          - chart定义,可以定义chart的名字,版本号信息。
├── templates                           - k8s配置模版目录, 我们编写的k8s配置都在这个目录, 除了NOTES.txt和下划线开头命名的文件,其他文件可以随意命名。
│   ├── deployment.yaml
│   ├── _helpers.tpl                    - 下划线开头的文件,helm视为公共库定义文件,主要用于定义通用的子模版、函数等,helm不会将这些公共库文件的渲染结果提交给k8s处理。
│   ├── ingress.yaml
│   ├── NOTES.txt                       - chart包的帮助信息文件,执行helm install命令安装成功后会输出这个文件的内容。
│   └── service.yaml
└── values.yaml                         - chart包的参数配置文件,模版可以引用这里参数。

我们选择比较重要的service和deployment进行介绍

二、service.yaml定义如下:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}-svc #服务名
spec:
  selector: #pod选择器定义
    app: {{ .Release.Name }}
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

例子:

apiVersion: v1
kind: Service
metadata:
  name: myapp-svc #服务名
spec:
  selector: #pod选择器定义
    app: myapp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

三、deployment.yaml 配置文件定义如下:

deployment.yaml 配置模版如下:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: {{ .Release.Name }}  #deployment应用名
  labels:
    app: {{ .Release.Name }}          #deployment应用标签定义
spec:
  replicas: {{ .Values.replicas}}           #pod副本数
  selector:
    matchLabels:
      app: {{ .Release.Name }}          #pod选择器标签
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}          #pod标签定义
    spec:
      containers:
        - name: {{ .Release.Name }}           #容器名
          image: {{ .Values.image }}:{{ .Values.imageTag }}    #镜像地址
          ports:
            - name: http
              containerPort: 80
              protocol: TCP

例子:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: myapp           #deployment应用名
  labels:
    app: myapp          #deployment应用标签定义
spec:
  replicas: 1           #pod副本数
  selector:
    matchLabels:
      app: myapp          #pod选择器标签
  template:
    metadata:
      labels:
        app: myapp          #pod标签定义
    spec:
      containers:
        - name: myapp           #容器名
          image: xxxxxx:1.7.9    #镜像地址
          ports:
            - name: http
              containerPort: 80
              protocol: TCP

详细介绍:

apiVersion:表示指定api版本,目前大部分都是写v1,此值不是写死的,此值可以在本机上执行kubectl api-versions命令查看。

kind:表示该yaml定义的资源类型,k8s中资源有很多种,包括Pod,Deployment,Job,Services等等。

metadata:表示创建的资源的一些元数据,这是个对象类型,里面包含名称、namespace、标签等信息。

spec:这也是对象类型,内容包括一些container,storage,volume等

#指定api版本标签

apiVersion: apps/v1

#定义资源的类型/角色,deployment为副本控制器

#此处资源类型可以是DeploymentJobIngressService

kind: Deployment

#定义资源的元数据信息,比如资源的名称、namespace、标签等信息

metadata:

#定义资源的名称,在同一个namespace空间中必须是唯一的

  name: nginx-test

  lables:

    app: nginx

#定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性

spec:

#定义副本数量

  replicas: 3

#定义标签选择器

  selector:

#定义匹配标签

    matchLabels:

#需与后面的.spec.template.metadata.labels定义的标签保持一致

      app: nginx

#定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配

  template:

    metadata:

#定义Pod副本将使用的标签,需与前面的.spec.selector.matchLabels定义的标签保持一致

      labels:

        app: nginx

    spec:

#定义容器属性

      containers:

#定义一个容器名,一个-name:定义一个容器

      - name: nginx

#定义容器使用的镜像以及版本

        image: nginx:1.15.4

        ports:

#定义容器对外的端口

        - containerPort: 80

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_lishengming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值