19 votes

Déploiement de cartes Helm et dépôt docker privé

J'ai un repo Docker privé avec un tas d'images. J'utilise Helm pour les déployer sur un cluster Kubernetes.

Helm values.yaml contient les informations d'identification du référentiel :

image:
  repository: <repo>
  tag: <version tag>
  pullPolicy: IfNotPresent
  imageCredentials:
    registry: <repo>
    username: <username>
    password: <pw>

Après avoir effectué l'installation de la barre

helm install myhelmchart --values values.yaml --version

Le statut du pod est Init:ErrImagePull. kubectl describe pods donne cette erreur :

Impossible de tirer l'image "image:tag" : erreur rpc : code = Inconnu desc = Réponse d'erreur du démon : Obtenir [image]/manifeste/[version] : non autorisé : authentification requise

19voto

jstriebel Points 303

Cela dépend de la sortie de votre carte de barre. Vous pouvez utiliser helm template pour voir les ressources kubernetes qui en résultent sans les déployer réellement. L'utilisation d'une image provenant d'un registre docker privé se résume à deux étapes :

  1. Assurez-vous que vous avez un secret ressource pour le référentiel privé. Notez que le type ici est kubernetes.io/dockerconfigjson o kubernetes.io/dockercfg .

    La façon de créer ceci avec les modèles de helm est décrite. aquí .

  2. Faites référence à ce secret dans le pod qui utilise l'image de ce dépôt privé, comme indiqué ci-dessous :

Ressource/modèle de pod :

spec:
  containers:
  - name: some-pod
    image: <image>
  imagePullSecrets:
  - name: <name-of your secret>

Vous pouvez d'abord construire les ressources à la main sans barre. Cela permet de vérifier que les ressources elles-mêmes sont correctes. Ensuite, vous pouvez adapter les modèles de helm pour produire les ressources correctes en fonction de vos valeurs.

11voto

Stefan Asseg Points 96

ImageCredentials doit être au niveau de la racine, comme ceci :

image:
  repository: <repo>
  tag: <version tag>
  pullPolicy: IfNotPresent
imageCredentials:
  registry: <repo>
  username: <username>
  password: <pw>

parce que

{{- define "imagePullSecret" }}
{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.imageCredentials.registry (printf "%s:%s" .Values.imageCredentials.username .Values.imageCredentials.password | b64enc) | b64enc }}
{{- end }}

fait référence à .Values.imageCredentials.* et non à .Values.image.imageCredentials.*.

Vous devez également ajouter

imagePullSecrets:
- name: {{ .Values.imageCredentials.name }}

au modèle (par exemple, pod ou déploiement) qui tire l'image du registre privé. Et comme cela fait référence à .Values.imageCredentials.name, qui n'est pas défini dans votre extrait, vous devez l'ajouter, comme suit :

image:
  repository: <repo>
  tag: <version tag>
  pullPolicy: IfNotPresent
imageCredentials:
  name: <registry_name>_credentials
  registry: <repo>
  username: <username>
  password: <pw>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X