代码之家  ›  专栏  ›  技术社区  ›  Sudhir

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

  •  0
  • Sudhir  · 技术社区  · 7 年前

    我有一个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 }} ]
    

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

    知道怎么运行这个脚本吗?是吗?

    短暂性脑缺血发作

    2 回复  |  直到 6 年前
        1
  •  1
  •   erstaples    7 年前

    什么形象 {{ .Values.jobs.dockerRegistry }} 决心并且它有 kubectl 安装在上面的工具?它很可能没有安装kubectl,因此您必须在dockerfile中添加kubectl安装说明。这些指令将取决于你的基本Docker图像是什么。请参阅以下链接:

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

        2
  •  1
  •   d0bry    7 年前

    埃里斯塔普斯提供 link to installation documentation 它有助于解决问题:

    {{.values.jobs.dockerregistry}解析和执行的图像 上面安装了kubectl工具?

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

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

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

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

    推荐文章