【问题标题】:How to pass imagePullSecrets from commandline如何从命令行传递 imagePullSecrets
【发布时间】:2020-04-07 00:03:35
【问题描述】:

我正在使用 kubernetes 命令式方式而不是声明式方式。 因为有很多参数会定期变化,不能每次都更新yaml文件。

为了创建部署,我们使用这个

kubectl create deployment nginx --image=nginx:1.7.1

这对于公共图像来说很好。 但是对于证明图像,我们需要使用秘密传递凭据数据。如link 如果是 yaml 文件,我们保留在文件的下一行。

 imagePullSecrets:
  - name: regcred

但是,如何为以下类型的线传递这些数据?

kubectl create deployment nginx --image=nginx:1.7.1

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    这里是在命令行中添加图像拉取秘密的示例

    kubectl run hello-world -it --restart=Never --image=nginx:1.7.1 --image-pull-secrets=regcred
    

    对于覆盖,您可以使用:

    kubectl run <name> -it --restart=Never --image=<private image> --overrides='{ "apiVersion": "v1", "spec": {"imagePullSecrets": [{"name": "<secret>"}]} }'
    

    【讨论】:

    • run 是创建 Pod 但部署,这个参数不支持
    • @udaykiran 你想运行参数,这就是为什么添加如果你想创建部署你可以使用文件添加它也将有助于管理更好的方式。
    • 对不起,苛刻,我从来没有提到我需要运行参数。如果我造成任何混淆,我很抱歉。我需要一个命令式的,我也提到了原因。请让我知道是否有任何可用的选项或参数。
    【解决方案2】:

    您仍然可以使用 kubectl 以与使用配置文件相同的方式管理 Kubernetes。无需求助于复杂的命令行参数。只需像往常一样创建部署清单。例如:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.1
            ports:
            - containerPort: 80
          imagePullSecrets:
          - name: regcred
    

    然后强制将清单提交到 Kubernetes API 服务器:

    kubectl create -f deployment.yml

    【讨论】:

    • run 用于创建 Pod,但用于部署,此参数不支持。声明式的方式很好。但是我们需要这样做,因为我们正在与 jenkins 集成,并且用户需要运行此部署的多个副本。因此,对于每个作业构建,都应该有一个单独的副本。
    【解决方案3】:

    有可能Add ImagePullSecrets to a service account

    这可能对你有帮助:

    如果 pod 没有设置 ServiceAccount,它会设置 ServiceAccount 为默认值。它确保 ServiceAccount pod 引用的存在,否则拒绝它。如果豆荚 不包含任何 ImagePullSecrets,则 ImagePullSecrets 的 将 ServiceAccount 添加到 pod。

    修补您使用的服务帐户并将 imagePullSecrets 设置为您选择的秘密。

    kubectl patch serviceaccount <account> -p '{"imagePullSecrets": [{"name": "regcred"}]}'
    

    您可能还会发现有趣的Automatically use secret when pulling from private registry 线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      相关资源
      最近更新 更多