具有地形和头盔的外部部署配置

问题描述 投票:0回答:1

我对terraform还是很陌生,所以我的问题可能很幼稚,但仍然不知道如何解决。我有一个使用helm_release(https://www.terraform.io/docs/providers/helm/r/release.html)的Terraform脚本,问题是我在单独的git存储库中有部署配置。假设:https://project.git/configuration。我想实现的是能够添加例如https://project.git/configuration/dev(用于开发环境部署)到配置映射。terraform模块的结构为:

+project
+-helm
+--templates
+---configmap.yaml
+---deployment.yaml
+---ingress.yaml
+---service.yaml
+--chart.yaml
+--values.yaml
+-helm.tf
+-other tf files

我需要将配置库中的所有文件放置在下面

+project
+-helm
+--configuration

只有那样我才能使用此:

apiVersion: v1
kind: ConfigMap
metadata:
...
data:
{{- (.Files.Glob "configuration/*").AsConfig | nindent 2 }}

在我的configmap.yaml中,掌舵人要求将这些文件放置在图表目录中。

terraform kubernetes-helm
1个回答
0
投票

您只能将Helm .Files机制用于实际上与图表捆绑在一起的文件,而不能用于要注入的外部配置。

如果您打算使用Terraform来管理所有内容,一种选择是让Terraform创建具有所需文件内容的kubernetes_config_map,并将对该${kubernetes_config_map.with_the_files.name}的引用传递到Helm图表。

[如果您想主要使用Helm,但是要从外部传递文件,则可以将它们作为值传递。如果您具有Helm values.yaml语法:

configFiles:
  test.yaml: |
    key: value
    key2: value2

您可以将其发送到ConfigMap中。您可以在configFiles上进行迭代,也可以使用记录较浅的Helm toYaml扩展名来呈现整个内容。

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "mychart.name" . }}
data:
{{ .Values.configFiles | toYaml | indent 2 }}

完成后,您可以通过helm install --set选项或等效的Terraformhelm_releaseset_string设置将它们传递给您:

set_string
© www.soinside.com 2019 - 2024. All rights reserved.