在 Pod 类的第 3 方 helm yaml 模板中注入价值
inject value in 3rd party helm yaml template of Pod kind
我正在为 mysql 使用第 3 方存储库 bitnami。
我知道 values.yaml 可以很容易地注入,如果那个 yaml 在依赖部分。
即,如果我在 Chart.yaml 中添加依赖项:
dependencies:
- name: mysql
version: 8.8.23
repository: "https://charts.bitnami.com/bitnami"
并在 values.yaml 中:
mysql:
auth:
rootPassword: "12345"
database: my_database
primary:
service:
type: LoadBalancer
根密码在bitnami/mysql
中适当的参数auth.rootPassword
中注入。
但如果我在模板文件夹中有自己的 pod.yaml:
apiVersion: v1
kind: Pod
spec:
containers:
- name: mysql-pod
image: bitnami/mysql
如何将密码和其他参数注入此文件,就像我对 values.yaml 文件所做的一样。
我需要通过auth.rootPassword,等等...
此外,如果能够引用完全相同的 pod,那么它是在依赖项上创建的,而不是作为另一个实例创建的。
chart包含很多东西——一个StatefulSet,一个匹配的Service,一个PodDisruptionBudget,一个ConfigMap,等等。您不能将所有这些都强制放入一个 Pod 中,并且通常您不能在 Helm 图表中引用事物而不将它们作为您最初显示的依赖项包括在内。
Bitnami 也恰好发布了一个单独的 bitnami/mysql
Docker image,您可以在 StatefulSet 的 pod 规范中将其列为 image:
,但您必须自己重建该图表中的所有其他机器。
Also, if there is ability to refer exactly the same pod, that is created on dependency, and not as another instance.
Helm 中有一个典型的约定,即大多数对象都被命名为 RELEASE-CHART-SUFFIX
,如果它们相同,则将 RELEASE
和 CHART
挤在一起。你通常不会关心 StatefulSet 生成的 Pod,而是关心到达它的 Service,即 generated by a typical Helm Service YAML file。如果你没有设置各种覆盖,也没有使用复制模式,那么在这个依赖上下文中,你可以组合 .Release.Name
和依赖图表名称 mysql
并且没有后缀来获取
- name: MYSQL_HOST
value: {{ .Release.Name }}-mysql
我不知道获取服务名称的更通用方法。 (我根本不知道有任何使用 Helm's exports mechanism 的图表,并且由于它只重新发布值,因此在任何情况下都不能包含计算值。)
对于凭证等其他详细信息,您可以参考生成的 Secret,或者直接使用 .Values.mysql...
。
- name: MYSQL_USER
value: {{ .Values.mysql.auth.username }}
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Release.Name }}-mysql
key: mysql-password
我认为如果不自己阅读图表的源代码、观察图表实际安装的内容或阅读图表的文档(Bitnami 图表相当 well-documented但其他人可能不是)。
我正在为 mysql 使用第 3 方存储库 bitnami。
我知道 values.yaml 可以很容易地注入,如果那个 yaml 在依赖部分。
即,如果我在 Chart.yaml 中添加依赖项:
dependencies:
- name: mysql
version: 8.8.23
repository: "https://charts.bitnami.com/bitnami"
并在 values.yaml 中:
mysql:
auth:
rootPassword: "12345"
database: my_database
primary:
service:
type: LoadBalancer
根密码在bitnami/mysql
中适当的参数auth.rootPassword
中注入。
但如果我在模板文件夹中有自己的 pod.yaml:
apiVersion: v1
kind: Pod
spec:
containers:
- name: mysql-pod
image: bitnami/mysql
如何将密码和其他参数注入此文件,就像我对 values.yaml 文件所做的一样。
我需要通过auth.rootPassword,等等...
此外,如果能够引用完全相同的 pod,那么它是在依赖项上创建的,而不是作为另一个实例创建的。
chart包含很多东西——一个StatefulSet,一个匹配的Service,一个PodDisruptionBudget,一个ConfigMap,等等。您不能将所有这些都强制放入一个 Pod 中,并且通常您不能在 Helm 图表中引用事物而不将它们作为您最初显示的依赖项包括在内。
Bitnami 也恰好发布了一个单独的 bitnami/mysql
Docker image,您可以在 StatefulSet 的 pod 规范中将其列为 image:
,但您必须自己重建该图表中的所有其他机器。
Also, if there is ability to refer exactly the same pod, that is created on dependency, and not as another instance.
Helm 中有一个典型的约定,即大多数对象都被命名为 RELEASE-CHART-SUFFIX
,如果它们相同,则将 RELEASE
和 CHART
挤在一起。你通常不会关心 StatefulSet 生成的 Pod,而是关心到达它的 Service,即 generated by a typical Helm Service YAML file。如果你没有设置各种覆盖,也没有使用复制模式,那么在这个依赖上下文中,你可以组合 .Release.Name
和依赖图表名称 mysql
并且没有后缀来获取
- name: MYSQL_HOST
value: {{ .Release.Name }}-mysql
我不知道获取服务名称的更通用方法。 (我根本不知道有任何使用 Helm's exports mechanism 的图表,并且由于它只重新发布值,因此在任何情况下都不能包含计算值。)
对于凭证等其他详细信息,您可以参考生成的 Secret,或者直接使用 .Values.mysql...
。
- name: MYSQL_USER
value: {{ .Values.mysql.auth.username }}
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Release.Name }}-mysql
key: mysql-password
我认为如果不自己阅读图表的源代码、观察图表实际安装的内容或阅读图表的文档(Bitnami 图表相当 well-documented但其他人可能不是)。