我正在使用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
答案 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线程。