3.4. Créer des applications en utilisant le CLI


Il est possible de créer un service Red Hat OpenShift sur l’application AWS à partir de composants qui incluent du code source ou binaire, des images et des modèles à l’aide du service Red Hat OpenShift sur AWS CLI.

L’ensemble d’objets créés par la nouvelle application dépend des artefacts passés en entrée : référentiels sources, images ou modèles.

3.4.1. Création d’une application à partir du code source

Avec la commande new-app, vous pouvez créer des applications à partir du code source dans un référentiel Git local ou distant.

La commande new-app crée une configuration de build, qui crée elle-même une nouvelle image d’application à partir de votre code source. La commande new-app crée généralement un objet Déploiement pour déployer la nouvelle image, et un service pour fournir un accès équilibré à la charge au déploiement exécutant votre image.

Le service OpenShift Red Hat sur AWS détecte automatiquement si la stratégie de construction de pipeline, source ou docker doit être utilisée et, dans le cas de la construction source, détecte une image de constructeur de langage appropriée.

3.4.1.1. Au niveau local

Créer une application à partir d’un référentiel Git dans un répertoire local:

$ oc new-app /<path to source code>
Copy to Clipboard Toggle word wrap
Note

Lorsque vous utilisez un référentiel Git local, le référentiel doit avoir une origine nommée à distance qui pointe vers une URL accessible par le service Red Hat OpenShift sur le cluster AWS. En l’absence d’une télécommande reconnue, l’exécution de la commande new-app créera une construction binaire.

3.4.1.2. À distance

Créer une application à partir d’un référentiel Git distant:

$ oc new-app https://github.com/sclorg/cakephp-ex
Copy to Clipboard Toggle word wrap

Créer une application à partir d’un référentiel Git privé distant:

$ oc new-app https://github.com/youruser/yourprivaterepo --source-secret=yoursecret
Copy to Clipboard Toggle word wrap
Note

Lorsque vous utilisez un dépôt Git privé distant, vous pouvez utiliser le drapeau --source-secret pour spécifier un secret de clone source existant qui sera injecté dans votre configuration de construction pour accéder au référentiel.

Il est possible d’utiliser un sous-répertoire de votre référentiel de code source en spécifiant un drapeau --context-dir. Créer une application à partir d’un référentiel Git distant et d’un sous-répertoire contextuel:

$ oc new-app https://github.com/sclorg/s2i-ruby-container.git \
    --context-dir=2.0/test/puma-test-app
Copy to Clipboard Toggle word wrap

En outre, lorsque vous spécifiez une URL distante, vous pouvez spécifier une branche Git à utiliser en joignant #&lt;branch_name&gt; à la fin de l’URL:

$ oc new-app https://github.com/openshift/ruby-hello-world.git#beta4
Copy to Clipboard Toggle word wrap

3.4.1.3. Construire la détection de stratégie

Le service Red Hat OpenShift sur AWS détermine automatiquement la stratégie de création à utiliser en détectant certains fichiers:

  • Lorsqu’un fichier Jenkins existe dans le répertoire racine ou spécifié du référentiel source lors de la création d’une nouvelle application, Red Hat OpenShift Service sur AWS génère une stratégie de construction de pipelines.

    Note

    La stratégie de construction de pipelines est dépréciée; envisagez d’utiliser les pipelines Red Hat OpenShift à la place.

  • Lorsqu’un Dockerfile existe dans le répertoire racine ou spécifié du référentiel source lors de la création d’une nouvelle application, Red Hat OpenShift Service sur AWS génère une stratégie de création de docker.
  • En cas de détection d’un fichier Jenkins ni d’un Dockerfile, Red Hat OpenShift Service sur AWS génère une stratégie de création de sources.

Remplacez la stratégie de construction détectée automatiquement en définissant le drapeau --stratégie à docker, pipeline ou source.

$ oc new-app /home/user/code/myapp --strategy=docker
Copy to Clipboard Toggle word wrap
Note

La commande oc exige que les fichiers contenant des sources de build soient disponibles dans un dépôt Git distant. Dans toutes les versions de source, vous devez utiliser git Remote -v.

3.4.1.4. Détection de la langue

Lorsque vous utilisez la stratégie de création de source, new-app tente de déterminer le constructeur de langage à utiliser par la présence de certains fichiers dans le répertoire racine ou spécifié du répertoire contextuel du référentiel:

Expand
Tableau 3.1. Langues détectées par new-app
LangueFichiers

JEE

le POM.xml

à propos de NodeJS

App.json, package.json

à propos de Perl

cpanfile, index.pl

à propos de PHP

compositeur.json, index.php

à propos de Python

conditions.txt, setup.py

♪ Ruby ♪

Gemfile, Rakefile, config.ru

à propos de Scala

construire.sbt

Golang

Godeps, main.go

Après avoir détecté une langue, une nouvelle application recherche le service OpenShift Red Hat sur le serveur AWS pour trouver des balises de flux d’images qui ont une annotation de support correspondant à la langue détectée, ou un flux d’images qui correspond au nom de la langue détectée. En cas d’absence de correspondance, la nouvelle application effectue une recherche dans le registre Docker Hub pour trouver une image correspondant à la langue détectée en fonction du nom.

Il est possible de remplacer l’image que le constructeur utilise pour un référentiel source particulier en spécifiant l’image, soit un flux d’image ou une spécification de conteneur, et le référentiel avec un ~ comme séparateur. A noter que si cela est fait, construire la détection de stratégie et la détection du langage ne sont pas effectués.

À titre d’exemple, utiliser le flux d’images myproject/my-ruby avec la source dans un référentiel distant:

$ oc new-app myproject/my-ruby~https://github.com/openshift/ruby-hello-world.git
Copy to Clipboard Toggle word wrap

D’utiliser le flux d’images openshift/ruby-20-centos7: dernier conteneur avec la source dans un référentiel local:

$ oc new-app openshift/ruby-20-centos7:latest~/home/user/code/my-ruby-app
Copy to Clipboard Toggle word wrap
Note

La détection de la langue nécessite que le client Git soit installé localement afin que votre dépôt puisse être cloné et inspecté. Lorsque Git n’est pas disponible, vous pouvez éviter l’étape de détection du langage en spécifiant l’image du constructeur à utiliser avec votre référentiel avec la syntaxe &lt;image&gt;~&lt;répository&gt;.

L’invocation -i &lt;image&gt; &lt;repository&gt; exige que la nouvelle application tente de cloner le référentiel pour déterminer quel type d’artefact il est, de sorte que cela échoue si Git n’est pas disponible.

L’invocation -i &lt;image&gt; --code &lt;repository&gt; nécessite un dépôt de clones new-app pour déterminer si l’image doit être utilisée comme constructeur pour le code source, ou déployée séparément, comme dans le cas d’une image de base de données.

3.4.2. Créer une application à partir d’une image

Il est possible de déployer une application à partir d’une image existante. Les images peuvent provenir de flux d’images dans le service OpenShift Red Hat sur le serveur AWS, d’images dans un registre spécifique ou d’images dans le serveur Docker local.

La commande new-app tente de déterminer le type d’image spécifié dans les arguments qui lui ont été transmis. Cependant, vous pouvez explicitement dire à new-app si l’image est une image conteneur à l’aide de l’argument --docker-image ou un flux d’image en utilisant l’argument -i|--image-stream.

Note

Lorsque vous spécifiez une image de votre dépôt Docker local, vous devez vous assurer que la même image est disponible pour le service Red Hat OpenShift sur les nœuds de cluster AWS.

3.4.2.1. Docker Hub MySQL image

Créez une application à partir de l’image Docker Hub MySQL, par exemple:

$ oc new-app mysql
Copy to Clipboard Toggle word wrap

3.4.2.2. Image dans un registre privé

Créez une application à l’aide d’une image dans un registre privé, spécifiez la spécification complète de l’image du conteneur:

$ oc new-app myregistry:5000/example/myimage
Copy to Clipboard Toggle word wrap

Créez une application à partir d’un flux d’images existant et d’une balise optionnelle de flux d’images:

$ oc new-app my-stream:v1
Copy to Clipboard Toggle word wrap

3.4.3. Créer une application à partir d’un modèle

Il est possible de créer une application à partir d’un modèle précédemment stocké ou à partir d’un fichier de modèle, en spécifiant le nom du modèle en tant qu’argument. À titre d’exemple, vous pouvez stocker un exemple de modèle d’application et l’utiliser pour créer une application.

Envoyez un modèle d’application dans la bibliothèque de modèles de votre projet actuel. L’exemple suivant télécharge un modèle d’application à partir d’un fichier appelé example/sample-app/application-template-stibuild.json:

$ oc create -f examples/sample-app/application-template-stibuild.json
Copy to Clipboard Toggle word wrap

Créez ensuite une nouvelle application en faisant référence au modèle d’application. Dans cet exemple, le nom du modèle est ruby-helloworld-sample:

$ oc new-app ruby-helloworld-sample
Copy to Clipboard Toggle word wrap

Afin de créer une nouvelle application en faisant référence à un fichier modèle dans votre système de fichiers local, sans le stocker d’abord dans Red Hat OpenShift Service sur AWS, utilisez l’argument -f|-fichier. À titre d’exemple:

$ oc new-app -f examples/sample-app/application-template-stibuild.json
Copy to Clipboard Toggle word wrap

3.4.3.1. Les paramètres du modèle

Lors de la création d’une application basée sur un modèle, utilisez l’argument -p|--param pour définir les valeurs de paramètres définies par le modèle:

$ oc new-app ruby-helloworld-sample \
    -p ADMIN_USERNAME=admin -p ADMIN_PASSWORD=mypassword
Copy to Clipboard Toggle word wrap

Il est possible de stocker vos paramètres dans un fichier, puis d’utiliser ce fichier avec --param-file lors de l’instanciation d’un modèle. Lorsque vous souhaitez lire les paramètres à partir de l’entrée standard, utilisez --param-file=-. Ce qui suit est un fichier d’exemple appelé helloworld.params:

ADMIN_USERNAME=admin
ADMIN_PASSWORD=mypassword
Copy to Clipboard Toggle word wrap

Faites référence aux paramètres dans le fichier lors de l’instanciation d’un modèle:

$ oc new-app ruby-helloworld-sample --param-file=helloworld.params
Copy to Clipboard Toggle word wrap

3.4.4. Création d’applications

La nouvelle commande d’application génère Red Hat OpenShift Service sur les objets AWS qui construisent, déploient et exécutent l’application créée. Habituellement, ces objets sont créés dans le projet actuel et les noms attribués qui sont dérivés des référentiels source d’entrée ou des images d’entrée. Cependant, avec la nouvelle application, vous pouvez modifier ce comportement.

Expand
Tableau 3.2. les objets de sortie de nouvelle application
L’objetDescription

BuildConfig

L’objet BuildConfig est créé pour chaque référentiel source spécifié dans la ligne de commande. L’objet BuildConfig spécifie la stratégie à utiliser, l’emplacement source et l’emplacement de sortie de construction.

ImageStreams

Dans le cas de l’objet BuildConfig, deux flux d’images sont généralement créés. La première représente l’image d’entrée. Avec les builds source, c’est l’image du constructeur. Avec Docker builds, c’est l’image FROM. Le second représente l’image de sortie. Lorsqu’une image conteneur a été spécifiée comme entrée dans la nouvelle application, un flux d’images est également créé pour cette image.

DéploiementConfig

L’objet DeploymentConfig est créé soit pour déployer la sortie d’une build, soit pour une image spécifiée. La commande new-app crée des volumes videDir pour tous les volumes Docker spécifiés dans les conteneurs inclus dans l’objet DeploymentConfig résultant.

Le service

La commande new-app tente de détecter les ports exposés dans les images d’entrée. Il utilise le port exposé numérique le plus bas pour générer un service qui expose ce port. Afin d’exposer un port différent, une fois la nouvelle application terminée, il suffit d’utiliser la commande oc expose pour générer des services supplémentaires.

Autres

D’autres objets peuvent être générés lors de l’instanciation des modèles, selon le modèle.

3.4.4.1. Spécification des variables d’environnement

Lorsque vous générez des applications à partir d’un modèle, d’une source ou d’une image, vous pouvez utiliser l’argument -e|-env pour transmettre des variables d’environnement au conteneur d’application au moment de l’exécution:

$ oc new-app openshift/postgresql-92-centos7 \
    -e POSTGRESQL_USER=user \
    -e POSTGRESQL_DATABASE=db \
    -e POSTGRESQL_PASSWORD=password
Copy to Clipboard Toggle word wrap

Les variables peuvent également être lues à partir du fichier en utilisant l’argument --env-file. Ce qui suit est un fichier d’exemple appelé postgresql.env:

POSTGRESQL_USER=user
POSTGRESQL_DATABASE=db
POSTGRESQL_PASSWORD=password
Copy to Clipboard Toggle word wrap

Lisez les variables du fichier:

$ oc new-app openshift/postgresql-92-centos7 --env-file=postgresql.env
Copy to Clipboard Toggle word wrap

De plus, des variables d’environnement peuvent être données sur l’entrée standard en utilisant --env-file=-:

$ cat postgresql.env | oc new-app openshift/postgresql-92-centos7 --env-file=-
Copy to Clipboard Toggle word wrap
Note

Les objets BuildConfig créés dans le cadre du traitement de nouvelles applications ne sont pas mis à jour avec les variables d’environnement passées avec l’argument -e|--env ou --env-file.

Lorsque vous générez des applications à partir d’un modèle, d’une source ou d’une image, vous pouvez utiliser l’argument --build-env pour transmettre des variables d’environnement au conteneur de construction au moment de l’exécution:

$ oc new-app openshift/ruby-23-centos7 \
    --build-env HTTP_PROXY=http://myproxy.net:1337/ \
    --build-env GEM_HOME=~/.gem
Copy to Clipboard Toggle word wrap

Les variables peuvent également être lues à partir d’un fichier en utilisant l’argument --build-env-file. Ce qui suit est un exemple de fichier appelé ruby.env:

HTTP_PROXY=http://myproxy.net:1337/
GEM_HOME=~/.gem
Copy to Clipboard Toggle word wrap

Lisez les variables du fichier:

$ oc new-app openshift/ruby-23-centos7 --build-env-file=ruby.env
Copy to Clipboard Toggle word wrap

De plus, des variables d’environnement peuvent être données sur l’entrée standard en utilisant --build-env-file=-:

$ cat ruby.env | oc new-app openshift/ruby-23-centos7 --build-env-file=-
Copy to Clipboard Toggle word wrap

3.4.4.3. Spécification des étiquettes

Lorsque vous générez des applications à partir de sources, d’images ou de modèles, vous pouvez utiliser l’argument -l|--label pour ajouter des étiquettes aux objets créés. Les étiquettes facilitent la sélection, la configuration et la suppression des objets associés à l’application.

$ oc new-app https://github.com/openshift/ruby-hello-world -l name=hello-world
Copy to Clipboard Toggle word wrap

3.4.4.4. Affichage de la sortie sans création

Afin de voir une exécution à sec de la commande new-app, vous pouvez utiliser l’argument -o|--sortie avec une valeur yaml ou json. Ensuite, vous pouvez utiliser la sortie pour prévisualiser les objets créés ou rediriger vers un fichier que vous pouvez éditer. Après avoir été satisfait, vous pouvez utiliser oc create pour créer le service OpenShift Red Hat sur les objets AWS.

Afin de produire des artefacts de nouvelle application dans un fichier, exécutez ce qui suit:

$ oc new-app https://github.com/openshift/ruby-hello-world \
    -o yaml > myapp.yaml
Copy to Clipboard Toggle word wrap

Éditer le fichier:

$ vi myapp.yaml
Copy to Clipboard Toggle word wrap

Créez une nouvelle application en faisant référence au fichier:

$ oc create -f myapp.yaml
Copy to Clipboard Toggle word wrap

3.4.4.5. Création d’objets avec différents noms

Les objets créés par la nouvelle application sont normalement nommés d’après le référentiel source, ou l’image utilisée pour les générer. Il est possible de définir le nom des objets produits en ajoutant un drapeau --name à la commande:

$ oc new-app https://github.com/openshift/ruby-hello-world --name=myapp
Copy to Clipboard Toggle word wrap

3.4.4.6. Créer des objets dans un projet différent

Habituellement, new-app crée des objets dans le projet actuel. Cependant, vous pouvez créer des objets dans un projet différent en utilisant l’argument -n|--namespace:

$ oc new-app https://github.com/openshift/ruby-hello-world -n myproject
Copy to Clipboard Toggle word wrap

3.4.4.7. Créer plusieurs objets

La commande new-app permet de créer plusieurs applications spécifiant plusieurs paramètres à new-app. Les étiquettes spécifiées dans la ligne de commande s’appliquent à tous les objets créés par la commande unique. Les variables d’environnement s’appliquent à tous les composants créés à partir de sources ou d’images.

Créer une application à partir d’un référentiel source et d’une image Docker Hub:

$ oc new-app https://github.com/openshift/ruby-hello-world mysql
Copy to Clipboard Toggle word wrap
Note

Lorsqu’un référentiel de code source et une image de constructeur sont spécifiés comme arguments distincts, new-app utilise l’image du constructeur comme constructeur pour le référentiel de code source. Dans le cas contraire, spécifiez l’image de constructeur requise pour la source à l’aide du séparateur ~.

3.4.4.8. Groupement d’images et source en un seul pod

La commande new-app permet de déployer plusieurs images ensemble dans un seul pod. Afin de spécifier les images à regrouper, utilisez le séparateur +. L’argument de ligne de commande --group peut également être utilisé pour spécifier les images qui doivent être regroupées. Afin de regrouper l’image construite à partir d’un référentiel source avec d’autres images, spécifiez son image constructeur dans le groupe:

$ oc new-app ruby+mysql
Copy to Clipboard Toggle word wrap

Déployer une image construite à partir d’une source et d’une image externe ensemble:

$ oc new-app \
    ruby~https://github.com/openshift/ruby-hello-world \
    mysql \
    --group=ruby+mysql
Copy to Clipboard Toggle word wrap

Afin de rechercher des images, des modèles et d’autres entrées pour la commande oc new-app, ajoutez les drapeaux --search et --list. À titre d’exemple, pour trouver toutes les images ou modèles qui incluent PHP:

$ oc new-app --search php
Copy to Clipboard Toggle word wrap

3.4.4.10. Définir le mode d’importation

Afin de définir le mode d’importation lors de l’utilisation d’oc new-app, ajoutez le drapeau --import-mode. Ce drapeau peut être ajouté avec Legacy ou PreserveOriginal, qui offre aux utilisateurs la possibilité de créer des flux d’images en utilisant un seul sous-manifeste, ou tous les manifestes, respectivement.

$ oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest  --import-mode=Legacy --name=test
Copy to Clipboard Toggle word wrap
$ oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest  --import-mode=PreserveOriginal --name=test
Copy to Clipboard Toggle word wrap
Retour au début
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. Découvrez nos récentes mises à jour.

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 le Blog 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.

Theme

© 2025 Red Hat