我有一个包含几个kubectl命令的shell脚本,我需要在头盔安装过程中执行它。
#!/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 }} ]
但是由于脚本正在容器中运行,因此无法找到kubectl命令。
任何想法我如何运行此脚本?
TIA
答案 0 :(得分:1)
{{ .Values.jobs.dockerRegistry }}
解析为什么图像,并且是否安装了kubectl
工具?它很可能没有安装kubectl,因此您必须在Dockerfile中添加kubectl安装说明。这些说明将取决于您的基本Docker映像是什么。请参见以下链接:
https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl
答案 1 :(得分:1)
@ericstaples提供了link to installation documentation,它有助于解决问题:
{{.Values.jobs.dockerRegistry}}解析并执行什么图像 它上面安装了kubectl工具吗?
它很可能没有安装kubectl,因此您必须在Dockerfile中添加kubectl安装说明。这些说明将取决于您的基本Docker映像是什么。
由于由Job创建的Pod将附加有ServiceAccount,因此在容器中运行的kubectl工具将通过ServiceAccount令牌调用其正在其中运行的集群,并且实际上将在集群中创建Secret ,而不是容器(假设它具有正确的RBAC权限)。
尝试一下。从容器调用kube-apiserver(例如通过kubectl)并不少见。
侧面说明:在容器中创建Secret对象绝对没有任何意义。