如何使用私人dockerregistry定义Kubernetes作业?

我有一个简单的Kubernetes工作(基于http://kubernetes.io/docs/user-guide/jobs/work-queue-2/例子),该工作使用了一个Docker镜像,作为公共镜像放置在我的dockerhub上帐户。 这一切都是这样的:

job.yaml

apiVersion: batch/v1 kind: Job metadata: name: job-wq-2 spec: parallelism: 2 template: metadata: name: job-wq-2 spec: containers: - name: c image: jonalv/job-wq-2 restartPolicy: OnFailure 

现在我想尝试使用需要身份validation的私有Dockerregistry,如下所示:

docker login https://myregistry.com

但是我找不到有关如何将用户名和密码添加到我的job.yaml文件的任何信息。 它是如何完成的?

您需要使用ImagePullSecrets 。

一旦你创build了一个秘密的对象,你可以在你的pod规范中引用它( containers的父containersspec值:

 apiVersion: batch/v1 kind: Job metadata: name: job-wq-2 spec: parallelism: 2 template: metadata: name: job-wq-2 spec: imagePullSecrets: - name: myregistrykey containers: - name: c image: jonalv/job-wq-2 restartPolicy: OnFailure 

当然,你将不得不创造秘密(按照文档)。 这是这样的:

 apiVersion: v1 kind: Secret metadata: name: myregistrykey namespace: mynamespace data: .dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg== type: kubernetes.io/dockerconfigjson 

.dockerconfigjson的值是该文件的base64编码: .docker/config.json

关键点: 工作规范包含一个pod规范 。 因此,无论您获得有关pod规格的知识,都可以应用到工作中。