如何使用私人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
的父containers
的spec
值:
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规格的知识,都可以应用到工作中。