Sélectionner une page

Formation > Blog > DevOps > Automatiser Les BuildConfigs et imageStreams dans openshift

Openshift est une plateforme de conteneur prenant en charge l’objet BuildConfig. Cette commande peut être utilisée pour transformer les paramètres d’entrée ou le code source en une image exécutable. Dans cet article, nous allons voir comment, automatiser les buildconfigs et imagestreams d’un environnement OpenShift afin de déployer une application.

L’équipe Ambient IT

Comprendre Buildconfigs

Un buildConfig est un objet RES dans OpenShift, ils sont utilisés pour définir des processus de construction unique ainsi que des déclencheurs. Pour créer de nouvelles constructions. Les constructions comprennent généralement une stratégie qui détermine le processus et des sources afin de fournir les données d’entrées nécessaires.

Il existe plusieurs stratégies de construction, les plus connues étant les Source-to-Image (S2I), Docker, Pipeline et Custom. Le choix de la stratégie est crucial pour déterminer comment le processus de construction est exécuté.

De nombreuses sources sont accessibles aux environnements OpenShift comme Git, Dockerfile, Binary, Image, Input secrets ou External artifacts. Les sources d’un buildconfig sont la source principale d’entrée pour le processus de construction.

Enfin, les buildconfigs disposent d’autres éléments pour leur bon fonctionnement, comme les déclencheurs, et la runPolicy.

Un buildconfig peut être généré automatiquement via la console web ou le CLI d’OpenShift au moment de la création d’application, il est ajustable et personnalisable manuellement. C’est un objet extrêmement polyvalent qui définit comment une application est construite à partir de ses sources.

Utiliser ImageStreams

Les balises imageStreams sont des pointeurs nommés vers une image dans un flux d’images. Ils servent à référencer ou à récupérer des images.

Les balises Imagestreams peuvent être permanentes et pointer vers une version spécifique de l’image, ou suivre une autre balise et être mises à jour pour modifier l’image référencée. Elles conservent également un historique des images, ce qui leur permet de revenir facilement aux versions précédentes.

Avec les bons déclencheurs, les ImageStreams permettent des constructions et des déploiements automatisés lorsqu’une nouvelle image est ajoutée au registre.

Leur rôle est également de fournir un contrôle d’accès garantissant la stabilité et la sécurité du déploiement des applications.

Les ImageStreams sont donc des mécanismes robustes et flexibles pour la gestion des images dans vos conteneurs applicatifs. Ils supportent l’intégration continue et les flux de travail de déploiement et garantissent que les applications utilisent des versions spécifiques et connues des images. Ils permettent aussi de faciliter les mises à jour et les retours en arrière en cas de besoin.

Automatiser une BuildConfig

Il existe plusieurs manières d’automatiser un buildconfig dans Openshift, dans cet article, nous allons nous concentrer sur l’une de ses manières.

kind: BuildConfig
apiVersion: build.openshift.io/v1
metadata:
  name: "example-build"
spec:
  runPolicy: "Serial"
  triggers:
    - type: "GitHub"
      github:
        secret: "secret101"
    - type: "Generic"
      generic:
        secret: "secret101"
    - type: "ImageChange"
  source:
    git:
      uri: "https://github.com/your-repository/project.git"
  strategy:
    sourceStrategy:
      from:
        kind: "ImageStreamTag"
        name: "ruby-20-centos7:latest"
  output:
    to:
      kind: "ImageStreamTag"
      name: "your-image-stream:latest"
  postCommit:
    script: "bundle exec rake test"

Cette BuildConfigs automatise le processus de construction en définissant de nombreux composants :

  • Run policy : la définir sur serial indique que les builds déclenchés par cette configuration s’exécuteront l’un après l’autre, et non pas simultanément.
  • Déclencheurs : c’est le cœur de l’automatisation, il y a 3 déclencheurs dans cette Buildconfig :
    • GitHub : permets une nouvelle compilation lorsqu’une modification est poussée vers le dépôt GitHub spécifié.
    • Générique : permets au build d’être déclenché par des webhooks génériques.
    • ImageChange : déclenche une compilation lorsque l’image spécifiée change, utile pour les dépendances qui sont mises à jour.
  • La source spécifie le dépôt Git.
  • La stratégie est ici définie sur Source-to-Image (S2I) avec une image Ruby spécifiée. Cette stratégie permet de construire des images de conteneurs reproductibles à partir du code source.

Pour l’expliquer simplement, cette Buildconfig automatise le processus de construction en déclenchant de nouvelles constructions en fonction des modifications apportées au code source, aux webhooks ou aux images dépendantes.

Automatiser les imagestreams avec des triggers

Lorsqu’une balise imageStreams est mise à jour pour pointer vers une nouvelle image, il est possible de configurer OpenShift pour automatiser des mesures de déploiement de cette nouvelle image vers les ressources qui utilisaient l’ancienne image.

Pour configurer les déclencheurs de ressources OpenShift lorsqu’une balise imageStreams est mise à jour, vous pouvez utiliser les annotations dans OpenShift Container Platform ou la commande oc set triggers, en fonction du type de ressource.

Annotations

La première méthode que vous pouvez utiliser est les annotations. Cette méthode est applicable aux ressources Kubernetes qui n’ont pas de trigger intégrée de base.

image.openshift.io/triggers: |
  [
    {
      "from": {
        "kind": "ImageStreamTag",
        "name": "example:latest",
        "namespace": "myapp"
      },
      "fieldPath": "spec.template.spec.containers[?(@.name=='web')].image",
      "paused": "false"
    },
    ...
  ]

Dans cette annotation, le Kind doit toujours être ImageStreamTag, le name correspond à la balise imageStreams, le namespace est facultatif (il sert surtout pour vous afin de vous y retrouver). fieldPath spécifie le chemin JSON à mettre à jour avec la nouvelle image.

Commande oc set triggers

Pour l’automatisation de déploiements Openshift, la commande oc set triggers est particulièrement efficace. Elle permet de donner un déclencheur de changement d’image à un déploiement.

oc set triggers deploy/example --from-image=example:latest -c web

Cette commande permet de mettre automatiquement à jour le modèle de pod du déploiement avec la nouvelle valeur de l’image. Cela provoque un déploiement si le pod n’est pas en pause.

Conclusion

Il existe de nombreuses autres méthodes pour automatiser vos Buildconfig et vos imageStreams dans Openshift et même si ces méthodes marchent, nous vous encourageons à trouver les vôtres qui seront adaptées aux spécificités de votre organisation et environnement applicatif. Openshift est un outil complexe qui vous laissera toute la place pour expérimenter.

UNE QUESTION ? UN PROJET ? UN AUDIT DE CODE / D'INFRASTRUCTURE ?

Pour vos besoins d’expertise que vous ne trouvez nulle part ailleurs, n’hésitez pas à nous contacter.

ILS SE SONT FORMÉS CHEZ NOUS

partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp
partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp