tag imagenes hub example docker kubernetes coreos

docker - imagenes - Extracción de imágenes del registro privado en Kubernetes



download docker image (5)

Puedo confirmar que imagePullSecrets no funciona con la implementación , pero puede

kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL kubectl edit serviceaccounts default

Añadir

imagePullSecrets: - name: myregistrykey

Para el y después de Secrets , guardar y salir. Y su trabajo. Probado con Kubernetes 1.6.7

Construí un clúster de kubernetes de 4 nodos ejecutando pods de varios contenedores que se ejecutan en CoreOS. Las imágenes provienen de repositorios públicos y privados. Ahora mismo debo iniciar sesión en cada nodo y manualmente desplegar las imágenes cada vez que las actualizo. Me gustaría poder tirar de ellos automáticamente.

  1. He intentado ejecutar el inicio de sesión de Docker en cada servidor y poner el archivo .dockercfg en / root y / core
  2. También he hecho lo anterior con .docker / config.json
  3. He agregado el secreto al maestro de kube y he añadido imagePullSecrets:
    • nombre: docker.io al archivo de configuración del Pod.

Cuando creo el pod, aparece el mensaje de error Error:

image <user/image>:latest not found

Si inicio sesión y ejecuto el acoplador de extracción, extraerá la imagen. Lo he intentado usando docker.io y quay.io.



Para agregar a lo que @rob dijo, a partir de Docker 1.7, el uso de .dockercfg ha quedado en desuso y ahora usan un archivo ~ / .docker / config.json. Hay soporte para este tipo de secreto en kube 1.1, pero debe crearlo usando diferentes claves / configuración de tipo en el yaml:

Primero, base64 codifica tu ~/.docker/config.json :

cat ~/.docker/config.json | base64

A continuación, crea un archivo yaml: my-secret.yaml

apiVersion: v1 kind: Secret metadata: name: registrypullsecret data: .dockerconfigjson: <base-64-encoded-json-here> type: kubernetes.io/dockerconfigjson

-

$ kubectl create -f my-secret.yaml && kubectl get secrets NAME TYPE DATA default-token-olob7 kubernetes.io/service-account-token 2 registrypullsecret kubernetes.io/dockerconfigjson 1

Luego, en el yaml de tu pod, necesitas hacer referencia a registrypullsecret o crear un controlador de replicación:

apiVersion: v1 kind: Pod metadata: name: my-private-pod spec: containers: - name: private image: yourusername/privateimage:version imagePullSecrets: - name: registrypullsecret


Para centos7, el archivo de configuración del acoplador está en /root/.dockercfg

  1. echo $ (cat /root/.dockercfg) | base64 -w 0
  2. Copie y pegue el resultado en YAML secreto basado en el formato anterior:

    apiVersion: v1 kind: Secret metadata: name: docker-secret type: kubernetes.io/dockercfg data: .dockercfg: <YOUR_BASE64_JSON_HERE>

Y funcionó para mí, espero que también pueda ayudar.


Si necesita extraer una imagen de un repositorio de Docker Hub privado, puede usar lo siguiente.

Crea tu clave secreta

kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

secreto "myregistrykey" creado.

A continuación, agregue la clave recién creada a su cuenta de servicio de Kubernetes.

Recuperar la cuenta de servicio actual

kubectl get serviceaccounts default -o yaml > ./sa.yaml

Edite sa.yaml y agregue ImagePullSecret después de Secrets

imagePullSecrets: - name: myregistrykey

Actualiza la cuenta de servicio

kubectl replace serviceaccount default -f ./sa.yaml