【问题标题】:How to include different script inside k8s kind Secret.stringData如何在 k8s 类型 Secret.stringData 中包含不同的脚本
【发布时间】:2022-10-01 10:11:40
【问题描述】:

我有一个 k8s cronjob,它定期导出指标,并且有 k8s secret.yaml,我从中执行一个名为 run.sh 的脚本 在 run.sh 中,我想引用另一个脚本,但我似乎找不到访问此脚本或在 cronjob.yaml 中指定它的正确方法

cronjob.yaml

apiVersion: batch/v1
kind: CronJob
metadata:
  name: exporter
  labels:
    app: metrics-exporter

spec:
  schedule: \"* * * * *\"
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: exporter
        spec:
          volumes:
            - name: db-dir
              emptyDir: { }
            - name: home-dir
              emptyDir: { }
            - name: run-sh
              secret:
                secretName: exporter-run-sh
            - name: clusters
              emptyDir: { }
          containers:
            - name: stats-exporter
              image: XXXX
              imagePullPolicy: IfNotPresent
              command:
                - /bin/bash
                - /home/scripts/run.sh
              resources: { }
              volumeMounts:
                - name: db-dir
                  mountPath: /.db
                - name: home-dir
                  mountPath: /home
                - name: run-sh
                  mountPath: /home/scripts
                - name: clusters
                  mountPath: /db-clusters
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
              securityContext:
                capabilities:
                  drop:
                    - ALL
                privileged: false
                runAsUser: 1000
                runAsNonRoot: true
                readOnlyRootFilesystem: false
                allowPrivilegeEscalation: false
          terminationGracePeriodSeconds: 30
          restartPolicy: OnFailure

下面是在 secret.yaml 中如何运行脚本 run.sh 并引用 /db-clusters 中的另一个脚本。

apiVersion: v1
kind: Secret
metadata:
  name: exporter-run-sh
type: Opaque
stringData:
  run.sh: |
    #!/bin/sh
    source $(dirname $0)/db-clusters/cluster1.sh
    # further work here

这是

错误信息:

/home/scripts/run.sh: line 57: /home/scripts/db-clusters/cluster1.sh: No such file or directory

    标签: shell kubernetes


    【解决方案1】:

    $(dirname $0)/db-clusters/cluster1.sh 将产生 /usr/bin/db-clusters/cluster1.sh

    试试source /db-clusters/cluster1.sh 应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 2020-12-06
      • 1970-01-01
      • 2017-07-29
      • 2017-04-09
      • 2021-12-07
      • 2018-02-24
      • 2011-05-05
      • 1970-01-01
      相关资源
      最近更新 更多