Helm 是 Kubernetes 的包管理工具,用于简化 Kubernetes 应用的部署和管理。Helm 使用一种称为“图表”的打包格式来定义、安装和更新复杂的 Kubernetes 应用。子图表(Subcharts)是 Helm 图表中的一个重要概念,它允许你在一个主图表中包含多个独立的子图表,每个子图表可以有自己的配置和资源定义。
子图表可以是以下几种类型:
子图表常用于以下场景:
以下是一个简单的示例,展示如何在 Helm 中定义和使用子图表。
parent-chart
# parent-chart/Chart.yaml
apiVersion: v2
name: parent-chart
description: A Helm chart for deploying a parent application with subcharts
version: 0.1.0
appVersion: "1.0.0"
# parent-chart/values.yaml
subchart1:
enabled: true
replicaCount: 1
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
subchart2:
enabled: true
replicaCount: 2
image:
repository: redis
tag: latest
pullPolicy: IfNotPresent
subchart1
# subchart1/Chart.yaml
apiVersion: v2
name: subchart1
description: A Helm chart for deploying a subchart
version: 0.1.0
appVersion: "1.0.0"
# subchart1/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-subchart1
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: subchart1
template:
metadata:
labels:
app: subchart1
spec:
containers:
- name: subchart1
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
subchart2
# subchart2/Chart.yaml
apiVersion: v2
name: subchart2
description: A Helm chart for deploying a subchart
version: 0.1.0
appVersion: "1.0.0"
# subchart2/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-subchart2
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: subchart2
template:
metadata:
labels:
app: subchart2
spec:
containers:
- name: subchart2
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
原因:可能是由于子图表的配置不正确,或者主图表和子图表之间的依赖关系没有正确设置。
解决方法:
values.yaml
文件中的配置与主图表的 values.yaml
文件中的配置一致。Chart.yaml
文件中添加子图表的依赖关系。# parent-chart/Chart.yaml
dependencies:
- name: subchart1
version: 0.1.0
repository: file://../subchart1
- name: subchart2
version: 0.1.0
repository: file://../subchart2
helm dependency update
通过以上步骤,可以确保子图表能够正确部署并与主图表协同工作。
领取专属 10元无门槛券
手把手带您无忧上云