library - docker store
Cómo acceder al repositorio privado de Docker Hub desde Kubernetes en Vagrant (3)
Crea k8 Secret:
apiVersion: v1
kind: Secret
metadata:
name: repositorySecretKey
data:
.dockerconfigjson: <base64 encoded docker auth config>
type: kubernetes.io/dockerconfigjson
Luego en la configuración de pod o rc menciona el secreto. Ejemplo:
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-pod
image: quay.io/example/hello:1.1
imagePullSecrets:
- name: repositorySecretKey
Docker auth config
{
"https://quay.io": {
"email": ".",
"auth": "<base64 encoded auth token>"
}
}
O
kubectl create secret docker-registry myregistrykey /
--docker-server=DOCKER_REGISTRY_SERVER /
--docker-username=DOCKER_USER /
--docker-password=DOCKER_PASSWORD /
--docker-email=DOCKER_EMAIL
No consigo extraer de mi repositorio privado de Docker Hub a mi configuración local de Kubernetes que se ejecuta en Vagrant:
El contenedor "hellonode" en la cápsula "hellonode-n1hox" está esperando para comenzar: la imagen no se puede extraer
Error al extraer la imagen "username / hellonode": Error: imagen username / hellonode: último no encontrado
He configurado Kubernetes localmente a través de Vagrant como se describe here y he creado un secreto llamado "dockerhub" con kubectl create secret docker-registry dockerhub --docker-server = https://registry.hub.docker.com/ --docker-username = nombre de usuario --docker-password = ... --docker-email = ... que proporcioné como el secreto de extracción de imagen.
Estoy ejecutando Kubernetes 1.2.0.
Para extraer una imagen privada alojada en DockerHub desde un YAML de Kubernetes:
Ejecute estos comandos:
DOCKER_REGISTRY_SERVER=docker.io
DOCKER_USER=Type your dockerhub username, same as when you `docker login`
DOCKER_EMAIL=Type your dockerhub email, same as when you `docker login`
DOCKER_PASSWORD=Type your dockerhub pw, same as when you `docker login`
kubectl create secret docker-registry myregistrykey /
--docker-server=$DOCKER_REGISTRY_SERVER /
--docker-username=$DOCKER_USER /
--docker-password=$DOCKER_PASSWORD /
--docker-email=$DOCKER_EMAIL
Si su nombre de usuario en DockerHub es DOCKER_USER
, y su repositorio privado se llama PRIVATE_REPO_NAME
, y la imagen que desea obtener está etiquetada como la latest
, cree este archivo example.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: whatever
spec:
containers:
- name: whatever
image: DOCKER_USER/PRIVATE_REPO_NAME:latest
imagePullPolicy: Always
command: [ "echo", "SUCCESS" ]
imagePullSecrets:
- name: myregistrykey
Entonces corre:
kubectl create -f example.yaml
Puede seguir estas instrucciones sobre cómo configurar nodos para autenticarse en un repositorio privado para configurar los kubelets para que Docker use sus credenciales, o seguir la solución de + Phagun Baya con imagePullSecrets que se aplica a los pods.