头盔挂钩安装后外壳脚本执行

时间:2020-10-21 07:53:12

标签: sh hook kubernetes-helm

我正在尝试设置头盔“安装后”挂钩,并看到以下错误。 错误: sh:脚本/jenkins.sh:找不到

postinstall.yaml内容

t

头盔包的文件夹结构 scripts / jenkins.h是我尝试使用“ postinstall.yaml”作为安装后头盔挂钩执行的脚本。

apiVersion: batch/v1
kind: Job
metadata:
  name: "{{ .Release.Name }}"
  annotations:
    # This is what defines this resource as a hook. Without this line, the
    # job is considered part of the release.
    "helm.sh/hook": post-install
    "helm.sh/hook-weight": "-5"
spec:
  template:
    spec:
      containers:
      - name: post-install-jenkins-job
        image: alpine:3.3
        imagePullPolicy: IfNotPresent
        command: [ "/bin/sh", "-c", "scripts/jenkins.sh"]
      restartPolicy: Never
      terminationGracePeriodSeconds: 0

我试图在头盔挂钩中执行(存储在头盔包中的)shell脚本的方式是否存在错误?

1 个答案:

答案 0 :(得分:0)

要执行,scripts/jenkins.sh应该是post-install-jenkins-job容器的一部分,并作为卷安装。您可以populate a volume with data stored in a configmap

postinstall-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-postinstall-configmap
data:
  jenkins.sh: |-
{{ .Files.Get "scripts/jenkins.sh" | indent 4}}

postinstall.yaml

apiVersion: batch/v1
kind: Job
metadata:
  name: "{{ .Release.Name }}"
  annotations:
    "helm.sh/hook": post-install
    "helm.sh/hook-weight": "-5"
spec:
  template:
    spec:
      containers:
      - name: post-install-jenkins-job
        image: alpine:3.3
        imagePullPolicy: IfNotPresent
        command: [ "/bin/sh", "-c", "/opt/scripts/jenkins.sh"]
        volumeMounts:
          - name: config-volume
            mountPath: /opt/scripts
      volumes:
        - name: config-volume
          configMap:
            name: {{ .Release.Name }}-postinstall-configmap
            defaultMode: 0777
      restartPolicy: Never
      terminationGracePeriodSeconds: 0