Concourse¶
Concourse est un exécuteur de tâches continu basé sur des pipelines. Les pipelines sont conçus pour être autonomes afin de minimiser la configuration serveur. Tout dans Concourse fonctionne en conteneurs.
Vous pouvez utiliser Concourse pour créer vos projets, déployer vos applications ou exécuter des tâches cron telles que des sauvegardes.
Note
Dans ce tutoriel, remplacez les valeurs suivantes comme suit :
ZONE_NAME
à remplacer par le nom de votre zone d'administration (commence parocb-
).TEAM_NAME
à remplacer par le nom de l'équipe utilisée pour le déploiement.
Accéder à Concourse¶
L'interface web¶
Dans votre environnement d'administration, le service Concourse est situé à l'adresse suivante :
https://ci.ZONE_NAME.caascad.com
L'interface web est uniquement utilisée pour visualiser les équipes et les pipelines. Il est possible de lancer certaines actions depuis l'interface comme l'exécution d'un pipeline, cependant la grande partie de l'administration et de la configuration se fait via la CLI.
La CLI¶
La commande CLI de Concourse s'appelle fly
. Vous pouvez la télécharger depuis la page d'accueil du site Concourse.
Utilisez la commande login
pour vous connecter à Concourse. Vous devrez renseigner les paramètres suivants :
-t <target>
définissez un nom parlant pour votre configuration, que vous pourez voir comme un alias. Vous pouvez utiliser le nom que vous voulez. Dans nos exemples, nous utiliseronscaascad
.--team-name <team>
Concourse est déployé avec des équipes configurées. Vos équipes sont nommées après le nom de vos zones.--concourse-url <url>
l'url est celle de l'interface web
Exemple :
$ fly -t caascad login --team-name TEAM_NAME --concourse-url https://ci.ZONE_NAME.caascad.com
logging in to team 'TEAM_NAME'
navigate to the following URL in your browser:
https://ci.ZONE_NAME.caascad.com/login?fly_port=45743
or enter token manually:
Cliquez sur l'url dans la réponse de la commande puis connectez-vous via Keycloak en cliquant sur "Log In".
Vous pouvez désormais utiliser la commande fly
.
Vérifiez vos informations utilisateur à partir de la commande suivante :
$ fly -t caascad userinfo
username team/role
yourname TEAM_NAME/member
Introduction aux pipelines¶
Resources¶
Concourse utilise le terme ressource ("resources" en anglais) pour faire référence aux éléments d'entrée ou de sortie, externes aux pipelines. Exemple de ressources : un référentiel git, une image docker, un espace de stockage bucket S3...
Chaque ressource est qualifiée par un "type" et Concourse sait, par défaut, comment traiter les types de ressources basiques. Vous avez la possibilité d'ajouter des ressources externes et même de développer les vôtres.
Consultez la documentation officielle pour découvrir les types de ressources externes disponibles : Resource Types
Jobs¶
Un pipeline est composé d'un ou plusieurs jobs. La documentation définit les jobs comme suit :
Les jobs définissent les actions de vos pipelines. Ils déterminent la manière dont les ressources progressent dans le pipeline et de quelle manière ce dernier est visualisé.
Les jobs sont décrit à l'aide d'un plan. Le plan explique quelles ressources sont nécessaires et quoi faire avec ces ressources. Vous pouvez avoir un plan qui récupère un référentiel git (ressource d'entrée), créé le Dockerfile situé dans ce repo et enfin, pousse l'image dans un registre (ressource de sortie).
Dans un pipeline, tous les jobs sont indépendants. Vous pouvez lier vos pipelines en transmettant les ressources d'un job à l'autre.
Par exemple, un pipeline peut être composé des 3 jobs suivants :
- Test : récupère le référentiel, execute la suite de tests Go
- Build : récupère le référentiel, build le Dockerfile
- Deploy : récupère le référentiel, récupère le nom de l'image Docker, execute une commande helm avec le nom de la nouvelle image
Comme vous pouvez le voir, la ressource "référentiel" est utilisée dans chacun des 3 jobs. Si vous souhaitez déclencher les jobs séquentiellement, vous devez transmettre la ressource "référentiel" à travers les 3 jobs en utilisant la commande passed
(documentation).
Pipelines¶
Les pipelines déterminent les ressources et les jobs qui vont travailler ensemble. Les pipelines sont décrits en YAML et définis avec la commande fly set-pipeline
. Le pipeline appartient à une TEAM
.
Des variables peuvent être utilisées pour configurer des pipelines. Vos pipelines utilisent des variables en affectant le pattern suivant ((myvariable))
. Il n'existe pas de langage de templating dans Concourse, seulement des affectations de variables (comme votre fichier Kubernetes préféré).
Les variables peuvent être définies de deux manières :
- La variable est définie lors de l'exécution de la commande
set-pipeline
et l'affectation est effectuée par la commande fly. La valeur de cette variable sera visible par toute personne ayant un accès en lecture à l'API Concourse. - La variable n'est pas définie lorsque la commande
set-pipeline
est exécutée, la variable ne sera pas affectée par fly mais par Concourse lui-même juste avant que le pipeline soit exécuté par le worker. Il existe différents back-ends pour stocker ces secrets et nous avons choisi Vault pour Caascad.
Limites¶
Deux limites sont paramétrées dans l'instance Concourse :
Limite | Valeur |
---|---|
Capacité mémoire par défaut sur les tâches | 512mb |
Nombre limite de tâche active par worker | 13 |
La limite de la capacité mémoire par défaut peut être modifiée en utilisant la commande container_limits
. Si votre tâche dépasse la capacité mémoire, le process pourrait être détruit par le kernel.
La limite du nombre de tâches est définie par worker. Si cette limite est atteinte, la nouvelle tâche sera mise en attente, le temps qu'une tâche en cours soit terminée.