Configuration de votre premier cluster dans votre cloud privé virtuel (VPC)

Cloud privé virtuel

Créez un cluster Red Hat® OpenShift® on IBM Cloud® dans votre cloud privé virtuel (VPC).

  • Red Hat OpenShift on IBM Cloud vous offre tous les avantages d'une offre gérée pour votre environnement d'infrastructure de cluster, tout en utilisant les outils et le catalogue Red Hat OpenShift qui fonctionnent sur Red Hat Enterprise Linux pour vos déploiements d'applications.
  • Un VPC vous offre la sécurité d'un environnement de cloud privé avec l'évolutivité dynamique d'un cloud public. VPC utilise la prochaine version des fournisseurs d’infrastructure Red Hat OpenShift on IBM Cloud, avec un ensemble restreint de fonctionnalités de l’API, de l’interface de ligne de commande (CLI) et de la console d’ v2.
  • Ce tutoriel crée un cluster dans un VPC en utilisant les commandes CLI ibmcloud. Vous pouvez également utiliser un module Terraform open-source et prêt à l'emploi pour déployer un cluster OpenShift sur une infrastructure VPC. Vous pouvez découvrir d'autres modules dans le registre des modules de Terraform IBM.

Public ciblé

Ce tutoriel s'adresse aux administrateurs qui créent pour la première fois un cluster dans Red Hat OpenShift on IBM Cloud dans le noeud de calcul VPC.

Objectifs

Dans les leçons de ce tutoriel, vous créez un cluster Red Hat OpenShift on IBM Cloud dans un cloud privé virtuel (VPC). Vous accédez ensuite aux composants intégrés d' Red Hat OpenShift, déployez une application dans un projet Red Hat OpenShift, puis exposez l'application à l'aide d'un équilibreur de charge VPC afin que les utilisateurs externes puissent accéder au service.

Ce que vous obtiendrez

Dans ce tutoriel, vous allez créer les ressources suivantes. Des étapes facultatives permettent de supprimer ces ressources si vous ne souhaitez pas les conserver après avoir suivi le tutoriel.

  • Un cluster VPC
  • Une application Hello World simple déployée sur votre cluster
  • Un équilibreur de charge VPC pour exposer votre application

Prérequis

Pour configurer les droits et l'environnement de ligne de commande, suivez la procédure prérequise ci-après.

Droits
Si vous êtes le titulaire du compte, vous disposez déjà des autorisations nécessaires pour créer un cluster et pouvez passer à l'étape suivante. Sinon, demandez au propriétaire du compte de configurer la clé d'API et de vous octroyer les droits utilisateur minimaux dans IBM Cloud IAM.
Outils de ligne de commande
Pour accéder rapidement à vos ressources depuis la ligne de commande, essayez la commande IBM Cloud Shell. Sinon, configurez votre environnement de ligne de commande local en procédant comme suit :
  1. Installez l'interface de ligne de commande IBM Cloud (ibmcloud), le plug-in Kubernetes Service (ibmcloud oc) et le plug-in IBM Cloud Container Registry (ibmcloud cr).
  2. Installez les interfaces CLI Red Hat OpenShift (oc) et Kubernetes (kubectl).
  3. Pour utiliser VPC, installez le plug-in infrastructure-service. Le préfixe pour l'exécution des commandes est ibmcloud is.
    ibmcloud plugin install infrastructure-service
    ```
4. Mettez à niveau le plug-in Kubernetes Service vers la version la plus récente.
```sh {: pre}
    ibmcloud plugin update kubernetes-service
    ```


Création d'un cluster dans un VPC

Créez un environnement de cloud privé virtuel (VPC) IBM Cloud. Ensuite, créez un cluster Red Hat OpenShift on IBM Cloud sur l'infrastructure VPC. Pour plus d'informations sur VPC, voir Initiation au cloud privé virtuel.

  1. Connectez-vous au compte, au groupe de ressources et à la région IBM Cloud où vous souhaitez créer votre environnement VPC. Le VPC doit être configuré dans la même région métropolitaine multizone que celle où vous souhaitez créer votre cluster. Dans le cadre de ce tutoriel, vous allez créer un VPC dans la région us-south. Pour connaître les autres régions prises en charge, voir Métropoles multizone pour des clusters de VPC. Si vous disposez d'un identifiant fédéré, incluez l'option --sso.

    ibmcloud login -r us-south [-g <resource_group>] [--sso]
    
  2. Créez un VPC pour votre cluster. Pour plus d'informations, consultez la documentation relative à la création d'un VPC dans la console ou l'interface CLI.

    1. Créez un VPC appelé myvpc et notez l'ID dans la sortie. Les VPC fournissent un environnement isolé pour que vos charges de travail s'exécutent dans le cloud public. Vous pouvez utiliser le même VPC pour plusieurs clusters, par conséquent, si vous prévoyez de disposer de différents clusters, hébergez des microservices distincts ayant besoin de communiquer entre eux. Si vous souhaitez séparer vos clusters, par exemple, pour différents services, vous pouvez créer un VPC pour chaque cluster.
        ibmcloud is vpc-create myvpc
        ```
    2. Créez une passerelle publique et notez l'**ID** dans la sortie. Lors de l'étape suivante, vous connecterez la passerelle publique à un sous-réseau VPC afin de permettre à vos noeuds worker de communiquer sur le réseau public. Les composants Red Hat OpenShift par défaut, tels que la console Web et OperatorHub, nécessitent un accès via un réseau public. Si vous ignorez cette étape, vous devez à la place établir une connexion à votre réseau privé VPC, par exemple, via une connexion VPN, pour accéder à la console Web Red Hat OpenShift ou accéder à votre cluster à l'aide des commandes `kubectl`.
    ```sh {: pre}
        ibmcloud is public-gateway-create gateway-us-south-1 <vpc_ID> us-south-1
        ```
    3. Créez un sous-réseau pour votre VPC et notez son **ID**. Prenez en compte les informations suivantes lorsque vous créez le sous-réseau VPC :
        *  **Zones** : vous devez disposer d'un sous-réseau VPC pour chaque zone incluse dans votre cluster. Les zones disponibles dépendent de la région dans laquelle vous avez créé le VPC. Pour répertorier les zones disponibles dans la région, exécutez la commande `ibmcloud is zones`.
        *  **Adresses IP** : les sous-réseaux VPC fournissent des adresses IP privées pour vos noeuds worker et des services d'équilibreur de charge dans votre cluster, par conséquent, [créez un sous-réseau avec suffisamment d'adresses IP](/docs/openshift?topic=openshift-vpc-subnets#vpc_basics_subnets), par exemple, 256. Vous ne pouvez pas modifier le nombre d'adresses IP qu'un sous-réseau VPC a plus tard.
        *  **Passerelles publiques** : incluez la passerelle publique que vous avez crée précédemment. Vous devez disposer d'une passerelle publique pour chaque zone incluse dans votre cluster.
    
            ```sh {: pre}
            ibmcloud is subnet-create mysubnet1 VPC_ID --zone us-south-1 --ipv4-address-count 256 --pgw GATEWAY_ID
            ```
    Si vous avez plusieurs zones, répétez ces étapes pour chaque zone.
    {: tip}
    
    
  3. Créez une instance IBM Cloud Object Storage standard pour sauvegarder le registre interne dans votre cluster. Dans la sortie, notez l'ID de l'instance.

    ibmcloud resource service-instance-create myvpc-cos cloud-object-storage standard global
    
  4. Créez un cluster dans votre VPC dans la même zone que le sous-réseau. La commande suivante permet de créer un cluster version 4.21 à Dallas avec une configuration minimale de 2 nœuds de travail disposant d’au moins 4 cœurs et 16 Go de mémoire, afin de permettre le déploiement des composants par défaut d’ Red Hat OpenShift. Pour plus d'informations sur les options de commandes, voir la documentation de référence CLI cluster create vpc-gen2.

    ibmcloud oc cluster create vpc-gen2 --name myvpc-cluster --zone us-south-1 --version 4.21_openshift --flavor bx2.4x16 --workers 2 [--operating-system REDHAT_8_64] --vpc-id VPC_ID --subnet-id VPC_SUBNET_ID --cos-instance COS_CRN --disable-outbound-traffic-protection
    
  5. Répertoriez les détails de votre cluster. Examinez l'état du cluster, vérifiez le sous-domaine Ingress et notez l'URL du maître. Votre opération de création de cluster peut durer un certain temps. Une fois que l'état du cluster affiche Normal, le réseau de cluster et les composants d'entrée prennent environ 10 minutes pour déployer et mettre à jour le domaine de clusters que vous utilisez pour la console Web Red Hat OpenShift et d'autres routes. Avant de continuer, attendez que le cluster soit prêt en vérifiant que le sous-domaine Ingress suit un modèle de <cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud.

    ibmcloud oc cluster get --cluster myvpc-cluster
    
  6. Ajoutez-vous en tant qu'utilisateur sur le cluster Red Hat OpenShift en définissant le contexte de cluster.

    ibmcloud oc cluster config --cluster myvpc-cluster --admin
    
  7. Dans votre navigateur, accédez à l'adresse de votre URL du maître et ajoutez /console. Par exemple, https://c0.containers.cloud.ibm.com:23652/console. Si vous avez suffisamment de temps, vous pouvez explorer les différentes zones de la console Web Red Hat OpenShift.

  8. Dans la barre de menu de la console Web d' Red Hat OpenShift, cliquez sur votre profil IAM#user.name@email.com > Copier la commande de connexion. Affichez et copiez la commande de jeton oc login sur votre ligne de commande pour vous authentifier via l'interface CLI.

    Sauvegardez votre URL maître de cluster pour accéder ultérieurement à la console Red Hat OpenShift. Dans les sessions ultérieures, vous pourrez ignorer l'étape cluster config et copier la commande de connexion à partir de la console.

  9. Vérifiez que les commandes oc s'exécutent correctement avec votre cluster en vérifiant la version.

    oc version
    

    Exemple de sortie

    Client Version: v4.21.0
    Kubernetes Version: v1.35.7.2
    

    Si vous ne pouvez pas effectuer les opérations qui nécessitent des autorisations d'administrateur, telles que la liste de tous les nœuds worker ou pods d'un cluster, téléchargez les certificats TLS et les fichiers d'autorisation pour l'administrateur du cluster en exécutant la commande ibmcloud oc cluster config --cluster myvpc-cluster --admin.

Déploiement d'une application dans votre cluster

Déployez rapidement un nouvel exemple d'application disponible sur les demandes à partir du cluster uniquement.

  1. Créez un projet Red Hat OpenShift pour votre application Hello World.

    oc new-project hello-world
    
  2. Compilez l'application d'exemple à partir du code source. La commande Red Hat OpenShift new-app vous permet de faire référence à un répertoire dans un référentiel distant qui contient le fichier Dockerfile et le code d'application pour créer votre image. La commande génère l'image, l'enregistre dans le registre local d' Docker, puis crée les configurations de déploiement de l'application (dc) et les services (svc). Pour plus d'informations sur la création de nouvelles applications, consultez la documentation d' Red Hat OpenShift.

    oc new-app --name hello-world https://github.com/IBM/container-service-getting-started-wt --context-dir="Lab 1"
    
  3. Vérifiez que les composants de l'exemple d'application Hello World sont créés.

    1. Répertoriez les services hello-world et notez le nom de service. Jusqu'à présent, votre application écoutait le trafic uniquement sur ces adresses IP de cluster internes. Dans la leçon suivante, vous allez créer un équilibreur de charge pour le service de sorte que l'équilibreur de charge puisse transférer les demandes de trafic externes vers l'application.
        oc get svc -n hello-world
        ```
        Exemple de sortie
        ```sh {: screen}
        NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
        hello-world   ClusterIP   172.21.xxx.xxx   <none>       8080/TCP   31m
        ```
    2. Répertoriez les pods. Les pods dont le nom comporte `build` sont des travaux terminés (**Completed**) dans le cadre du nouveau processus de création d'application. Assurez-vous que le statut du pod **hello-world** est **Running**.
    ```sh {: pre}
        oc get pods -n hello-world
        ```
        Exemple de sortie
        ```sh {: screen}
        NAME                  READY     STATUS             RESTARTS   AGE
        hello-world-1-9cv7d   1/1       Running            0          30m
        hello-world-1-build   0/1       Completed          0          31m
        hello-world-1-deploy  0/1       Completed          0          31m
        ```
    
    
    

Configuration d'un équilibreur de charge VPC afin d'exposer votre application au public

Configurez un équilibreur de charge VPC pour exposer votre application à des demandes externes sur le réseau public.

Lorsque vous créez un service Kubernetes LoadBalancer dans votre cluster, un équilibreur de charge VPC est automatiquement créé dans votre VPC, en dehors de votre cluster. L'équilibreur de charge VPC comprend plusieurs zones et achemine des demandes pour votre application via les ports de noeud privés qui sont automatiquement ouverts sur vos noeuds worker. Le diagramme suivant illustre la façon dont un utilisateur accède au service d'une application via l'équilibreur de charge VPC, même si votre noeud worker n'est connecté qu'à un sous-réseau privé :

  1. Créez un service Kubernetes LoadBalancer dans votre cluster afin d'exposer l'application Hello world au public.

    oc expose deployment/hello-world --type=LoadBalancer --name=hw-lb-svc  --port=8080 --target-port=8080 -n hello-world
    

    Exemple de sortie

    service "hw-lb-svc" exposed
    
    Informations supplémentaires sur les paramètres de la commande expose
    Paramètre Description
    expose Expose une ressource Kubernetes, par exemple un déploiement, en tant que service afin de permettre aux utilisateurs d'accéder à la ressource à l'aide du nom d'hôte d'équilibreur de charge VPC.
    dc/<hello-world-deployment> Type et nom de la ressource à exposer avec ce service.
    --name=<hello-world-service> Nom du service.
    --type=LoadBalancer Type de service à créer. Dans cette leçon, vous créez un service LoadBalancer.
    --port=<8080> Port sur lequel le service est à l'écoute du trafic réseau externe.
    --target-port=<8080> Port sur lequel votre application est à l'écoute et vers lequel le service dirige le trafic réseau entrant. Dans cet exemple, target-port et port sont identiques, mais les autres applications que vous créez peuvent utiliser un autre port.
    -n <hello-world> Espace de noms dans lequel se trouve votre déploiement.
  2. Vérifiez que le service Kubernetes LoadBalancer a bien été créé dans votre cluster. Lorsque vous créez un service Kubernetes LoadBalancer dans votre cluster, un équilibreur de charge VPC est automatiquement créé pour vous. L'équilibreur de charge VPC affecte un nom d'hôte à votre service Kubernetes LoadBalancer visible dans la zone LoadBalancer Ingress de votre sortie d'interface de ligne de commande. Dans VPC, les services de votre cluster se voient affecter un nom d'hôte car l'adresse IP externe du service n'est pas stable. La mise à disposition dans votre VPC de l'équilibreur de charge VPC dure quelques minutes. Tant que l'équilibreur de charge VPC n'est pas prêt, vous ne pouvez pas accéder au service LoadBalancer Kubernetes via son nom d'hôte.

    oc describe service hw-lb-svc -n hello-world
    

    Exemple de sortie d'interface de ligne de commande :

    NAME:                     hw-lb-svc
    Namespace:                default
    Labels:                   app=hello-world-deployment
    Annotations:              <none>
    Selector:                 app=hello-world-deployment
    Type:                     LoadBalancer
    IP:                       172.21.xxx.xxx
    LoadBalancer Ingress:     1234abcd-us-south.lb.appdomain.cloud
    Port:                     <unset> 8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 <unset> 32040/TCP
    Endpoints:
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:
        Type    Reason                Age   From                Message
        ----    ------                ----  ----                -------
        Normal  EnsuringLoadBalancer  1m    service-controller  Ensuring load balancer
        Normal  EnsuredLoadBalancer   1m    service-controller  Ensured load balancer
    
  3. Vérifiez que l'équilibreur de charge VPC a bien été créé dans votre VPC. Dans la sortie, assurez-vous que la zone Provision Status contient la valeur active et que la zone Operating Status contient la valeur online pour l'équilibreur de charge VPC.

    L'équilibreur de charge de VPC est nommé au format kube-<cluster_ID>-<kubernetes_lb_service_UID>. Pour afficher votre ID de cluster, exécutez ibmcloud oc cluster get --cluster CLUSTER_NAME. Pour voir l'ID utilisateur du service Kubernetes LoadBalancer, exécutez la commande kubectl get svc hw-lb-svc -o yaml et recherchez la zone metadata.uid dans la sortie.

    ibmcloud is load-balancers
    

    Dans l'exemple de sortie d'interface de ligne de commande suivant, l'équilibreur de charge VPC nommé kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306 est créé pour le service Kubernetes LoadBalancer:

    ID                                          Name                                                         Family        Subnets               Is public   Provision status   Operating status   Resource group
    r006-d044af9b-92bf-4047-8f77-a7b86efcb923   kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306   Application   mysubnet-us-south-3   true        active             online             default
    
  4. Envoyez une demande à votre application en exécutant une commande curl sur le nom d'hôte et le port du service Kubernetes LoadBalancer qui est affecté par l'équilibreur de charge VPC identifié à l'étape 2. Exemple :

    curl 1234abcd-us-south.lb.appdomain.cloud:8080
    

    Exemple de sortie

    Hello world from hello-world-deployment-5fd7787c79-sl9hn! Your app is up and running in a cluster!
    
  5. Facultatif : pour nettoyer les ressources que vous avez créées dans cette leçon, vous pouvez utiliser les libellés affectés à chaque application.

    1. Répertoriez toutes les ressources pour chaque application du projet hello-world.
        oc get all -l app=hello-world -o name -n hello-world
        ```
        Exemple de sortie
        ```sh {: screen}
        pod/hello-world-1-dh2ff
        replicationcontroller/hello-world-1
        service/hello-world
        deploymentconfig.apps.openshift.io/hello-world
        buildconfig.build.openshift.io/hello-world
        build.build.openshift.io/hello-world-1
        imagestream.image.openshift.io/hello-world
        imagestream.image.openshift.io/node
        ```
    2. Supprimez toutes les ressources que vous avez créées.
    ```sh {: pre}
        oc delete all -l app=hello-world -n hello-world
        ```
    
    

Étape suivante ?

Maintenant que vous disposez d'un cluster de VPC, découvrez ce que vous pouvez faire.

Vous avez besoin d'aide, vous avez des questions ou souhaitez nous faire part de vos commentaires sur les clusters de VPC ? Essayez de publier dans le canal Slack.