Configurer Jenkins sur Google Kubernetes Engine

Dans ce tutoriel, nous vous expliquons comment configurer Jenkins sur Google Kubernetes Engine (GKE) pour vous aider à orchestrer votre pipeline de livraison de logiciels.

Objectifs

  • Créer un cluster Kubernetes avec GKE
  • Installer Jenkins à l'aide de Helm
  • Se connecter à Jenkins

Coûts

Ce tutoriel utilise les composants facturables suivants de Google Cloud :

  • Google Kubernetes Engine

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Activer les API GKE.

    Activer les API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  7. Activer les API GKE.

    Activer les API

Préparer l'environnement

Commencez par préparer votre environnement de déploiement.

  1. Activez Cloud Shell. Cloud Shell vous donne accès à l'interface de ligne de commande dans Cloud Console, et intègre le SDK Cloud ainsi que d'autres outils dont vous pourrez avoir besoin pour le développement dans Google Cloud. Le provisionnement de Cloud Shell peut prendre quelques minutes.

    Activer Cloud Shell

    Une fois le processus terminé, vous obtenez le résultat suivant :

    Welcome to Cloud Shell! Type "help" to get started.
    
  2. Clonez l'exemple de code :

    git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git
    

    Le dépôt Git contient les fichiers manifestes Kubernetes qui vous permettront de déployer Jenkins. Ces fichiers manifestes et leurs paramètres sont décrits sur la page Configurer Jenkins pour Kubernetes Engine .

  3. Accédez au répertoire de l'exemple de code :

    cd continuous-deployment-on-kubernetes
    

Créer un cluster GKE

  1. Provisionner un cluster GKE Cette étape peut prendre plusieurs minutes.

    gcloud container clusters create jenkins-cd \
      --zone us-east1-d --scopes cloud-platform
    

    Le champ d'application cloud-platform permet à Jenkins d'accéder à Cloud Source Repositories et à Container Registry.

  2. Vérifiez que vous pouvez vous connecter à votre cluster.

    kubectl cluster-info
    

    Si vous parvenez à vous connecter au cluster, le résultat ressemble à ceci :

    Kubernetes control plane is running at https://35.196.84.95
    GLBCDefaultBackend is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy
    KubeDNS is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    Metrics-server is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
    
  3. Ajoutez-vous en tant qu'administrateur de cluster dans le RBAC du cluster, afin de pouvoir accorder des autorisations Jenkins au sein de ce cluster :

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin --user=$(gcloud config get-value account)
    

Installer Jenkins

Vous devez vous servir de Helm pour déployer Jenkins à partir du dépôt.

  1. Ajoutez le dépôt du chart Helm Jenkins :

    helm repo add jenkinsci https://charts.jenkins.io
    helm repo update
    

Vous allez utiliser un fichier de valeurs personnalisé pour configurer l'installation de Jenkins. Pour plus d'informations sur la configuration, consultez le fichier jenkins/values.yaml.

  1. À l'aide de la CLI Helm, déployez le chart avec votre ensemble de configuration :

    helm install cd-jenkins -f jenkins/values.yaml jenkinsci/jenkins --wait
    

    Pour en savoir plus sur la configuration de l'installation de Jenkins, reportez-vous à la page de documentation du chart Jenkins.

  2. Assurez-vous que le pod Jenkins passe à l'état Running et que le conteneur est à l'état READY :

    kubectl get pods
    

    Vous verrez s'afficher 2/2 dans la colonne READY et Running dans la colonne STATUS. Jenkins peut prendre quelques minutes pour s'initialiser.

    NAME           READY   STATUS    RESTARTS   AGE
    cd-jenkins-0   2/2     Running   0          6m30s
    
  3. Vérifiez que les services Kubernetes ont été correctement créés.

    kubectl get svc
    

    Le résultat se présente comme suit :

    NAME               CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
    cd-jenkins         10.35.249.67   <none>        8080/TCP    3h
    cd-jenkins-agent   10.35.248.1    <none>        50000/TCP   3h
    kubernetes         10.35.240.1    <none>        443/TCP     9h
    

L'installation de Jenkins nécessite l'utilisation du plug-in Kubernetes pour que des agents de compilation soient créés. En cas de besoin, ceux-ci seront automatiquement lancés lorsque le maître Jenkins devra effectuer une compilation. Une fois leur travail terminé, ils sont automatiquement arrêtés et leurs ressources sont ajoutées au pool de ressources du cluster.

Connexion à Jenkins

  1. Configurez un transfert de port vers l'UI de Jenkins à partir de Cloud Shell :

    export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=jenkins-master" -l "app.kubernetes.io/instance=cd-jenkins" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null 2>&1 &
    
  2. Pour ouvrir l'UI de Jenkins, cliquez sur Aperçus sur le Web dans Cloud Shell, puis sur Preview on port 8080 (Prévisualiser sur le port 8080).

    port8080

Vous avez maintenant accès à Jenkins et à GKE. Pour aller plus loin, vous pouvez utiliser ces composants dans votre pipeline de livraison continue.

Nettoyer

Une fois le tutoriel terminé, nettoyez les ressources créées sur GCP pour éviter qu'elles ne vous soient facturées par la suite.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

Pour supprimer le projet :

  1. Dans Cloud Console, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer le cluster GKE

  1. Supprimez le cluster GKE :
    gcloud container clusters delete jenkins-cd --zone us-east1-d
    

Étape suivante