4.5. Déployer votre première image
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
4.5.1. Création d'un itinéraire Copier lienLien copié sur presse-papiers!
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-adminouproject-admin.
Procédure
Pour récupérer le service d'application créé, entrez la commande suivante :
$ oc get serviceExemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE parksmap ClusterIP <your-cluster-IP> <123.456.789> 8080/TCP 8m29sPour créer une route, entrez la commande suivante :
$ oc create route edge parksmap --service=parksmapExemple de sortie
route.route.openshift.io/parksmap createdPour récupérer la route d'application créée, entrez la commande suivante :
$ oc get routeExemple de sortie
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
4.5.2. Examen de la nacelle Copier lienLien copié sur presse-papiers!
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
Pour dresser la liste de tous les pods avec les noms de nœuds, entrez la commande suivante :
$ oc get podsExemple de sortie
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 77sPour répertorier tous les détails d'un pod, entrez la commande suivante :
$ oc describe podsExemple 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 Copier lienLien copié sur presse-papiers!
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/parksmapExemple de sortie
deployment.apps/parksmap scaled
Vérification
Pour vous assurer que votre application a été correctement mise à l'échelle, entrez la commande suivante :
$ oc get podsExemple de sortie
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 7m39s parksmap-5f9579955-8tgft 1/1 Running 0 24sPour ramener votre application à une seule instance de pod, entrez la commande suivante :
$ oc scale --current-replicas=2 --replicas=1 deployment/parksmap