3.4. Git source
Lorsqu’il est spécifié, le code source est récupéré à partir de l’emplacement fourni.
Lorsque vous fournissez un Dockerfile en ligne, il écrase le Dockerfile dans le contexteDir du référentiel Git.
La définition de la source fait partie de la section Spécification dans le BuildConfig:
- 1
- Le champ git contient l’identifiant de ressource uniforme (URI) dans le référentiel Git distant du code source. Il faut spécifier la valeur du champ ref pour vérifier une référence Git spécifique. Il peut s’agir d’une balise SHA1 ou d’un nom de branche. La valeur par défaut du champ ref est master.
- 2
- Le champ contextDir vous permet de remplacer l’emplacement par défaut à l’intérieur du référentiel de code source où la build recherche le code source de l’application. Lorsque votre application existe à l’intérieur d’un sous-répertoire, vous pouvez remplacer l’emplacement par défaut (le dossier racine) en utilisant ce champ.
- 3
- Lorsque le champ dockerfile optionnel est fourni, il devrait s’agir d’une chaîne contenant un Dockerfile qui écrase tout Dockerfile pouvant exister dans le référentiel source.
Dans le cas où le champ ref indique une requête de traction, le système utilise une opération de récupération de git, puis la vérification FETCH_HEAD.
Lorsqu’aucune valeur réf n’est fournie, OpenShift Dedicated effectue un clone peu profond (--profondeur=1). Dans ce cas, seuls les fichiers associés au plus récent commit sur la branche par défaut (généralement maître) sont téléchargés. Cela se traduit par le téléchargement des dépôts plus rapidement, mais sans l’historique complet de l’engagement. Afin d’effectuer un clone git complet de la branche par défaut d’un référentiel spécifié, définissez ref au nom de la branche par défaut (par exemple principal).
Les opérations de clone de Git qui passent par un proxy qui exécute l’homme au milieu (MITM) TLS détournement ou recryptage de la connexion proxiée ne fonctionnent pas.
3.4.1. À l’aide d’un proxy Copier lienLien copié sur presse-papiers!
Lorsque votre dépôt Git ne peut être consulté qu’à l’aide d’un proxy, vous pouvez définir le proxy à utiliser dans la section source de la configuration de construction. Il est possible de configurer un proxy HTTP et HTTPS à utiliser. Les deux champs sont facultatifs. Les domaines pour lesquels aucun proxying ne doit être effectué peuvent également être spécifiés dans le champ NoProxy.
L’URI source doit utiliser le protocole HTTP ou HTTPS pour que cela fonctionne.
En ce qui concerne les constructions de stratégie Pipeline, compte tenu des restrictions actuelles avec le plugin Git pour Jenkins, toutes les opérations Git via le plugin Git ne tirent pas parti du proxy HTTP ou HTTPS défini dans le BuildConfig. Le plugin Git utilise uniquement le proxy configuré dans l’interface utilisateur Jenkins dans le panneau Gestionnaire de plugins. Ce proxy est ensuite utilisé pour toutes les interactions git au sein de Jenkins, dans tous les emplois.
3.4.2. Les secrets de Clone Copier lienLien copié sur presse-papiers!
Les pods de builder nécessitent l’accès à tous les référentiels Git définis comme source pour une construction. Les secrets de clone source sont utilisés pour fournir à la pod constructeur l’accès auquel il n’aurait normalement pas accès, tels que des dépôts privés ou des dépôts avec des certificats SSL autosignés ou non fiables.
Les configurations secrètes de clone source suivantes sont prises en charge:
- Fichier .gitconfig
- Authentification de base
- Authentification des clés SSH
- Autorités de certification de confiance
Il est également possible d’utiliser des combinaisons de ces configurations pour répondre à vos besoins spécifiques.
3.4.2.1. Ajout automatique d’un secret de clone source à une configuration de build Copier lienLien copié sur presse-papiers!
Lorsqu’un BuildConfig est créé, OpenShift Dedicated peut remplir automatiquement sa référence secrète de clone source. Ce comportement permet aux builds résultants d’utiliser automatiquement les informations d’identification stockées dans le secret référencé pour s’authentifier vers un référentiel Git distant, sans nécessiter de configuration supplémentaire.
Afin d’utiliser cette fonctionnalité, un secret contenant les informations d’identification du référentiel Git doit exister dans l’espace de noms dans lequel le BuildConfig est créé ultérieurement. Ces secrets doivent inclure une ou plusieurs annotations préfixées avec build.openshift.io/source-secret-match-uri-. La valeur de chacune de ces annotations est un modèle Uniform Resource Identifier (URI), qui est défini comme suit. Lorsqu’un BuildConfig est créé sans référence secrète de clone source et que son URI source Git correspond à un modèle URI dans une annotation secrète, OpenShift Dedicated insère automatiquement une référence à ce secret dans le BuildConfig.
Conditions préalables
Le modèle URI doit consister en:
- A schéma valide: *://, git://, http://, https:/ ou ssh:///
- Hôte: *' ou un nom d’hôte valide ou une adresse IP éventuellement précédée de *.
- Chemin: /* ou / suivi de tous les caractères optionnellement incluant * caractères
Dans tout ce qui précède, un caractère * est interprété comme un wildcard.
Les modèles URI doivent correspondre aux URI source Git qui sont conformes à la RFC3986. Il ne faut pas inclure un composant nom d’utilisateur (ou mot de passe) dans un modèle URI.
Ainsi, si vous utilisez ssh://git@bitbucket.atlassian.com:7999/ATLASSIAN jira.git pour une URL de dépôt git, le secret source doit être spécifié comme ssh://bitbucket.atlassian.com:7999/* (et non ssh://git@bitbucket.atlassian.com:7999/*).
oc annotate secret mysecret \ 'build.openshift.io/source-secret-match-uri-1=ssh://bitbucket.atlassian.com:7999/*'
$ oc annotate secret mysecret \
'build.openshift.io/source-secret-match-uri-1=ssh://bitbucket.atlassian.com:7999/*'
Procédure
Lorsque plusieurs secrets correspondent à l’URI Git d’un BuildConfig particulier, OpenShift Dedicated sélectionne le secret avec le plus long match. Cela permet l’écrasement de base, comme dans l’exemple suivant.
Le fragment suivant montre deux secrets de clones sources partiels, le premier correspondant à n’importe quel serveur dans le domaine mycorp.com accessible par HTTPS, et le second accès principal aux serveurs mydev1.mycorp.com et mydev2.mycorp.com:
Ajouter une annotation build.openshift.io/source-secret-match-uri- à un secret préexistant en utilisant:
oc annotate secret mysecret \ 'build.openshift.io/source-secret-match-uri-1=https://*.mycorp.com/*'
$ oc annotate secret mysecret \ 'build.openshift.io/source-secret-match-uri-1=https://*.mycorp.com/*'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2.2. Ajout manuel d’un clone source secret Copier lienLien copié sur presse-papiers!
Les secrets de clone source peuvent être ajoutés manuellement à une configuration de build en ajoutant un champ sourceSecret à la section source à l’intérieur du BuildConfig et le paramétrer au nom du secret que vous avez créé. Dans cet exemple, c’est le secret de base.
Procédure
Il est également possible d’utiliser la commande oc set build-secret pour définir le secret du clone source sur une configuration de build existante.
Afin de définir le secret du clone source sur une configuration de build existante, entrez la commande suivante:
oc set build-secret --source bc/sample-build basicsecret
$ oc set build-secret --source bc/sample-build basicsecret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2.3. Créer un secret à partir d’un fichier .gitconfig Copier lienLien copié sur presse-papiers!
Lorsque le clonage de votre application dépend d’un fichier .gitconfig, vous pouvez créer un secret qui le contient. Ajoutez-le au compte de service constructeur, puis à votre BuildConfig.
Procédure
- Créer un secret à partir d’un fichier .gitconfig:
oc create secret generic <secret_name> --from-file=<path/to/.gitconfig>
$ oc create secret generic <secret_name> --from-file=<path/to/.gitconfig>
La vérification SSL peut être désactivée si sslVerify=false est défini pour la section http dans votre fichier .gitconfig:
[http] sslVerify=false
[http]
sslVerify=false
3.4.2.4. Créer un secret à partir d’un fichier .gitconfig pour Git sécurisé Copier lienLien copié sur presse-papiers!
Lorsque votre serveur Git est sécurisé avec SSL bidirectionnel et nom d’utilisateur avec mot de passe, vous devez ajouter les fichiers de certificat à votre création de source et ajouter des références aux fichiers de certificat dans le fichier .gitconfig.
Conditions préalables
- Il faut avoir des informations d’identification Git.
Procédure
Ajoutez les fichiers de certificat à votre source de création et ajoutez des références aux fichiers de certificat dans le fichier .gitconfig.
- Ajoutez les fichiers client.crt, cacert.crt et client.key dans le dossier /var/run/secrets/openshift.io/source/ dans le code source de l’application.
Dans le fichier .gitconfig pour le serveur, ajoutez la section [http] affichée dans l’exemple suivant:
cat .gitconfig
# cat .gitconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Afin d’éviter d’avoir à saisir à nouveau votre mot de passe, assurez-vous de spécifier l’image source à image (S2I) dans vos builds. Cependant, si vous ne pouvez pas cloner le référentiel, vous devez toujours spécifier votre nom d’utilisateur et votre mot de passe pour promouvoir la construction.
3.4.2.5. Créer un secret à partir de l’authentification de base du code source Copier lienLien copié sur presse-papiers!
L’authentification de base nécessite soit une combinaison de --username et --password, soit un jeton à authentifier par rapport au serveur de gestion de la configuration du logiciel (SCM).
Conditions préalables
- Le nom d’utilisateur et le mot de passe pour accéder au référentiel privé.
Procédure
Créez le secret d’abord avant d’utiliser le --username et --password pour accéder au référentiel privé:
oc create secret generic <secret_name> \ --from-literal=username=<user_name> \ --from-literal=password=<password> \ --type=kubernetes.io/basic-auth
$ oc create secret generic <secret_name> \ --from-literal=username=<user_name> \ --from-literal=password=<password> \ --type=kubernetes.io/basic-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un secret d’authentification de base avec un jeton:
oc create secret generic <secret_name> \ --from-literal=password=<token> \ --type=kubernetes.io/basic-auth
$ oc create secret generic <secret_name> \ --from-literal=password=<token> \ --type=kubernetes.io/basic-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2.6. Création d’un secret à partir du code source authentification de clé SSH Copier lienLien copié sur presse-papiers!
L’authentification basée sur les clés SSH nécessite une clé SSH privée.
Les clés de dépôt sont généralement situées dans le répertoire $HOME/.ssh/, et sont nommées id_dsa.pub, id_ecdsa.pub, id_ed25519.pub, ou id_rsa.pub par défaut.
Procédure
Générer des identifiants clés SSH:
ssh-keygen -t ed25519 -C "your_email@example.com"
$ ssh-keygen -t ed25519 -C "your_email@example.com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteLa création d’une phrase de passe pour la clé SSH empêche OpenShift Dedicated de construire. Lorsqu’il est demandé une phrase de passe, laissez-le vide.
Deux fichiers sont créés: la clé publique et une clé privée correspondante (un de id_dsa, id_ecdsa, id_ed25519 ou id_rsa). Avec ces deux en place, consultez le manuel de votre système de gestion du contrôle source (SCM) sur la façon de télécharger la clé publique. La clé privée est utilisée pour accéder à votre dépôt privé.
Avant d’utiliser la clé SSH pour accéder au référentiel privé, créez le secret:
oc create secret generic <secret_name> \ --from-file=ssh-privatekey=<path/to/ssh/private/key> \ --from-file=<path/to/known_hosts> \ --type=kubernetes.io/ssh-auth
$ oc create secret generic <secret_name> \ --from-file=ssh-privatekey=<path/to/ssh/private/key> \ --from-file=<path/to/known_hosts> \
1 --type=kubernetes.io/ssh-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Facultatif : L’ajout de ce champ permet une vérification stricte de la clé hôte du serveur.
AvertissementEn sautant le fichier connu_hosts tout en créant le secret, la construction est vulnérable à une attaque potentielle de l’homme dans le milieu (MITM).
NoteAssurez-vous que le fichierknown_hosts inclut une entrée pour l’hôte de votre code source.
3.4.2.7. Créer un secret à partir des autorités de certification fiables du code source Copier lienLien copié sur presse-papiers!
L’ensemble des autorités de certification Transport Layer Security (TLS) qui sont fiables lors d’une opération de clone Git sont intégrés dans les images d’infrastructure dédiées à OpenShift. Lorsque votre serveur Git utilise un certificat autosigné ou signé par une autorité qui ne fait pas confiance à l’image, vous pouvez créer un secret qui contient le certificat ou désactiver la vérification TLS.
Lorsque vous créez un secret pour le certificat CA, OpenShift Dedicated l’utilise pour accéder à votre serveur Git lors de l’opération de clone Git. Cette méthode est nettement plus sécurisée que la désactivation de la vérification SSL Git, qui accepte tout certificat TLS qui est présenté.
Procédure
Créez un secret avec un fichier de certificat CA.
Dans le cas où votre CA utilise des autorisations de certification intermédiaires, combinez les certificats pour toutes les AC dans un fichier ca.crt. Entrez la commande suivante:
cat intermediateCA.crt intermediateCA.crt rootCA.crt > ca.crt
$ cat intermediateCA.crt intermediateCA.crt rootCA.crt > ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez le secret en entrant la commande suivante:
oc create secret generic mycert --from-file=ca.crt=</path/to/file>
$ oc create secret generic mycert --from-file=ca.crt=</path/to/file>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Il faut utiliser le nom de clé ca.crt.
3.4.2.8. Combinaisons de sources secrètes Copier lienLien copié sur presse-papiers!
Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques.
3.4.2.8.1. Création d’un secret d’authentification SSH avec un fichier .gitconfig Copier lienLien copié sur presse-papiers!
Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, tels qu’un secret d’authentification SSH avec un fichier .gitconfig.
Conditions préalables
- Authentification SSH
- Fichier .gitconfig
Procédure
Afin de créer un secret d’authentification SSH avec un fichier .gitconfig, entrez la commande suivante:
oc create secret generic <secret_name> \ --from-file=ssh-privatekey=<path/to/ssh/private/key> \ --from-file=<path/to/.gitconfig> \ --type=kubernetes.io/ssh-auth
$ oc create secret generic <secret_name> \ --from-file=ssh-privatekey=<path/to/ssh/private/key> \ --from-file=<path/to/.gitconfig> \ --type=kubernetes.io/ssh-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2.8.2. Créer un secret qui combine un fichier .gitconfig et un certificat CA Copier lienLien copié sur presse-papiers!
Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, comme un secret qui combine un fichier .gitconfig et un certificat d’autorité de certification (CA).
Conditions préalables
- Fichier .gitconfig
- Certificat CA
Procédure
Afin de créer un secret qui combine un fichier .gitconfig et un certificat CA, entrez la commande suivante:
oc create secret generic <secret_name> \ --from-file=ca.crt=<path/to/certificate> \ --from-file=<path/to/.gitconfig>
$ oc create secret generic <secret_name> \ --from-file=ca.crt=<path/to/certificate> \ --from-file=<path/to/.gitconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2.8.3. Créer un secret d’authentification de base avec un certificat CA Copier lienLien copié sur presse-papiers!
Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, comme un secret qui combine une autorité d’authentification de base et un certificat d’autorité de certification (CA).
Conditions préalables
- Informations d’authentification de base
- Certificat CA
Procédure
Afin de créer un secret d’authentification de base avec un certificat CA, entrez la commande suivante:
oc create secret generic <secret_name> \ --from-literal=username=<user_name> \ --from-literal=password=<password> \ --from-file=ca-cert=</path/to/file> \ --type=kubernetes.io/basic-auth
$ oc create secret generic <secret_name> \ --from-literal=username=<user_name> \ --from-literal=password=<password> \ --from-file=ca-cert=</path/to/file> \ --type=kubernetes.io/basic-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2.8.4. Créer un secret d’authentification de base avec un fichier de configuration Git Copier lienLien copié sur presse-papiers!
Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, comme un secret qui combine une authentification de base et un fichier .gitconfig.
Conditions préalables
- Informations d’authentification de base
- Fichier .gitconfig
Procédure
Afin de créer un secret d’authentification de base avec un fichier .gitconfig, entrez la commande suivante:
oc create secret generic <secret_name> \ --from-literal=username=<user_name> \ --from-literal=password=<password> \ --from-file=</path/to/.gitconfig> \ --type=kubernetes.io/basic-auth
$ oc create secret generic <secret_name> \ --from-literal=username=<user_name> \ --from-literal=password=<password> \ --from-file=</path/to/.gitconfig> \ --type=kubernetes.io/basic-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2.8.5. Créer un secret d’authentification de base avec un fichier .gitconfig et un certificat CA Copier lienLien copié sur presse-papiers!
Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, comme un secret qui combine une authentification de base, un fichier .gitconfig et un certificat d’autorité de certification (CA).
Conditions préalables
- Informations d’authentification de base
- Fichier .gitconfig
- Certificat CA
Procédure
Afin de créer un secret d’authentification de base avec un fichier .gitconfig et un certificat CA, entrez la commande suivante:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow