Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Déployer vers OCI Container Engine for Kubernetes à partir de l'intégration et du déploiement continus GitLab
Introduction
Dans le paysage en évolution rapide du développement DevOps et cloud natif, la nécessité d'une intégration rationalisée entre les systèmes de contrôle de version et les plates-formes d'orchestration de conteneurs peut être cruciale. Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) offre une solution robuste et évolutive pour la gestion d'applications en conteneur. Cependant, certaines équipes peuvent avoir des préférences et des exigences spécifiques qui les amènent à rechercher des alternatives aux services DevOps natifs d'Oracle Cloud Infrastructure (OCI).
GitLab est une plate-forme de contrôle de version complète et polyvalente, d'intégration continue et de déploiement continu qui répond non seulement à ces préférences, mais fournit également une alternative convaincante aux services OCI DevOps. Dans ce tutoriel, nous vous guiderons tout au long du processus de connexion transparente de GitLab à Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). L'intégration présentée dans ce tutoriel s'aligne non seulement pour utiliser une solution GitLab existante que vous pourriez avoir en place, mais donne également à l'équipe une solution unifiée pour le contrôle des versions, l'intégration continue et l'orchestration Kubernetes.
Dans les sections suivantes, ce tutoriel présente deux approches distinctes visant à effectuer cette intégration.
-
Approche 1 : utilisation d'un jeton de courte durée généré à partir de l'interface de ligne de commande Oracle Cloud Infrastructure (interface de ligne de commande OCI). Lorsque vous configurez le fichier
kubeconfig
pour un cluster à l'aide des instructions d'accès au cluster OKE, il contient par défaut une commande d'interface de ligne de commande OCI permettant de générer un jeton d'authentification de courte durée, de portée cluster et propre à l'utilisateur. Le jeton d'authentification généré par la commande d'interface de ligne de commande permet d'authentifier les utilisateurs individuels qui accèdent au cluster à l'aide de l'outil de ligne de commande Kubernetes (kubectl) et du tableau de bord Kubernetes. Toutefois, il est recommandé de limiter cette approche à des fins de test et non d'environnement de production. -
Approche 2 : utilisation d'un compte de service Kubernetes. Le jeton d'authentification généré de courte durée de l'approche 1 n'est pas approprié pour authentifier les processus et les outils accédant au cluster, tels que les outils d'intégration continue et de déploiement continu. Pour garantir leur accès au cluster, ces outils nécessitent des jetons d'authentification à long terme qui ne sont pas propres à l'utilisateur. Cela peut être réalisé à l'aide d'un compte de service Kubernetes.
Objectifs
-
Configurez GitLab Runner.
-
Configurez le pipeline CI/CD.
Prérequis
-
Compte OCI actif.
-
Cluster OKE en cours d'exécution avec une adresse publique. Pour plus d'informations, reportez-vous à Présentation de Container Engine for Kubernetes.
-
Compte GitLab avec des privilèges suffisants.
Approche 1 : déploiement vers OKE à partir de l'intégration continue et du déploiement continu GitLab à l'aide d'un jeton généré de courte durée
Tâche 1 : préparer l'instance de calcul OCI
Vous aurez besoin d'une instance OCI Compute pour l'exécuteur GitLab, par exemple une machine virtuelle.
-
Installez kubectl sur la machine virtuelle. Pour plus d'informations, reportez-vous à Installation et configuration de kubectl sous Linux.
-
Installez l'interface de ligne de commande OCI et créez le fichier de configuration pour l'authentification à la location OCI (ou vous serez invité à le créer lors de l'exécution des étapes d'accès au cluster). Pour plus d'informations, reportez-vous à Installation de l'interface de ligne de commande OCI et à Fichier de configuration du kit SDK et de l'interface de ligne de commande.
-
Configurer l'accès au cluster OKE. Accédez à Accès au cluster et cliquez sur les instructions d'accès local à partir de la console OCI.
-
Installez GitLab Runner sur la machine virtuelle. Exécutez les commandes suivantes en tant qu'utilisateur root.
sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash sudo yum install -y gitlab-runner
Vérifiez que GitLab Runner fonctionne.
gitlab-runner list
Tâche 2 : configurer le programme d'exécution et le projet GitLab
-
Connectez-vous à GitLab, accédez à Projets et créez un projet ou utilisez un projet existant.
-
Créez un programme d'exécution ou utilisez-en un existant. Pour créer un programme d'exécution, accédez à Paramètres, CI/CD, Exécuteurs et Développer. Cliquez sur Nouveau programme d'exécution de projet et sélectionnez Plate-forme (par exemple : Linux), ajoutez une balise que nous utiliserons plus tard dans le fichier
.gitlab-ci.yaml
lors de la configuration du pipeline de déploiement, puis cliquez sur Créer un programme d'exécution. -
Enregistrez le programme d'exécution avec la machine virtuelle.
Remarque : notez le jeton d'authentification du processus d'exécution au cas où vous en auriez besoin ultérieurement.
-
Exécutez la commande
gitlab-runner register
et entrez les informations suivantes.- URL d'instance GitLab : acceptez la valeur par défaut
https://gitlab.com
. - Nom du programme d'exécution : valide localement dans le fichier
config.toml
. Par exemple :gitlab-oke-runner
. - Entrer un exécuteur : shell, avec cette valeur, vous choisissez que les instructions d'intégration continue et de déploiement continu soient exécutées sur l'ordinateur local sur lequel kubectl et l'interface de ligne de commande OCI sont installés.
- URL d'instance GitLab : acceptez la valeur par défaut
-
Vous pouvez consulter la configuration du programme d'exécution dans le fichier
$HOME/.gitlab-runner/config.toml
.
-
Tâche 3 : configurer le pipeline d'intégration continue et de déploiement continu
-
Clonez le projet GitLab sur votre ordinateur local.
-
Créez un fichier nommé
.gitlab-ci.yaml
dans le répertoire du projet, contenant les instructions de build et de déploiement. Dans la section de déploiement, veillez à inclure la balise de programme d'exécution que vous avez définie lors de la création du programme d'exécution avant.$ cat ~/demo-oke/.gitlab-ci.yml stages: - build - deploy build_job: stage: build script: - echo "Building the ServiceAccount project..." deploy_job: stage: deploy script: - echo "Deploying an nginx pod to the OKE cluster" - kubectl run nginx --image=nginx tags: - shell-executor
-
Transmettez les modifications à votre projet GitLab et accédez à Création et à Travaux pour vérifier que les pipelines de build et de déploiement sont déclenchés et exécutés avec succès.
Le pipeline a déployé un pod nginx dans le cluster OKE.
Remarques : notez la balise et la clé. Nous choisirons l'exécuteur shell qui utilisera les ressources de machine locales. Sinon, si vous choisissez Docker par exemple, vous devez fournir dans vos instructions une image qui installe kubectl (et l'interface de ligne de commande OCI pour l'approche 1) dans le conteneur.
$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 47h
Approche 2 : déploiement vers OKE à partir de l'intégration continue et du déploiement continu GitLab à l'aide d'un compte de service Kubernetes
Répétez les tâches 1, 2 et 3 de l'approche 1 pour configurer la machine virtuelle locale (installation de kubectl, interface de ligne de commande OCI, programme d'exécution GitLab), inscrire le programme d'exécution, créer le fichier de pipeline .gitlab-ci.yaml
.
Tâche 1 : créer un compte de service Kubernetes et ajouter son jeton
-
Créez un compte de service Kubernetes et ajoutez son jeton au fichier
kubeconfig
. Pour plus d'informations, reportez-vous à Adding a Service Account Authentication Token to a Kubeconfig File.Remarque : assurez-vous que le compte de service est utilisé, et non le jeton de courte durée de l'interface de ligne de commande OCI.
-
Définissez l'utilisateur indiqué dans le fichier
kubeconfig
pour que le contexte en cours soit le nouvel utilisateur de compte de service que vous avez créé à l'aide des commandes kubectl suivantes.kubectl config set-context --current --user=<service-account-name>
Exemple :
kubectl config set-context --current --user=kubeconfig-sa
Lorsque vous utilisez un compte de service Kubernetes pour effectuer un déploiement vers OKE à partir de GitLab, le processus implique l'authentification de GitLab avec le cluster Kubernetes à l'aide des informations d'identification de compte de service.
Etapes suivantes
A l'aide de ces tâches, vous pouvez utiliser votre pipeline d'intégration continue et de déploiement continu GitLab pour effectuer un déploiement vers OKE. Ces tâches peuvent servir de référence pour d'autres outils d'intégration continue et de déploiement continu. L'intégration facilite l'intégration et la livraison continues, ce qui permet une itération et un déploiement rapides des applications vers OKE.
Dans ce tutoriel, les instructions utilisent un exécuteur shell pour tester et gérer des scénarios simples. Vous pouvez également opter pour un autre exécuteur, par exemple un exécuteur Docker. Dans ce cas, le pipeline est exécuté dans un conteneur Docker plutôt que sur l'ordinateur local. L'exécution avec un exécuteur Docker nécessite que vous indiquiez une image Docker qui inclut les utilitaires requis. Par conséquent, il peut être essentiel de créer une image personnalisée, en intégrant des outils tels que kubectl et l'interface de ligne de commande OCI pour répondre à des exigences de pipeline spécifiques.
Liens connexes
-
Présentation d'Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)
-
Ajout d'un jeton d'authentification de compte de service à un fichier Kubeconfig
Accusés de réception
- Auteurs - Adina Nicolescu (Ingénieur Cloud senior), Guido Alejandro Ferreyra (Architecte Cloud principal)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Deploy to OCI Container Engine for Kubernetes from GitLab CI/CD
F92404-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.