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 :
- 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). - Installez les interfaces CLI Red Hat OpenShift (
oc) et Kubernetes (kubectl). - Pour utiliser VPC, installez le plug-in
infrastructure-service. Le préfixe pour l'exécution des commandes estibmcloud 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 ``` - Installez l'interface de ligne de commande IBM Cloud (
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.
-
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] -
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.
- Créez un VPC appelé
myvpcet 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} - Créez un VPC appelé
-
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 -
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 -
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 -
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 -
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. -
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 loginsur 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 configet copier la commande de connexion à partir de la console. -
Vérifiez que les commandes
ocs'exécutent correctement avec votre cluster en vérifiant la version.oc versionExemple de sortie
Client Version: v4.21.0 Kubernetes Version: v1.35.7.2Si 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.
-
Créez un projet Red Hat OpenShift pour votre application Hello World.
oc new-project hello-world -
Compilez l'application d'exemple à partir du code source. La commande Red Hat OpenShift
new-appvous 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" -
Vérifiez que les composants de l'exemple d'application Hello World sont créés.
- 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é :
-
Créez un service Kubernetes
LoadBalancerdans 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-worldExemple de sortie
service "hw-lb-svc" exposedInformations supplémentaires sur les paramètres de la commande expose Paramètre Description exposeExpose 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=LoadBalancerType 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-portetportsont 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. -
Vérifiez que le service Kubernetes
LoadBalancera bien été créé dans votre cluster. Lorsque vous créez un service KubernetesLoadBalancerdans 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 KubernetesLoadBalancervisible 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 serviceLoadBalancerKubernetes via son nom d'hôte.oc describe service hw-lb-svc -n hello-worldExemple 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 -
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
activeet que la zone Operating Status contient la valeuronlinepour 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écutezibmcloud oc cluster get --cluster CLUSTER_NAME. Pour voir l'ID utilisateur du service KubernetesLoadBalancer, exécutez la commandekubectl get svc hw-lb-svc -o yamlet recherchez la zone metadata.uid dans la sortie.ibmcloud is load-balancersDans l'exemple de sortie d'interface de ligne de commande suivant, l'équilibreur de charge VPC nommé
kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306est créé pour le service KubernetesLoadBalancer: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 -
Envoyez une demande à votre application en exécutant une commande curl sur le nom d'hôte et le port du service Kubernetes
LoadBalancerqui est affecté par l'équilibreur de charge VPC identifié à l'étape 2. Exemple :curl 1234abcd-us-south.lb.appdomain.cloud:8080Exemple de sortie
Hello world from hello-world-deployment-5fd7787c79-sl9hn! Your app is up and running in a cluster! -
Facultatif : pour nettoyer les ressources que vous avez créées dans cette leçon, vous pouvez utiliser les libellés affectés à chaque application.
- 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 ``` - Répertoriez toutes les ressources pour chaque application du projet
Étape suivante ?
Maintenant que vous disposez d'un cluster de VPC, découvrez ce que vous pouvez faire.
- Configuration du stockage par blocs pour vos applications
- Sauvegarde de votre registre d'images interne sur IBM Cloud Object Storage
- Limitations de cluster de VPC
- A propos de l'API v2
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.