Remarque :

Créer des pipelines OCI DevOps pour créer et déployer les microservices Golang

Introduction

Cela fait partie de quatre séries de tutoriels en six parties qui vous montrent comment déployer un ensemble temporaire de ressources sur un cluster OKE à l'aide de microservices Golang représentant l'utilisation du kit SDK OCI, OCI-CLI, Resource Manager, OCI Devops et Helm pour déployer et détruire Apache Airflow.

Objectif

Dans ce tutoriel, vous apprendrez à créer des pipelines OCI DevOps pour la création et le déploiement.

Prérequis

Tâche 1 : Explorer le code de connexion

Remarque
Le code a déjà été téléchargé dans votre référentiel OCI nommé go-login lors des étapes précédentes de cet exercice.

T1_1

Tâche 2 : Explorer le code des microservices go

Remarque
Le code a déjà été téléchargé dans votre référentiel OCI appelé go-microservice lors des étapes précédentes de cet atelier.

T2_1

Tâche 3 : création des artefacts DevOps pour la connexion Go et le microservice Go

Avant de créer le pipeline de build DevOps, nous devons créer les artefacts qui se connecteront aux résultats de build (package Helm et image de conteneur).

  1. Accédez au registre OCI que vous avez créé pour ce tutoriel.

    T3_1

  2. Cliquez sur les artefacts sous le projet DevOps, puis sur Ajouter un artefact et saisissez Référentiel d'images de conteneur.

    T3_2

    Remarque importante concernant l'URL de registre :

    T3_2

    • Il s'agit de la base du registre pour la région sa-saopaulo-1.

    • Vérifiez le code de votre région, qui sera différent si vous n'utilisez pas "sa-saopaulo-1". Pour plus d'informations, reportez-vous à Régions et domaines de disponibilité.

    T3_2

  3. Répétez l'étape 2 et ajoutez l'artefact go-microservice.

    T3_2

  4. Créez un nouvel artefact général pour stocker les valeurs Helm pour go-login en collant le contenu du fichier values.yaml à partir du référentiel de code.

    T3_4

  5. Créez un nouvel artefact général pour stocker les valeurs Helm pour go-microservice en collant le contenu du fichier values.yaml à partir du référentiel de code.

    T3_5

  6. Créez un artefact de type de graphique Helm pour la connexion Go. Vous devez définir l'espace de noms et le code région corrects sur l'URL du graphique.

    T3_6

  7. Créez un artefact de type de graphique Helm pour le microservice Go. Vous devez définir l'espace de noms et le code région corrects sur l'URL du graphique.

    T3_7

A ce stade, vous devez disposer des artefacts suivants dans votre projet DevOps.

T3_7

Tâche 4 : création du pipeline de build Devops pour la connexion directe

  1. Accédez à la page de la console pour votre projet DevOps et sélectionnez le projet DevOps que vous avez créé.

  2. Sélectionnez Pipelines de build, puis cliquez sur Créer un pipeline de build, entrez le nom et la description, puis cliquez sur Créer.

    T4_2

  3. Cliquez sur Ajouter une étape, puis sélectionnez Build géré.

    T4_2

    T4_2

  4. Sur Référentiel de code principal, sélectionnez votre référentiel OCI pour passer à la connexion.

    T4_4

    • Confirmez votre référentiel, sélectionnez-le, puis cliquez sur Ajouter.
  5. Ajoutez une nouvelle étape sur le pipeline de build pour publier l'artefact dans le registre. Sélectionnez l'option Fournir des artefacts, puis l'artefact go-login-image créé au cours des étapes précédentes.

    T4_5

    T4_5

Votre pipeline doit ressembler à ceci.

T4_5

Tâche 5 : création du pipeline de build DevOps pour le microservice Go

  1. Accédez à la page de la console pour votre projet DevOps et sélectionnez le projet DevOps que vous avez créé.

  2. Sélectionnez Pipelines de build, cliquez sur Créer un pipeline de build, entrez le nom et la description, puis cliquez sur Créer.

    T4_2

  3. Cliquez sur Ajouter une étape, puis sélectionnez Build géré.

    T4_2

    T4_2

  4. Dans Référentiel de code principal, sélectionnez le référentiel OCI pour go-microservice.

    T4_4

    • Confirmez votre référentiel, sélectionnez-le, puis cliquez sur Ajouter.
  5. Ajoutez une nouvelle étape sur le pipeline de build pour publier l'artefact dans le registre. Sélectionnez l'option Fournir des artefacts, puis l'artefact go-microservice-image créé au cours des étapes précédentes.

    T4_5

    T4_5

Votre pipeline doit ressembler à ceci.

T4_5

Tâche 6 : Créer le pipeline {build_spec.yaml} - Connexion directe

Le fichier build_spec est un fichier yaml qui décrit les étapes à effectuer lors de l'exécution du pipeline de build. Il est exécuté sur un programme d'exécution de build cloud et prend en charge la plupart des langages populaires dans les applications cloud natives. Le fichier se trouve à la racine de votre code de référentiel go-login sur OCI. Ce fichier utilise certaines variables du VAULT et nous devons les remplacer par nos Ocides Vault de tutoriel.

Pour plus d'informations sur les spécifications de build, reportez-vous à la section Build Specification.

Les deux variables suivantes doivent être définies.

  1. Accédez à vos clés secrètes de coffre et obtenez l'OCID de chaque clé secrète.

    T6_1

  2. Accédez à vos référentiels de projet et obtenez ssh url pour la connexion Go.

    T6_2

    • Mettez à jour votre fichier build_spec.yaml et remplacez les valeurs par les clés secrètes OCID copiées, puis validez les modifications apportées au code.

      T6_2

  3. Accédez à la console shell de votre bastion jump-box.

    cd $HOME
    # If you still have the old go-login.git and go-microservices.git directory, delete it!
    rm -rf go-login.git
    rm -rf go-microservice.git
    git clone <your ssh url for the repo>
    cd go-login/
    vi build_spec.yaml
    #perform the needed changes for your ocid variables and save the file.
    git add .
    git commit -m "fixed ocid variables"
    git push
    

    T6_3

    T6_3

  4. Accédez au pipeline de build go-login sous votre projet DevOps, sélectionnez l'onglet Paramètres et ajoutez les nouveaux paramètres suivants.

    • HELM_REPO : base de votre registre OCI xxx.ocir.io.
    • HELM_REPO_URL : URL du registre OCI pour le graphique Helm associé.
    • APP_HOST : l'hôte sera utilisé pour accéder à votre application sur le contrôleur entrant.
    • IMAGE_URL : URL d'image OCI Registry sans balise.

    T6_4

  5. Cliquez sur l'onglet Construire le pipeline, puis sur Démarrer l'exécution manuelle.

    T6_5

    T6_5

    • Comme nous pouvons le voir, le build a été terminé avec la propagation d'image vers OCI Registry.

      T6_5

  6. Accédez à OCI Container Registry et vérifiez s'il existe une image.

    T6_5

Tâche 7 : configurer les informations d'identification OCI pour le microservice Go

Les microservices mobiles interagissent avec OCI à l'aide du SDK. Pour ce faire, nous devons configurer les informations d'identification correctes. Nous utiliserons les informations similaires que nous avons utilisées pour configurer l'interface de ligne de commande OCI lors de la configuration du bastion à partir des étapes précédentes de ce tutoriel.

Toutes les informations d'identification requises seront stockées sur la configmap OKE et injectées sur les variables d'environnement à l'intérieur du conteneur en cours d'exécution.

T7_0

  1. Accédez à vos référentiels OCI et obtenez ssh url pour votre référentiel go-microservice.

    T7_1

  2. Accédez à la page de console de votre cluster OKE, copiez l'ocid du cluster et remplacez-le à l'étape suivante dans la commande de la variable d'environnement ENV_CLUSTER_ID.

    T7_2

  3. Ouvrez votre terminal shell Jump-box bastion. Assurez-vous que votre clé SSH est créée à l'adresse suivante : ~/.oci/oci_api_key.pem. A l'exception de la variable ENV_CLUSTER_ID, toutes les autres variables se trouvent dans le fichier ~/.oci/config sous l'hôte de bastion que vous avez précédemment configuré l'interface de ligne de commande OCI.

    cat ~/.oci/config
    

    T7_2

  4. La liste de commandes shell ci-dessous crée un fichier configmap/values.yaml avec toutes les variables nécessaires à injecter sur le conteneur en cours d'exécution, puis le propage vers votre référentiel de code sur OCI. Avant d'exécuter les commandes sur votre terminal hôte de bastion, remplacez les valeurs "PASTE VOTRE..." ci-dessous.

    cd $HOME
    rm -rf go-microservice/
    git clone <PAST YOUR ssh url>
    cd go-microservice/chart-go-microservice/configmap/
    rm values.yaml
    pem=$(cat ~/.oci/oci_api_key.pem|base64 -w 0)
    echo 'ENV_PEM: "'$pem'"' > values.yaml
    echo 'ENV_TENANCY_OCID: "PASTE YOUR TENANCY OCID"' >> values.yaml
    echo 'ENV_USER_OCID: "PASTE YOUR USER OCID"' >> values.yaml
    echo 'ENV_REGION: "PASTE YOUR REGION NAME"' >> values.yaml
    echo 'ENV_FINGERPRINT: "PASTE YOUR FINGERPRINT"' >> values.yaml
    echo 'ENV_CLUSTER_ID: "PASTER YOUR CLUSTER OCID"' >> values.yaml
    cd $HOME/go-microservice
    git add .
    git commit -m "added correct values on configmap"
    git push
    

    T7_3

    T7_3

Le microservice Go peut désormais communiquer avec OCI à l'aide du kit SDK.

Tâche 8 : Créer le pipeline {build_spec.yaml} - microservices Go

Le fichier build_spec est un fichier yaml qui décrit les étapes à effectuer lors de l'exécution du pipeline de build. Il est exécuté sur un programme d'exécution de build cloud et prend en charge la plupart des langages populaires dans les applications cloud natives. Le fichier se trouve à la racine de votre code de référentiel go-microservice sur OCI. Ce fichier utilise certaines variables du VAULT et nous devons les remplacer par nos Ocides Vault de tutoriel.

Pour plus d'informations sur les spécifications de build, reportez-vous à la section Build Specification.

Les deux variables suivantes doivent être définies.

  1. Accédez à vos clés secrètes de coffre et obtenez l'OCID de chaque clé secrète.

    T6_1

  2. Accédez aux référentiels de projet et obtenez l'URL SSH pour la connexion Go.

    T6_2

    • Vous devez mettre à jour votre fichier build_spec.yaml et remplacer les valeurs par les clés secrètes OCID copiées, puis valider les modifications apportées au code.

    T6_2

  3. Accédez à la console shell de votre bastion jump-box.

    cd $HOME
    # If you still have the old go-login.git and go-microservices.git directory, delete it!
    rm -rf go-login.git
    rm -rf go-microservice.git
    git clone <your ssh url for the repo>
    cd go-microservice/
    vi build_spec.yaml
    #perform the needed changes for your ocid variables and save the file.
    git add .
    git commit -m "fixed ocid variables"
    git push
    

    T8_3

    T8_3

  4. Accédez à votre pipeline de build go-microservice sous votre projet Devops, sélectionnez l'onglet "Paramètres" et ajoutez de nouveaux paramètres.

    • HELM_REPO : base de votre registre OCI xxx.ocir.io.
    • HELM_REPO_URL : URL du registre OCI pour le graphique Helm associé.
    • APP_HOST : l'hôte sera utilisé pour accéder à votre application sur le contrôleur entrant.
    • IMAGE_URL : URL d'image OCI Registry sans balise.

    T6_4

  5. Cliquez sur l'onglet Construire le pipeline, puis sur Démarrer l'exécution manuelle.

    T8_5

    T8_5

    • Comme nous pouvons le voir, le build a été terminé avec la propagation d'image vers OCI Registry.

      T8_5

  6. Accédez à OCI Container Registry et vérifiez s'il existe une image.

    T8_5

Tâche 9 : préparez votre OKE pour recevoir les déploiements

Dans ce tutoriel, nous allons créer manuellement les espaces de noms OKE pour go-login et go-microservices. Nous devons également configurer les informations d'identification OCI Container Registry dans chacun des espaces de noms à l'aide de clés secrètes. Cette opération est obligatoire, sinon le déploiement ne pourra pas extraire l'image de conteneur du registre.

  1. Obtenez le texte brut TOKEN et le nom utilisateur à partir du registre OCI que vous avez stocké sur le coffre-fort.

    T9_1

  2. Ouvrez la console shell de votre bastion jump-box et exécutez la commande suivante.

    Remarque : assurez-vous de remplacer les variables des commandes ci-dessous avec les informations d'identification obtenues à l'étape précédente et de vérifier le serveur d'accueil correct en fonction de votre région gru.ocir.io.

     cd $HOME
     kubectl get ns
     kubectl create ns go-login
     kubectl create ns go-microservices
     kubectl create secret docker-registry docker-registry --docker-server=gru.ocir.io --docker-username='your_user_name' --docker-password='your_token' --docker-email='user-email' -n go-login
     kubectl create secret docker-registry docker-registry --docker-server=gru.ocir.io --docker-username='your_user_name' --docker-password='your_token' --docker-email='user-email' -n go-microservices
    
    
    • Maintenant, déployons le contrôleur entrant pour pouvoir accéder aux microservices sur Internet. Nous utilisons l'image entrante officielle sur la version v1.4.0.

       kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml
       kubectl scale --replicas=4 deployment ingress-nginx-controller -n ingress-nginx
      
      

      T9_2

      T9_2

    • Maintenant, vérifions si les services entrants sont bons, cela devrait ressembler à ceci.

      kubectl get svc -n ingress-nginx
      

      T9_2

    • Après avoir créé l'inbound-nginx, un équilibreur de charge est automatiquement créé sur OCI. Mettez à jour la forme de l'équilibreur de charge vers une forme moins chère et évitez ainsi les coûts supplémentaires.

  3. Accédez à votre console, sélectionnez Equilibreurs de charge sous Fonctions de réseau, puis sélectionnez l'équilibreur de charge que vous venez de créer.

    T9_3

  4. Cliquez pour mettre à jour SHAPE et cochez la case Utiliser un équilibreur de charge flexible.

    T9_4

Tâche 10 : création d'un environnement OCI DevOps

Pour pouvoir déployer vos applications, nous devons créer l'environnement.

  1. Sélectionnez votre projet DevOps, cliquez sur Environnements, puis sur Créer un environnement.

    T10_1

    T10_1

Tâche 11 : déploiement de la connexion directe à OCI DevOps à l'aide de graphiques Helm

  1. Accédez à votre projet Devops, cliquez sur Pipelines de déploiement et créez un pipeline pour go-login.

    T11_1

  2. Cliquez pour ajouter une nouvelle phase à déployer, sélectionnez "Installer les graphiques Helm vers le cluster Kubernetes", sélectionnez l'artefact d'aide et l'artefact de valeurs pour go-login. Veillez à renseigner le nom de l'espace de noms en tant que go-login.

    T11_2

  3. Créez un déclencheur sur le pipeline de build pour démarrer le déploiement automatiquement une fois le build terminé.

    1. Accédez au pipeline de build go-login sous votre projet Devops et cliquez sur Ajouter une phase.

    2. Sélectionnez Déclencher le déploiement, cliquez sur Sélectionner un pipeline de déploiement, puis sélectionnez go-login-deploy.

      T11_3

  4. Cliquez sur Démarrer l'exécution manuelle pour tester le pipeline.

    T11_4

    T11_4

  5. Sur la page Projet Devops, cliquez sur Déploiements pour vérifier le statut du déploiement en cours d'exécution.

    T11_5

Tâche 12 : vérifiez votre déploiement go-login

  1. Accédez au terminal du bastion et vérifiez les éléments suivants :

    • Vérifiez l'état du pod.

      kubectl get pod -n go-login
      
    • Vérifiez l'hôte et l'adresse entrantes de l'application.

      kubectl get ingress -n go-login
      

      T12_1

    • Ce déploiement utilise le trafic de routage de contrôle entrant sur le nom d'hôte, ce qui signifie que nous devons appeler le service en utilisant le nom d'hôte correct dans le cadre de l'URL.

    • Dans ce tutoriel, nous n'avons pas utilisé de certificats SSL. Pour pouvoir appeler les services, nous devons inclure dans le fichier /etc/hosts local de votre ordinateur portable la route DNS adaptée. Ceci est recommandé pour les environnements de production.

    • Prenez note de votre adresse IP externe et ajoutez l'entrée dans votre /etc/hosts.

       sudo vi /etc/hosts
      
      
    • Ajoutez une nouvelle ligne à la fin du fichier.

      your.ip.aaa.xx go-login.superocilab.com
      
    • Exécutez la commande suivante .

      cat /etc/hosts
      
    • Votre fichier /etc/hosts doit ressembler à ceci.

      T12_1

  2. Vous pouvez maintenant appeler le service go-login à l'aide d'une boucle et générer un JWT TOKEN en appelant l'adresse /login.

    curl http://go-login.superocilab.com
    curl http://go-login.superocilab.com/login
    

    T12_1

Tâche 13 : déploiement d'un microservice Go vers OCI Devops à l'aide de graphiques Helm

  1. Accédez à votre projet Devops, cliquez sur Pipelines de déploiement et créez un pipeline pour go-microservice.

    T13_1

  2. Cliquez pour ajouter une nouvelle phase à déployer, sélectionnez Installer les graphiques Helm vers le cluster Kubernetes, sélectionnez l'artefact d'aide et l'artefact de valeurs pour go-microservice. Veillez à remplir le nom de l'espace de noms en tant que go-microservices.

    T13_2

  3. Créez un déclencheur sur le pipeline de build pour démarrer le déploiement automatiquement une fois le build terminé.

    1. Accédez au pipeline de build go-microservice sous votre projet Devops et cliquez sur Ajouter une phase.

    2. Sélectionnez Déclencher le déploiement, puis cliquez sur Sélectionner un pipeline de déploiement et sélectionnez go-microservice-deploy.

    T13_3

    T13_3

  4. Cliquez sur Démarrer l'exécution manuelle pour tester le pipeline.

    T13_4

    T13_4

  5. Sur la page Projet Devops, cliquez sur Déploiements pour vérifier le statut du déploiement en cours d'exécution.

    T11_5

Tâche 14 : vérification du déploiement de microservice Go

  1. Accédez à votre terminal de bastion et vérifiez les informations suivantes :

    • Vérifiez l'état du pod.

      kubectl get pod -n go-microservices
      
    • Vérifiez l'hôte et l'adresse entrantes de l'application.

      kubectl get ingress -n go-microservices
      

      T14_1

    • Ce déploiement utilise le trafic de routage de contrôle entrant sur le nom d'hôte, ce qui signifie que nous devons appeler le service en utilisant le nom d'hôte correct dans le cadre de l'URL.

    • Dans ce tutoriel, nous n'avons pas utilisé de certificats SSL. Pour pouvoir appeler les services, nous devons inclure dans le fichier /etc/hosts local de votre ordinateur portable la route DNS adaptée. Ceci est recommandé pour les environnements de production.

    • Prenez note de votre adresse IP externe et ajoutez l'entrée sur votre /etc/hosts (vous pouvez également l'ajouter sur votre ordinateur local !)

       sudo vi /etc/hosts
      
      
    • Ajoutez une nouvelle ligne à la fin du fichier.

      your.ip.aaa.xx go-microservice.superocilab.com
      
    • Exécutez la commande suivante .

      cat /etc/hosts
      
    • Votre fichier /etc/hosts doit ressembler à ceci.

      T14_1

Vous pouvez maintenant appeler le service go-microservice.

curl curl http://go-microservice.superocilab.com

T14_1

Etape suivante

Pour passer au tutoriel suivant de ce parcours de formation, cliquez ici.

Remerciements

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour consulter la documentation produit, consultez Oracle Help Center.