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
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
ouproject-admin
.
Procédure
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
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
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
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
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
Ressources complémentaires
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
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
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