Déployer votre image de container sur OpenShift avec GitLab CI/CD

Ce matin vous avez créé votre image de container, il est maintenant temps de la déployer sur votre cluster OpenShift !

Déployer directement l’image sur OpenShift [Challenge 2.1] Beginner

Utilisez la perspective "Developer" de votre console OpenShift pour déployer votre image. Vous pouvez utiliser le projet "default" pour cette étape. Ajouter également la variable d’environnement PING avec la valeur DIOD. Profitez en pour vous familiariser avec les objets OpenShift (POD, Deployment, Service, Route …​).

Preuves à fournir

  • [Challenge 2.1.1] L’URL de la route de votre application

  • [Challenge 2.1.2] Screenshot montrant que vous avez réussi à scaler l’application à 2 Pods

  • [Challenge 2.1.3] Screenshot de la page /rest/ping avec la valeur DIOD

Déployer l’application sur OpenShift avec GitLab CI/CD [Challenge 2.2] Advanced

Pour ce challenge, créer le projet "diod" sur votre cluster OpenShift.

Avant de pouvoir utiliser GitLab avec OpenShift il faut que vous installiez un "GitLab runner" sur OpenShift. Le runner est fourni par l’intermédiaire d’un Operator. Il va falloir que vous exploriez votre cluster pour trouver comment l’installer.

Il y a 2 versions différentes de l’opérateur (1 certifiée Red Hat et 1 version communautaire). Nous avons rencontré un problème avec l’opérateur certifié (en cours de résolution côté Red Hat) et il faut donc installer l’opérateur "Communautaire".

N’oubliez pas de créer un secret pour le runner avant de le déployer. Pour faire cela vous devrez récupérer le token dans la partie Settings > CI/CD > Runners de votre projet GitLab. Pour créer le secret, utilisez le manifest suivant (celui de la documentation étant mal formaté) :

apiVersion: v1
kind: Secret
metadata:
    name: gitlab-runner-secret
type: Opaque
stringData:
    runner-registration-token: LE_TOKEN_GITLAB

Le runner devra être déployé dans le namespace "diod".

Une fois installé le GitLab runner, vous allez devoir créer un pipeline (.gitlab-ci.yml) pour builder l’application et le pousser vers OpenShift (qui va s’occuper de containeriser l’application et faire un déploiement 'rolling'). Il y a un .gitlab-ci.yml déjà présent dans le repo pour vous mettre en route, mais n’hésitez pas de le modifier. Les jobs auront besoin des droits corrects pour pouvoir manipuler votre projet OpenShift. Voici un exemple de comment configurer le RBAC si votre runner tourne dans le même projet (diod) que l’application:

oc policy add-role-to-user edit system:serviceaccount:diod:default -n diod clusterrole.rbac.authorization.k8s.io/edit added: "system:serviceaccount:diod:default"

Preuves à fournir

  • [Challenge 2.2.1] Screenshot de l’Operator installé

  • [Challenge 2.2.2] Screenshot de GitLab CI/CD qui montre le Runner qui tourne sur OpenShift s’est connecté à GitLab

  • [Challenge 2.2.3] L’URL de votre repo GitLab qui contient le pipeline (qui a bien évidemment réussi)

  • [Challenge 2.2.4] Screenshot des ressources k8s générées

Bonus

Si vous avez encore du temps, n’hésitez pas d’améliorer le pipeline avec des tests/scan/optimizations/etc. Le meilleur .gitlab-ci.yml gagnera quelques points bonus :)

Preuves à fournir

  • [Challenge 2.3.0] Encore une fois l’URL de votre repo GitLab qui contient le pipeline et une petite explication de ce que vous avez ajouté