Rechercher

4.5. Déployer votre première image

download PDF

La manière la plus simple de déployer une application dans OpenShift Container Platform est d'exécuter une image de conteneur existante. La procédure suivante déploie un composant frontal d'une application appelée national-parks-app. L'application web affiche une carte interactive. La carte indique l'emplacement des principaux parcs nationaux dans le monde.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Installez le CLI OpenShift (oc).

Procédure

  • Pour déployer une application, entrez la commande suivante :

    $ oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'

    Exemple de sortie

    --> Found container image 0c2f55f (12 months old) from quay.io for "quay.io/openshiftroadshow/parksmap:latest"
    
        * An image stream tag will be created as "parksmap:latest" that will track this image
    
    --> Creating resources with label app=national-parks-app,app.kubernetes.io/part-of=national-parks-app,component=parksmap,role=frontend ...
        imagestream.image.openshift.io "parksmap" created
        deployment.apps "parksmap" created
        service "parksmap" created
    --> Success

Ressources complémentaires

4.5.1. Création d'un itinéraire

Les clients externes peuvent accéder aux applications fonctionnant sur OpenShift Container Platform via la couche de routage et l'objet de données derrière cela est un route. Le routeur par défaut d'OpenShift Container Platform (HAProxy) utilise l'en-tête HTTP de la requête entrante pour déterminer où proxyer la connexion.

En option, vous pouvez définir la sécurité, telle que TLS, pour l'itinéraire.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.
  • Vous devez avoir les privilèges cluster-admin ou project-admin.

Procédure

  1. Pour récupérer le service d'application créé, entrez la commande suivante :

    $ oc get service

    Exemple de sortie

    NAME      TYPE       CLUSTER-IP         EXTERNAL-IP    PORT(S)   AGE
    parksmap  ClusterIP  <your-cluster-IP>  <123.456.789>  8080/TCP  8m29s

  2. Pour créer une route, entrez la commande suivante :

    $ oc create route edge parksmap --service=parksmap

    Exemple de sortie

    route.route.openshift.io/parksmap created

  3. Pour récupérer la route d'application créée, entrez la commande suivante :

    $ oc get route

    Exemple de sortie

    NAME        HOST/PORT                                                   PATH   SERVICES   PORT       TERMINATION   WILDCARD
    parksmap    parksmap-user-getting-started.apps.cluster.example.com             parksmap   8080-tcp   edge          None

Ressources complémentaires

4.5.2. Examen de la nacelle

OpenShift Container Platform s'appuie sur le concept Kubernetes de pod, qui est un ou plusieurs conteneurs déployés ensemble sur un hôte, et la plus petite unité de calcul qui peut être définie, déployée et gérée. Les pods sont l'équivalent approximatif d'une instance de machine, physique ou virtuelle, pour un conteneur.

Vous pouvez visualiser les pods de votre cluster et déterminer l'état de santé de ces pods et du cluster dans son ensemble.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.

Procédure

  1. Pour dresser la liste de tous les pods avec les noms de nœuds, entrez la commande suivante :

    $ oc get pods

    Exemple de sortie

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          77s

  2. Pour répertorier tous les détails d'un pod, entrez la commande suivante :

    $ oc describe pods

    Exemple de sortie

    Name:         parksmap-848bd4954b-5pvcc
    Namespace:    user-getting-started
    Priority:     0
    Node:         ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c/10.0.128.4
    Start Time:   Sun, 13 Feb 2022 14:14:14 -0500
    Labels:       app=national-parks-app
                  app.kubernetes.io/part-of=national-parks-app
                  component=parksmap
                  deployment=parksmap
                  pod-template-hash=848bd4954b
                  role=frontend
    Annotations:  k8s.v1.cni.cncf.io/network-status:
                    [{
                        "name": "openshift-sdn",
                        "interface": "eth0",
                        "ips": [
                            "10.131.0.14"
                        ],
                        "default": true,
                        "dns": {}
                    }]
                  k8s.v1.cni.cncf.io/networks-status:
                    [{
                        "name": "openshift-sdn",
                        "interface": "eth0",
                        "ips": [
                            "10.131.0.14"
                        ],
                        "default": true,
                        "dns": {}
                    }]
                  openshift.io/generated-by: OpenShiftNewApp
                  openshift.io/scc: restricted
    Status:       Running
    IP:           10.131.0.14
    IPs:
      IP:           10.131.0.14
    Controlled By:  ReplicaSet/parksmap-848bd4954b
    Containers:
      parksmap:
        Container ID:   cri-o://4b2625d4f61861e33cc95ad6d455915ea8ff6b75e17650538cc33c1e3e26aeb8
        Image:          quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b
        Image ID:       quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b
        Port:           8080/TCP
        Host Port:      0/TCP
        State:          Running
          Started:      Sun, 13 Feb 2022 14:14:25 -0500
        Ready:          True
        Restart Count:  0
        Environment:    <none>
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-6f844 (ro)
    Conditions:
      Type              Status
      Initialized       True
      Ready             True
      ContainersReady   True
      PodScheduled      True
    Volumes:
      kube-api-access-6f844:
        Type:                    Projected (a volume that contains injected data from multiple sources)
        TokenExpirationSeconds:  3607
        ConfigMapName:           kube-root-ca.crt
        ConfigMapOptional:       <nil>
        DownwardAPI:             true
        ConfigMapName:           openshift-service-ca.crt
        ConfigMapOptional:       <nil>
    QoS Class:                   BestEffort
    Node-Selectors:              <none>
    Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
    Events:
      Type    Reason          Age   From               Message
      ----    ------          ----  ----               -------
      Normal  Scheduled       46s   default-scheduler  Successfully assigned user-getting-started/parksmap-848bd4954b-5pvcc to ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c
      Normal  AddedInterface  44s   multus             Add eth0 [10.131.0.14/23] from openshift-sdn
      Normal  Pulling         44s   kubelet            Pulling image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b"
      Normal  Pulled          35s   kubelet            Successfully pulled image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b" in 9.49243308s
      Normal  Created         35s   kubelet            Created container parksmap
      Normal  Started         35s   kubelet            Started container parksmap

4.5.3. Mise à l'échelle de l'application

Dans Kubernetes, un objet Deployment définit la manière dont une application est déployée. Dans la plupart des cas, les utilisateurs utilisent les ressources Pod, Service, ReplicaSets, et Deployment ensemble. Dans la plupart des cas, OpenShift Container Platform crée les ressources pour vous.

Lorsque vous déployez l'image national-parks-app, une ressource de déploiement est créée. Dans cet exemple, un seul Pod est déployé.

La procédure suivante permet de mettre à l'échelle le site national-parks-image pour utiliser deux instances.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.

Procédure

  • Pour faire passer votre application d'une instance de pod à deux instances de pod, entrez la commande suivante :

    $ oc scale --current-replicas=1 --replicas=2 deployment/parksmap

    Exemple de sortie

    deployment.apps/parksmap scaled

Vérification

  1. Pour vous assurer que votre application a été correctement mise à l'échelle, entrez la commande suivante :

    $ oc get pods

    Exemple de sortie

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          7m39s
    parksmap-5f9579955-8tgft   1/1     Running   0          24s

  2. Pour ramener votre application à une seule instance de pod, entrez la commande suivante :

    $ oc scale --current-replicas=2 --replicas=1 deployment/parksmap

Ressources complémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.