运行 在 helm 安装中包含 kubectl 命令的脚本

Running script containing kubectl commands in helm installation

我有一个 shell 脚本,其中包含多个 kubectl 命令,我需要将其作为 helm 安装的一部分执行。

#!/bin/bash kubectl create secret generic mysecret --from-literal=username=$USER_NAME --from-literal=password=$passwrd

我写了一个执行这个脚本的作业。

apiVersion: batch/v1
kind: Job
metadata:
  name: "sagdfghd"

spec:
  template:        
    spec:
      containers:
        - name: sagdfghd
          image: {{ .Values.jobs.dockerRegistry }}
          command: ["sh", "-c", {{ .Files.Get "scripts/myscript.sh" | quote }} ]

但是由于脚本在容器中 运行ning,因此无法找到 kubectl 命令。

知道如何 运行 这个脚本吗??

TIA

{{ .Values.jobs.dockerRegistry }} 解析到什么图像,它是否安装了 kubectl 工具?它很可能没有安装 kubectl,因此您必须在 Docker 文件中添加 kubectl 安装说明。这些说明将取决于您的基础 Docker 图像是什么。请参阅以下内容link:

https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl

@ericstaples 提供了 link to installation documentation 它有助于解决问题:

What image does {{ .Values.jobs.dockerRegistry }} resolve to and does it have the kubectl tool installed on it?

它很可能没有安装 kubectl,因此您必须在 Docker 文件中添加 kubectl 安装说明。这些说明将取决于您的基础 Docker 图片是什么。

由于作业创建的 Pod 将附加一个 ServiceAccount,因此容器中的 kubectl 工具 运行 将通过 ServiceAccount 令牌调用其 运行 所在的集群,实际上会在集群中创建 Secret,而不是在容器中(假设它具有正确的 RBAC 权限)。

试试吧。从容器调用 kube-apiserver(例如通过 kubectl)并不罕见。

旁注:在容器中创建 Secret 对象完全没有意义。