En savoir plus sur le provisionnement d'un cluster Kubernetes ARM sur OCI et le déploiement d'un site Web Nginx

Vous pouvez provisionner un cluster Kubernetes ARM sur OCI, puis déployer un site Web Nginx manuellement ou automatiquement à l'aide d'un script Terraform. Une fois déployé, le test du site Web consiste à le lancer simplement dans votre navigateur local.

Provisionner manuellement un cluster OKE avec un pool ARM

Vous pouvez facilement provisionner un cluster Kubernetes et créer un ensemble de pools hétérogènes sur OCI, puis déployer un site Web Nginx à partir de la console OCI. Cette approche est utile si vous ne connaissez pas l'automatisation de l'infrastructure et que vous souhaitez utiliser la console à la place.

A partir de la console OCI, procédez comme suit :
  1. Commencez par provisionner le cluster OKE :
    1. Sous la section Services aux développeurs, sélectionnez Clusters Kubernetes (OKE).

      La page Créer un cluster apparaît.

    2. Sélectionnez Création rapide pour provisionner l'infrastructure de cluster Kubernetes requise de manière rapide et sécurisée.

      La page Création rapide s'affiche.

    3. Sélectionnez la forme ARM (VM.Standard.A1.Flex) pour vos noeuds de processus actif. Cette forme vous permet de configurer à la fois le nombre d'OCPU et la quantité de mémoire allouée, ce qui vous permet d'affiner les ressources (et le prix) afin qu'elles répondent à vos exigences spécifiques.

      Remarque :

      Si vous créez ce cluster pour un site Web hautement disponible, conservez les ressources à un minimum. Vous pouvez augmenter le nombre de noeuds ultérieurement, si nécessaire.
    4. Une fois le cluster provisionné, vous pouvez ajouter des pools supplémentaires avec des machines spécialisées que vous pouvez, à son tour, lier à des images spécifiques dans votre fichier de déploiement ; par exemple, vous pouvez configurer un pool de noeuds soutenus par GPU pour les tâches ML effectuées par le site Web (par exemple, recommandation de contenu ou back-end de reconnaissance faciale).

      Pour ajouter des pools de noeuds supplémentaires, mettez simplement à jour la forme de la section Pool de noeuds sur la page Détails du cluster :

      1. Accédez au menu Ressources.
      2. Cliquez sur Pools de noeuds, puis sur Ajouter un nouveau pool.
      3. Modifiez le pool si nécessaire en ajoutant/modifiant les formes de noeud.
  2. Maintenant, utilisez un fichier de déploiement pour accéder au cluster et commencer à déployer l'environnement Nginx :
    1. Accédez à votre cluster et cliquez sur Accéder au cluster.

      L'écran d'accès rapide s'affiche. Suivez les étapes 1 et 2 (comme indiqué sur l'écran) pour continuer. Si vous utilisez l'accès cloud shell, vous n'avez pas besoin de configurer l'environnement kubectl sur votre machine. Ce processus lance un émulateur de terminal Web et le configure pour votre environnement. Comme indiqué à l'étape 2 à l'écran, le collage de la commande d'interface de ligne de commande OCI fournie permet de configurer kubectl pour accéder à votre nouveau cluster.

    2. Ensuite, vérifiez que les pods ont été provisionnés. Entrez :

      Remarque :

      Pour plus de commodité, vous pouvez cliquer sur Copier dans l'exemple et coller la commande directement à l'invite.
      kubectl get nodes -o wide
      Vous devriez voir les deux noeuds et une forme de machine qui indique qu'ils sont en cours d'exécution sur ARM ; par exemple :
      NAME        STATUS ROLES AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE              KERNEL-VERSION                   CONTAINER-RUNTIME 
      10.0.10.129 Ready  node  3m57s   v.1.19.7  10.0.10.129   <none>        Oracle Linux Server   7.9 5.4.17-2102.el7uek.aarch64   docker://19.3.11 
      10.0.10.153 Ready  node  3m17s   v.1.19.7  10.0.10.153   <none>        Oracle Linux Server   7.9 5.4.17-2102.el7uek.aarch64   docker://19.3.11
      Si vous devez augmenter le nombre de noeuds, sur l'écran Pool de noeuds, cliquez sur Redimensionner et, dans Nombre de noeuds, entrez le nombre de noeuds requis. OCI se mettra en place et les inscrirea pour vous.
  3. Enfin, déployez le site Web Nginx et exposez-le via un équilibreur de charge :
    1. Déployez un déploiement Nginx de réplique 2 avec une écoute de service définie sur le port 80 ; entrez :
       kubectl apply -f https://k8s.io/examples/application/deployment.yaml 
    2. Vérifiez le déploiement ; entrez :
      kubectl describe deployment nginx-deployment
      Le résultat doit se présenter comme suit :
      ----
      kubectl describe deployment nginx-deployment
      
      Name:                   nginx-deployment
      Namespace:              default
      CreationTimestamp:      Tue, 03 Jan 2023 17:41:27 +0000
      Labels:                 <none>
      Annotations:            deployment.kubernetes.io/revision: 1
      Selector:               app=nginx
      Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
      StrategyType:           RollingUpdate
      MinReadySeconds:        0
      RollingUpdateStrategy:  25% max unavailable, 25% max surge
      Pod Template:
        Labels:  app=nginx
        Containers:
         nginx:
          Image:        nginx:1.14.2
          Port:         80/TCP
          Host Port:    0/TCP
          Environment:  <none>
          Mounts:       <none>
        Volumes:        <none>
      Conditions:
        Type           Status  Reason
        ----           ------  ------
        Available      True    MinimumReplicasAvailable
        Progressing    True    NewReplicaSetAvailable
      OldReplicaSets:  <none>
      NewReplicaSet:   nginx-deployment-6595874d85 (2/2 replicas created)
      Events:
        Type    Reason             Age   From                   Message
        ----    ------             ----  ----                   -------
        Normal  ScalingReplicaSet  15s   deployment-controller  Scaled up replica set nginx-deployment-6595874d85 to 2
      
      ----
      
    3. Exposer le service à Internet via un équilibreur de charge :
      kubectl expose deployment nginx-deployment --type=LoadBalancer --name=my-service 
    4. Vérifiez que l'équilibreur de charge dispose d'une adresse IP publique ; entrez :
      kubectl get services
      OCI met en place l'équilibreur de charge et affecte l'adresse IP publique. Au bout de quelques instants, vous devriez voir quelque chose comme ceci :
      NAME        TYPE          CLUSTER-IP     EXTERNAL-IP    PORT(S)              AGE 
      kubernetes  ClusterIP     10.96.0.1      <none>         443/TCP, 12250/TCP   16m 
      nginx-lb    LoadBalancer  10.96.224.64   138.2.218.135  80:30343/TCP         3m1s

Provisionner et déployer un cluster OKE avec un pool ARM avec Ampere A1

Vous pouvez provisionner automatiquement le cluster OKE avec un pool ARM, puis déployer un site Web Nginx à l'aide d'un script Terraform fourni sur GitHub. Le script provisionne un cluster avec deux noeuds (sur le même domaine de disponibilité) sur deux OCPU. L'étape de configuration indique comment modifier le nombre de noeuds et d'OCPU. Le script provisionne ensuite Nginx (2 pods) et l'expose derrière un équilibreur de charge.
Pour provisionner le cluster et déployer un site Web, procédez comme suit :
  1. Tout d'abord, vous devez configurer le cluster.
    1. Assurez-vous que vous disposez d'une location OCI avec un compartiment OCI.
    2. Connectez-vous à la console OCI, ouvrez un shell de commande et exécutez les commandes suivantes :
      git clone https://github.com/badr42/OKE_A1
      cd OKE_A1
      export TF_VAR_tenancy_ocid='tenancy-ocid'
      export TF_VAR_compartment_ocid='comparment-ocid'
      export TF_VAR_region='home-region'
      <optional>
      ### Select Availability Domain, zero based, if not set it defaults to 0, 
      ### this allows you to select an AD that has available A1 chips
      export TF_VAR_AD_number='0'
      
      ### Select number of nodes
      export TF_VAR_node_count='2'
      
      ### Set OCPU count per node
      export TF_VAR_ocpu_count='2'

    Utilisez vos valeurs spécifiques pour tenancy-ocid, comparment-ocid et home-region.

  2. Créez le cluster, entrez :
    terraform init
    terraform plan
    terraform apply

    Après avoir exécuté terraform apply, attendez environ 25 minutes pour le lancement du service.

  3. Une fois le service lancé, démarrez l'équilibreur de charge Nginx. Saisissez :
    kubectl --kubeconfig kubeconfig get service
    La sortie système doit se présenter comme suit :
    NAME        TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)              AGE
    kubernetes  ClusterIP      10.96.0.1       <none>           443/TCP, 12250/TCP   16m
    nginx-lb    LoadBalancer   10.96.224.64    138.2.218.135    80:30343/TCP       3m1s
  4. Une fois le déploiement terminé, mettez fin à l'environnement et entrez :
    terraform destroy

Tester le déploiement

Pour tester votre déploiement, ouvrez un navigateur Web et entrez l'adresse IP publique dans la barre d'adresse. Si vous avez correctement déployé la page Web, vous devriez pouvoir accéder à votre nouvelle page de bienvenue du serveur Nginx.