• 前置条件
  • 配置解析
    • deployment.yaml
    • _helpers.tpl
      • 平台标签
        • deployment 级:
      • 微服务标签
        • pod 级:
      • 监控和日志标签
        • deployment 级:
        • pod 级:
    • values.yaml

    前置条件

    此篇文档是以已经掌握如何编写Kubernetes 部署文件为前提。

    如需进行学习Kubernetes 部署文件如何编写请参考官方文档

    本篇示例代码皆引用自如下项目:

    配置解析

    deployment.yaml

    1. apiVersion: extensions/v1beta1
    2. kind: Deployment
    3. metadata:
    4. name: {{ .Release.Name }}
    5. # 实例名称
    6. labels:
    7. {{ include "service.labels.standard" . | indent 4 }}
    8. # 平台管理所需标签
    9. {{ include "service.logging.deployment.label" . | indent 4 }}
    10. # 日志管理所需标签
    11. name: {{ .Release.Name }}
    12. spec:
    13. replicas: {{ .Values.replicaCount }}
    14. # 副本数
    15. template:
    16. metadata:
    17. annotations:
    18. {{ include "service.monitoring.pod.annotations" . | indent 8 }}
    19. # 监控管理所需标签
    20. labels:
    21. {{ include "service.labels.standard" . | indent 8 }}
    22. spec:
    23. containers:
    24. - name: {{ .Release.Name }}
    25. image: "{{ .Values.image.repository }}:{{ .Values.image.version }}"
    26. # 镜像
    27. env:
    28. - name: FOOBAR
    29. value: {{ .Chart.Version | quote }}
    30. # 设置一个会随更新改变的变量,若pod无更改,更新的时候就不会进行替换。
    31. ports:
    32. - containerPort: 80
    33. name: http

    部署文件的渲染模板,我们下文将定义一些变量,helm执行时会将变量渲染进模板文件中。

    _helpers.tpl

    这个文件我们用来进行标签模板的定义,以便在上文提到的位置进行标签渲染。

    标签总共分为三个部分: 平台、微服务、监控。

    平台标签

    deployment 级:
    1. {{- define "service.labels.standard" -}}
    2. choerodon.io/release: {{ .Release.Name | quote }}
    3. {{- end -}}

    平台管理实例需要的实例ID。

    微服务标签

    pod 级:
    1. {{- define "service.microservice.labels" -}}
    2. choerodon.io/version: {{ .Chart.Version | quote }}
    3. choerodon.io/service: {{ .Chart.Name | quote }}
    4. choerodon.io/metrics-port: {{ .Values.deployment.managementPort | quote }}
    5. {{- end -}}

    微服务注册中心进行识别时所需要的版本号、项目名称、管理端口。

    监控和日志标签

    deployment 级:
    1. {{- define "service.logging.deployment.label" -}}
    2. choerodon.io/logs-parser: {{ .Values.logs.parser | quote }}
    3. {{- end -}}

    日志管理所需要的应用标签。该标签指定应用程序的日志格式,内置格式有nginxspring-bootdocker如果没有合适您的应用的格式请使用docker,如果不需要收集日志请移除此段代码,并模板文件关于service.logging.deployment.label的引用。

    pod 级:
    1. {{- define "service.monitoring.pod.annotations" -}}
    2. choerodon.io/metrics-group: {{ .Values.metrics.group | quote }}
    3. choerodon.io/metrics-path: {{ .Values.metrics.path | quote }}
    4. {{- end -}}

    性能指标管理所需要的应用类别以及监控指标路径。其中metrics-group将应用按照某个关键字分组,并在grafana配置实现分组展示。metrics-path指定收集应用的指标数据路径。如果不需要监控请移除此段代码

    values.yaml

    这个文件中的键值对,即为我们上文中所引用的变量。

    将所以有变量集中在一个文件中,方便部署的时候进行归档以及灵活替换。

    同时,helm命令支持使用 —set FOO_BAR=FOOBAR 参数对values 文件中的变量进行赋值,可以进一步简化部署流程。

    1. replicaCount: 1
    2. image:
    3. repository: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/nginx
    4. version: 1.13.5-alpine
    5. metrics:
    6. path: /prometheus
    7. group: nginx
    8. logs:
    9. parser: nginx