2017-09-03 1 views
2

Réglage de la scène: J'ai mis un à plusieurs nœuds Kubernetes cluster et déployé le Jenkins Helm Chart avec le Jenkins Kubernetes plugin. Nous gérons en interne (entreprise) une installation Enterprise GitHub et nous avons plusieurs repos privés et publics. Les constructions sont implémentées en utilisant des méthodes non déclaratives: Jenkins pipelines (many features are missing in the plugin for declarative pipelines). Les builds ne fonctionnent pas sur le maître Jenkins, mais chaque tâche consomme son propre pod pour des raisons évidentes (scale-out maximum et isolation totale/pas d'effets secondaires) via podTemplates/containerTemplates.Aucune information d'identification/aucun secret n'a été extrait du maître dans PodTemplate/ContainerTemplate par Jenkins Kubernetes Plugin pendant l'exécution du pipeline?

Le problème/question: J'ai trouvé aucun moyen ou description comment rapportez de prises en pension privés ou, plus généralement parlé, j'ai trouvé aucun moyen de tirer des lettres de créance/secrets du maître Jenkins (où je souhaite maintenir les centrer) dans les pods/conteneurs que le plugin crée pour mon travail, c'est-à-dire que je manque dans ces pods/conteneurs les informations d'identification/secrets à tirer d'un dépôt privé. Comment puis-je les rendre disponibles dans les pods/conteneurs dynamiques? Est-ce que c'est possible?

Quelques informations supplémentaires: Sur mon maître Jenkins je peux parfaitement aller chercher des repos privés, avoir accès à tout et tout va bien. Ce n'est que récemment que j'ai essayé d'utiliser le plugin Kubernetes et de tirer le meilleur parti de mon cluster. En outre, je suis dans le conteneur esclave JNLP (et ses frères et sœurs basés sur mes containerTemplates) et n'a rien trouvé. Pas dans l'ENV, pas dans les fichiers. Il n'est pas clair pour moi comment mes pouvoirs/secrets seraient injectés, et ce que je dois faire pour cela.

solutions sales J'utilise déjà, mais je tiens à le remplacer: Pour résoudre le problème, je mets mes lettres de créance dans le JenkinsFile, mais c'est mauvais parce que je les enduis maintenant sur mes mises en pension et il est pas de solution pour le public repos non plus. Ce que j'ai également fait était de les faire cuire dans mes images pour les gabarits de conteneur/conteneur, mais c'est moche pour les mêmes raisons que je les mets maintenant dans DockerFiles (directement ou indirectement pendant la construction) et ne peux pas utiliser des images standard plus et ne peut plus mettre le mien dans les repositions d'image publique plus, aussi. Je suppose qu'il serait également possible de modifier mon podTemplate/containerTemplate le plus haut et d'ajouter manuellement les vars ENV avec les informations d'identification/secrets, mais c'est moche et je n'utiliserais plus le magasin d'identités/secrets de Jenkins.

Je cherche une solution propre au problème. J'espère qu'il est possible d'apporter mes références/secrets du maître Jenkins dans mes pods/conteneurs dynamiques que je tiens aussi à garder (pas d'esclaves statiques, mais dynamiques pour chaque tâche).

+0

Vous n'êtes pas en mesure d'obtenir les informations d'identification? [Ici vous pouvez trouver un fichier Jenkins qui utilise le plugin Kubernetes] (https://github.com/radu-matei/kube-bot/blob/master/Jenkinsfile) qui fonctionne bien en tirant les informations d'identification. Si vous pouviez poster un échantillon de votre Jenkinsfile je pense qu'il pourrait être utile –

Répondre

0
git url: 'private-gitlab-address', 
    branch: 'master', 
    credentialsId : 'my_jenkins_credential_id' 

Vous pouvez créer votre propre my_jenkins_credential_id disponible globaly par cette page:

jenkins-master-address/credentials/store/system/domain/_/newCredentials