【问题标题】:Helm `pre-install `hook calling to script during helm install在 helm install 期间,Helm `pre-install`挂钩调用脚本
【发布时间】:2019-10-09 00:47:03
【问题描述】:

我想用pre-install helm 的钩子,

https://github.com/helm/helm/blob/master/docs/charts_hooks.md

在文档中写道,您需要使用清晰但 有什么不清楚的怎么结合呢?

apiVersion: ...
kind: ....
metadata:
  annotations:
    "helm.sh/hook": "pre-install"

对于我的情况,我需要执行一个 bash 脚本来创建一些环境变量,我应该把这个 pre-hook 脚本放在我的图表中 helm 可以使用的地方

安装前?

我想我需要在templates 文件夹中创建一个名为:pre-install.yaml 的文件,这是真的吗?如果是的话,我应该把在安装图表期间创建环境变量的命令放在哪里?

更新 我需要在pre-install 中执行的命令如下:

export DB=prod_sales 
export DOMAIN=www.test.com
export THENANT=VBAS 

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    Helm 钩子会启动其他一些 Kubernetes 对象,通常是 Job,它将启动一个单独的 Pod。环境变量设置只会影响当前进程和它稍后启动的子进程,在同一个 Docker 容器中,在同一个 Pod 中。即:不能使用 Helm 预安装钩子或 Kubernetes initContainers 之类的机制来设置这样的环境变量。

    如果您只想将环境变量设置为问题中显示的固定字符串,您可以directly set that in a Pod spec。如果变量是变量,但您不想在 Pod 规范中对它们进行硬编码,您也可以put them in a ConfigMap and then set environment variables from that ConfigMap。您还可以使用 Helm 模板从安装时配置中注入设置。

    env:
      - name: A_FIXED_VARIABLE
        value: A fixed value
      - name: SET_FROM_A_CONFIG_MAP
        valueFrom:
          configMapKeyRef:
            name: the-config-map-name
            key: someKey
      - name: SET_FROM_HELM
        value: {{ .Values.environmentValue | quote }}
    

    使用您显示的特定值,Helm 值路径可能是最简单的。您可以运行类似的命令

    helm install --set db=prod_sales --set domain=www.test.com ...
    

    然后可以在您的模板中访问.Values.db.Values.domain

    如果该值确实是动态的并且您无法以其他方式设置它,则可以使用 Docker 入口点脚本在容器启动时设置它。在this answer 中,我描述了与此等效的通用 Docker,包括入口点脚本设置。

    【讨论】:

      【解决方案2】:

      您可以以 arc* 项目的内置 helm-chart 为例,here 是源代码。
      *Arc - Laravel 项目的引导程序,可以 Dockerize/Kubernetize 用这个 PHP 框架编写的现有应用程序。

      【讨论】:

      • 谢谢,请看我的更新,我需要为pre-install中的图像设置它们,我该怎么做?我在您发布的示例中没有看到它...
      【解决方案3】:

      您可以将 ENV 放在模板文件夹下的 POD.yaml 中。这将是最简单的选择。

      【讨论】:

        猜你喜欢
        • 2022-11-11
        • 1970-01-01
        • 2019-08-15
        • 1970-01-01
        • 2019-05-11
        • 2021-06-23
        • 2020-02-19
        • 2019-04-12
        • 2018-03-10
        相关资源
        最近更新 更多