zoukankan      html  css  js  c++  java
  • k8s~helm里的yaml的介绍

    Chart.yaml 文件作用

    1. name: [必须] Chart的名称
    2. version: [必须] Chart的版本号,版本号必须符合 SemVer 2:http://semver.org/
    3. description: [可选] Chart的简要描述
    4. keywords: - [可选] 关键字列表,便于检索
    5. home: [可选] 项目地址
    6. sources: - [可选] 当前Chart的下载地址列表

    charts依赖

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

    dependencies:
      - name: mariadb
        version: 7.x.x
        repository: https://kubernetes-charts.storage.googleapis.com/
        condition: mariadb.enabled
        tags:
          - wordpress-database
    

    templates 目录

    templates目录下的yaml文件,遵循Go template语法。使用过Hugo的静态网站生成工具的人应该对此很熟悉。
    templates目录中存放了Kubernetes部署文件的模版,比如deployment.yaml,service.yaml等,它里面引用的变量来自values.yaml里

    • 生成最终的yaml文件-文本对齐
      {{ include "test" | indent 4}}
    • 生成最终的yaml文件-去除空行
      {{- define "test" -}}模版内容{{- end -}}
    • 变量(默认值)的使用
    image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
    

    上面的{{ .Values.image.repository }}表示values.yaml文件里的image节点下的repository元素的内容

    数据卷Volume、数据卷声明VolumeClaim

    k8s应用(包括有状态跟无状态应用),需要使用数据卷的话,需要在存储卷中进行设置和声明,下面列出持久化数据卷的声明跟设置的模板:

    数据卷设置:

    apiVersion: v1
    kind: PersistentVolume                                        -这里说明是持久化数据卷
    metadata:
      finalizers:
      - kubernetes.io/pv-protection
      labels:
        alicloud-pvname: {{ .Values.volumes.name }}               -数据卷标签,eg:XXX-data
      name: {{ .Values.volumes.name }}                            -数据卷名称,eg:XXX-data
    spec:
      accessModes:
      - ReadWriteMany                            -权限
      capacity:
        storage: {{ .Values.volumes.storage }}                    -容量大小,eg:10Gi
      flexVolume:
        driver: alicloud/nas                                      -数据卷类型是nas
        options:
          path: {{ .Values.volumes.path }}                        -数据卷路径,eg:/tmp
          server: {{ .Values.volumes.server }}                    -数据卷服务商,eg:xxxxx.nas.aliyuncs.com
          vers: '3'
      persistentVolumeReclaimPolicy: Retain
      storageClassName: nas
    

    数据卷声明:

    apiVersion: v1
    kind: PersistentVolumeClaim                              -持久化数据卷声明
    metadata:
    annotations:
      pv.kubernetes.io/bind-completed: 'yes'
      pv.kubernetes.io/bound-by-controller: 'yes'
    finalizers:
    - kubernetes.io/pvc-protection
    name: {{ .Values.volumes.name }}
    spec:
    accessModes:
    - ReadWriteMany
    resources:
      requests:
        storage: {{ .Values.volumes.storage }}            -容量,eg:10Gi
    selector:
      matchLabels:
        alicloud-pvname: {{ .Values.volumes.name }}
    storageClassName: nas
    volumeName: {{ .Values.volumes.name }}
    

    伸缩配置 HorizontalPodAutoscaler

    应用弹性伸缩配置,这个可以配置最大、最小副本集跟伸缩条件的参数到values.yaml文件里面

    kind: HorizontalPodAutoscaler
    apiVersion: autoscaling/v1
    metadata:
      name: {{ include "admin.appname" . }}-hpa                   -admin.appname就是后面执行helm命令的时候倒数第二个参数,为什么前面是admin呢,admin就是你配置Chart.yaml的时候里面的name变量的值
    spec:
      scaleTargetRef:
        kind: Deployment
        name: {{ include "admin.appname" . }}
        apiVersion: apps/v1beta2
      minReplicas: 1                                              -最小副本集
      maxReplicas: 10                                             -最大副本集
      targetCPUUtilizationPercentage: 70                          -伸缩条件
    

    配置项ConfigMap

    配置项设置,一般每个项目有都对应的环境参数,比如:数据库、redis等这些账号密码类的参数,这些可以抽离出来当成一个配置项处理

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Values.envConfigName }}          -每个环境就配置一个配置项
    data:
    {{- range $k, $v := .Values.configDatas }}      -这里是循环遍历configDatas这个变量
    {{ $k | indent 2 }}.yml: >-               -下面这两行配置一个key->value的配置项(即文件名->文件内容)
    {{ $v | indent 4 }}
    {{- end -}}
    

    镜像密码配置Secret

    将镜像的密码配置到保密字典中

    apiVersion: v1
    kind: Secret
    metadata:
      name: image-secret                                        -name随意写
    data:
      .dockerconfigjson: {{ .Files.Get "image.pwd" | b64enc }}  -内容
    type: kubernetes.io/dockerconfigjson
    

    TLs证书配置(后面配置ingress的时候要用到,不然无法用https)

    apiVersion: v1
    kind: Secret
    metadata:
      name: tls-secret
    data:
      tls.crt: {{ .Files.Get "XXXXX.com.pem" | b64enc }}
      tls.key: {{ .Files.Get "XXXXX.com.key" | b64enc }}
    type: Opaque
    

    下次主要说一下几个重要的yaml文件的模板。

  • 相关阅读:
    rsync+inotifywait
    expect 批量执行命令
    用cloudmonkey批量创建虚拟机
    zabbix items 配置 修改zabbix表结构
    被攻击后排查的过程
    centos6.4安装 zabbix agent
    2015 Multi-University Training Contest 3 hdu 5323 Solve this interesting problem
    2015 Multi-University Training Contest 3 hdu 5326 Work
    2015 Multi-University Training Contest 3 hdu 5316 Magician
    2015 Multi-University Training Contest 1 hdu 5290 Bombing plan
  • 原文地址:https://www.cnblogs.com/lori/p/12673151.html
Copyright © 2011-2022 走看看