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

Docker 在helm安装中运行包含kubectl命令的脚本,docker,kubernetes,kubernetes-helm,Docker,Kubernetes,Kubernetes Helm,我有一个shell脚本,其中有几个kubectl命令,我需要将其作为helm安装的一部分来执行 #/bin/bash kubectl创建机密的通用mysecret--from literal=username=$USER\u NAME--from literal=password=$passwrd 我已经编写了一个执行此脚本的作业 apiVersion: batch/v1 kind: Job metadata: name: "sagdfghd" spec: template:

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

#/bin/bash
kubectl创建机密的通用mysecret--from literal=username=$USER\u 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 }} ]
但由于脚本在容器中运行,因此无法找到kubectl命令

你知道我如何运行这个脚本吗


TIA

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


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

@Erics提供了Staples,它有助于解决问题:

{{.Values.jobs.dockerRegistry}}解析为什么图像 它安装了kubectl工具吗

它很可能没有安装kubectl,因此您必须在Dockerfile中添加kubectl安装说明。这些说明将取决于您的基本Docker映像是什么

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

试试看。从容器调用kube apiserver(例如通过kubectl)并不少见

旁注:在容器中创建一个秘密对象是毫无意义的

@Erics提供了Staples,它有助于解决问题:

{{.Values.jobs.dockerRegistry}}解析为什么图像 它安装了kubectl工具吗

它很可能没有安装kubectl,因此您必须在Dockerfile中添加kubectl安装说明。这些说明将取决于您的基本Docker映像是什么

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

试试看。从容器调用kube apiserver(例如通过kubectl)并不少见


旁注:在容器中创建一个秘密对象是毫无意义的

不,它不是,我也不能安装它。我在看我们是否可以在k8s环境中运行这个脚本,而不是在容器中运行它。因为我想在k8s env中创建secret,而不是在某个容器中..因为由
作业创建的
Pod
将有一个
servicecomport
附加到它,所以容器中运行的kubectl工具将通过
servicecomport
令牌调用它运行的集群,实际上,它将在集群中创建
Secret
,而不是容器(假设它具有正确的RBAC权限)。试试看。从容器调用kube apiserver(例如通过kubectl)并不少见。旁注:在容器中创建一个
Secret
对象是毫无意义的。@Sudhir你是如何修复它的?您是否在docker文件中安装了
kubectl
。我也有类似的情况/challenge@Shammir我没有使用命令行,而是使用kubernates的rest API来创建资源。没有,我也无法安装它。我正在寻找是否可以在k8s env中运行此脚本,而不是在容器中运行它。因为我想在k8s env中创建secret,而不是在某个容器中..因为由
作业创建的
Pod
将有一个
servicecomport
附加到它,所以容器中运行的kubectl工具将通过
servicecomport
令牌调用它运行的集群,实际上,它将在集群中创建
Secret
,而不是容器(假设它具有正确的RBAC权限)。试试看。从容器调用kube apiserver(例如通过kubectl)并不少见。旁注:在容器中创建一个
Secret
对象是毫无意义的。@Sudhir你是如何修复它的?您是否在docker文件中安装了
kubectl
。我也有类似的情况/challenge@Shammir我没有使用命令行,而是使用kubernates的RESTAPI来创建资源。