Je sais que beaucoup de gens avaient déjà une question similaire, j'en ai lu quelques-uns, mais je n'ai rien trouvé qui m'a vraiment aidé jusqu'à présent.
J'ai un gitlab avec repo privé activé, j'utilise également Google Kubernetes Engine. J'ai quelques conteneurs Docker dans mon référentiel privé et je souhaite déployer l'un d'entre eux sur le moteur Kubernetes.
J'ai créé un secret avec kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
J'ai aussi essayé kubectl create secret docker-registry name --docker-server=registry.xy.z --docker-username=google --docker-password=xyz [email protected]
Ensuite, j'ai créé mon fichier de déploiement:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-test
labels:
app: 13371337
spec:
replicas: 1
template:
metadata:
labels:
app: 13371337
spec:
containers:
- name: backend
image: registry.xy.z/group/project/backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
imagePullSecrets:
- name: db-user-pass or name
Des idées pour le faire fonctionner?
En utilisant kubectl create secret docker-registry name
est un dans le bon sens pour fournir les informations d'identification du registre de docker privé.
imagePullSecrets
les options sont également belles, si vous spécifiez un nom pour votre secret de registre docker.
Ainsi, depuis le chemin Kubernetes, tout a l'air bien.
Essayez de vérifier les événements du pod qui seront créés par le déploiement, trouvez simplement votre pod par kubectl get pods
et appelez kubectl describe pod $name_of_your_pod
, vous verrez une raison réelle pour laquelle il ne peut pas tirer une image.
De plus, si votre dépositaire n'est pas sécurisé ou possède un certificat auto-signé, essayez de suivre ce guide pour permettre au démon docker d'extraire l'image à partir de là, ce qui est souvent une raison d'échecs d'extraction d'image.
Afin de créer un secret, vous pouvez utiliser la commande suivante: (remarquez que je lui ai donné un nom)
kubectl create secret docker-registry my_registry \
--docker-server=registry.xy.z \
--docker-username=google \
--docker-password=xyz \
[email protected]
ou en utilisant yaml:
apiVersion: v1
kind: Secret
metadata:
name: my_registry
type: Opaque
data:
docker-server: registry.xy.z
docker-username: google
docker-password: xyz
docker-email: [email protected]
et votre déploiement doit utiliser le nom secret:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend-test
labels:
app: 13371337
spec:
replicas: 1
template:
metadata:
labels:
app: 13371337
spec:
containers:
- name: backend
image: registry.xy.z/group/project/backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
imagePullSecrets:
- name: my_registry
Remarque: vous devez créer le secret par espace de noms.