Configurer Jenkins sur Google Kubernetes Engine

Dans ce tutoriel, nous vous expliquons comment configurer Jenkins sur GKE pour vous aider à orchestrer votre pipeline de diffusion de logiciels.

Objectifs

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

Coûts

Ce tutoriel fait appel à des composants facturables de Google Cloud Platform, y compris :

  • Compute Engine
  • Google Kubernetes Engine
  • Cloud Build

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

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Sélectionnez ou créez un projet Google Cloud Platform.

    Accéder à la page "Gérer les ressources"

  3. Assurez-vous que la facturation est activée pour votre projet Google Cloud Platform.

    Découvrir comment activer la facturation

  4. Activez Compute Engine, GKE, and Cloud Buildles API requises.

    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 à la ligne de commande dans la console GCP, et intègre le SDK Cloud ainsi que d'autres outils dont vous pourrez avoir besoin pour le développement dans GCP. 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! For help, visit https://cloud.google.com/cloud-shell/help.
    
  2. Définissez la zone Compute Engine par défaut sur us-east1-d :

    gcloud config set compute/zone us-east1-d
    
  3. Clonez l'exemple de code ou téléchargez le fichier zip.

    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 .

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

    cd continuous-deployment-on-kubernetes
    

Créer un cluster Kubernetes

GKE vous permet de créer et de gérer votre cluster Kubernetes.

  1. Provisionnez un cluster Kubernetes à l'aide de GKE. Cette étape peut prendre plusieurs minutes.

    gcloud container clusters create jenkins-cd \
      --machine-type n1-standard-2 --num-nodes 2 \
      --scopes "https://www.googleapis.com/auth/projecthosting,cloud-platform"
    

    Les champs d'application supplémentaires permettent à Jenkins d'accéder à Cloud Source Repositories et à Container Registry.

  2. Vérifiez que votre cluster est en cours d'exécution.

    gcloud container clusters list
    

    Recherchez la mention RUNNING dans la colonne STATUS.

    NAME        LOCATION    MASTER_VERSION  MASTER_IP    MACHINE_TYPE   NODE_VERSION  NUM_NODES  STATUS
    jenkins-cd  us-east1-d  1.9.7-gke.3     35.231.8.57  n1-standard-2  1.9.7-gke.3   2          RUNNING
    
  3. Vérifiez que vous pouvez vous connecter à votre cluster.

    kubectl cluster-info
    

    Si vous parvenez à vous connecter au cluster, les URL des composants Kubernetes s'affichent.

    Kubernetes master is running at https://130.211.178.38
    GLBCDefaultBackend is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/default-http-backend
    Heapster is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/heapster
    KubeDNS is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/kube-dns
    kubernetes-dashboard is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
    

Installer Helm

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

  1. Téléchargez et installez le binaire Helm :

    wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
    
  2. Décompressez le fichier sur votre système local :

    tar zxfv helm-v2.9.1-linux-amd64.tar.gz
    cp linux-amd64/helm .
    
  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)
    
  4. Attribuez à Tiller, le côté serveur de Helm, le rôle cluster-admin dans votre cluster :

    kubectl create serviceaccount tiller --namespace kube-system
    kubectl create clusterrolebinding tiller-admin-binding --clusterrole=cluster-admin \
        --serviceaccount=kube-system:tiller
    
  5. Initialisez Helm. Cela garantit que Tiller est correctement installé dans votre cluster.

    ./helm init --service-account=tiller
    ./helm repo update
    
  6. Assurez-vous que Helm est correctement installé en exécutant la commande suivante :

    ./helm version
    

    Vous constaterez que la version affichée pour le client comme pour le serveur est v2.9.1 :

    Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
    

Installer Jenkins

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

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

    ./helm install -n cd stable/jenkins -f jenkins/values.yaml --version 0.16.6 --wait
    

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

  2. Une fois l'exécution de la commande terminée, vérifiez que le pod Jenkins passe à l'état Running et que le conteneur est à l'état READY :

    kubectl get pods
    

    Vous devez voir 1/1 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-7c786475dd-vbhg4   1/1       Running   0          1m
    
  3. Configurez un transfert de port vers l'UI de Jenkins à partir de Cloud Shell :

    export POD_NAME=$(kubectl get pods -l "component=cd-jenkins-master" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null &
    
  4. À présent, vérifiez que le service Jenkins a bien été créé :

    kubectl get svc
    

    Exemple de résultat :

    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.

Se connecter à Jenkins

  1. Récupérez le mot de passe administrateur créé automatiquement par le graphique Helm de Jenkins :

    printf $(kubectl get secret cd-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
    
  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

  3. Cliquez sur Se connecter dans l'angle supérieur droit de la fenêtre. Saisissez admin dans le champ Utilisateur, puis indiquez le mot de passe récupéré à l'étape précédente dans le champ Mot de passe.

  4. Cliquez sur le bouton Connexion.

Vous avez maintenant accès à Jenkins et à un cluster Kubernetes géré par GKE. Pour aller plus loin dans cette solution, vous pourriez utiliser ces composants dans votre pipeline de diffusion continue.

Effectuer un nettoyage

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'éviter la facturation consiste à supprimer le projet que vous avez créé pour le tutoriel.

Pour supprimer le projet :

  1. Dans la console GCP, accédez à la page "Projets".

    Accéder à la page Projets

  2. Dans la liste des projets, sélectionnez celui 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 les disques

  1. Dans la console GCP, accédez à la page "Disques".

    Accéder à la page Disques

  2. Cochez la case à côté du disquejenkins-home.
  3. Cliquez sur le bouton Supprimer en haut de la page pour supprimer le disque.

Supprimer les instances

Pour supprimer une instance Compute Engine, procédez comme suit :

  1. Dans la console GCP, accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cochez la case à côté de Il s'agit de l'instance que vous souhaitez supprimer.
  3. Cliquez sur le bouton Supprimer en haut de la page pour supprimer l'instance.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…