Cette page montre comment créer un pod qui utilise un registre ou d’un référentiel d’images de conteneur privé.
Il est possible de créer un secret depuis une authentification préalable via docker.
NB: Docker crée et gère un fichier ~/.docker/config.json avec les identifiants, ce fichier peut être importé directement sous Kubernetes.
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=<path/to/.docker/config.json> \
--type=kubernetes.io/dockerconfigjson
Il est également possible de créer ce secret manuellement :
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
namespace: awesomeapps
data:
.dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson
Create this Secret, naming it regcred:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
avec:
<your-registry-server> le FDQN du serveur<your-name> nom d’utilisateur.<your-pword> mot de passe.<your-email> Email.NB: utiliser la ligne de commande expose votre mot de passe dans l’historique
Pour visualiser le contenu
kubectl get secret regcred --output=yaml
La sortie est de la forme :
apiVersion: v1
kind: Secret
metadata:
...
name: regcred
...
data:
.dockerconfigjson: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0=
type: kubernetes.io/dockerconfigjson
la valeur de .dockerconfigjson est encodé en base64, pour voir son contenu
kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode
La sortie
{"auths":{"your.private.registry.example.com":{"username":"janedoe","password":"xxxxxxxxxxx","email":"jdoe@example.com","auth":"c3R...zE2"}}}
Pour visualiser auth
echo "c3R...zE2" | base64 --decode
On obtient
janedoe:xxxxxxxxxxx
Lors de la création d’un manifest, pour utiliser un dépôt privé, il suffit d’ajouter la source du secret gràce à imagePullSecret
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regcred
En cas de probleme, taper :
kubectl describe pod private-reg
Si l’évenement FailedToRetrieveImagePullSecret est présent, Kubernetes ne trouve pas le secret