如何从命令行传递imagePullSecrets

时间:2020-03-30 03:59:26

标签: kubernetes

我正在使用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

3 个答案:

答案 0 :(得分:2)

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

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>"}]} }'

答案 1 :(得分:0)

您仍然可以使用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

答案 2 :(得分:0)

有可能Add ImagePullSecrets to a service account

这可能会帮助您:

如果吊舱未设置ServiceAccount,则会设置 ServiceAccount为默认值。它确保ServiceAccount 容器引用的对象存在,否则拒绝它。如果豆荚 不包含任何ImagePullSecrets,则 ServiceAccount已添加到窗格中。

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

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

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

相关问题