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 Copier lienLien copié sur presse-papiers!
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 Copier lienLien copié sur presse-papiers!
Créer une application à partir d’un référentiel Git dans un répertoire local:
oc new-app /<path to source code>
$ oc new-app /<path to source code>
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 Copier lienLien copié sur presse-papiers!
Créer une application à partir d’un référentiel Git distant:
oc new-app https://github.com/sclorg/cakephp-ex
$ oc new-app https://github.com/sclorg/cakephp-ex
Créer une application à partir d’un référentiel Git privé distant:
oc new-app https://github.com/youruser/yourprivaterepo --source-secret=yoursecret
$ oc new-app https://github.com/youruser/yourprivaterepo --source-secret=yoursecret
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
$ oc new-app https://github.com/sclorg/s2i-ruby-container.git \
--context-dir=2.0/test/puma-test-app
En outre, lorsque vous spécifiez une URL distante, vous pouvez spécifier une branche Git à utiliser en joignant #<branch_name> à la fin de l’URL:
oc new-app https://github.com/openshift/ruby-hello-world.git#beta4
$ oc new-app https://github.com/openshift/ruby-hello-world.git#beta4
3.4.1.3. Construire la détection de stratégie Copier lienLien copié sur presse-papiers!
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.
NoteLa 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
$ oc new-app /home/user/code/myapp --strategy=docker
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 Copier lienLien copié sur presse-papiers!
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:
Langue | Fichiers |
---|---|
|
|
| App.json, package.json |
| cpanfile, index.pl |
| compositeur.json, index.php |
| conditions.txt, setup.py |
| Gemfile, Rakefile, config.ru |
|
|
| 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
$ oc new-app myproject/my-ruby~https://github.com/openshift/ruby-hello-world.git
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
$ oc new-app openshift/ruby-20-centos7:latest~/home/user/code/my-ruby-app
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 <image>~<répository>.
L’invocation -i <image> <repository> 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 <image> --code <repository> 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 Copier lienLien copié sur presse-papiers!
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.
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 Copier lienLien copié sur presse-papiers!
Créez une application à partir de l’image Docker Hub MySQL, par exemple:
oc new-app mysql
$ oc new-app mysql
3.4.2.2. Image dans un registre privé Copier lienLien copié sur presse-papiers!
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
$ oc new-app myregistry:5000/example/myimage
3.4.2.3. Flux d’images existants et balise optionnelle de flux d’images Copier lienLien copié sur presse-papiers!
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
$ oc new-app my-stream:v1
3.4.3. Créer une application à partir d’un modèle Copier lienLien copié sur presse-papiers!
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
$ oc create -f examples/sample-app/application-template-stibuild.json
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
$ oc new-app ruby-helloworld-sample
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
$ oc new-app -f examples/sample-app/application-template-stibuild.json
3.4.3.1. Les paramètres du modèle Copier lienLien copié sur presse-papiers!
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
$ oc new-app ruby-helloworld-sample \
-p ADMIN_USERNAME=admin -p ADMIN_PASSWORD=mypassword
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
ADMIN_USERNAME=admin
ADMIN_PASSWORD=mypassword
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
$ oc new-app ruby-helloworld-sample --param-file=helloworld.params
3.4.4. Création d’applications Copier lienLien copié sur presse-papiers!
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.
L’objet | Description |
---|---|
| 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. |
| 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. |
| 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. |
| 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 Copier lienLien copié sur presse-papiers!
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
$ oc new-app openshift/postgresql-92-centos7 \
-e POSTGRESQL_USER=user \
-e POSTGRESQL_DATABASE=db \
-e POSTGRESQL_PASSWORD=password
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
POSTGRESQL_USER=user
POSTGRESQL_DATABASE=db
POSTGRESQL_PASSWORD=password
Lisez les variables du fichier:
oc new-app openshift/postgresql-92-centos7 --env-file=postgresql.env
$ oc new-app openshift/postgresql-92-centos7 --env-file=postgresql.env
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=-
$ cat postgresql.env | oc new-app openshift/postgresql-92-centos7 --env-file=-
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.
3.4.4.2. Définir les variables d’environnement de construction Copier lienLien copié sur presse-papiers!
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
$ oc new-app openshift/ruby-23-centos7 \
--build-env HTTP_PROXY=http://myproxy.net:1337/ \
--build-env GEM_HOME=~/.gem
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
HTTP_PROXY=http://myproxy.net:1337/
GEM_HOME=~/.gem
Lisez les variables du fichier:
oc new-app openshift/ruby-23-centos7 --build-env-file=ruby.env
$ oc new-app openshift/ruby-23-centos7 --build-env-file=ruby.env
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=-
$ cat ruby.env | oc new-app openshift/ruby-23-centos7 --build-env-file=-
3.4.4.3. Spécification des étiquettes Copier lienLien copié sur presse-papiers!
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
$ oc new-app https://github.com/openshift/ruby-hello-world -l name=hello-world
3.4.4.4. Affichage de la sortie sans création Copier lienLien copié sur presse-papiers!
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
$ oc new-app https://github.com/openshift/ruby-hello-world \
-o yaml > myapp.yaml
Éditer le fichier:
vi myapp.yaml
$ vi myapp.yaml
Créez une nouvelle application en faisant référence au fichier:
oc create -f myapp.yaml
$ oc create -f myapp.yaml
3.4.4.5. Création d’objets avec différents noms Copier lienLien copié sur presse-papiers!
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
$ oc new-app https://github.com/openshift/ruby-hello-world --name=myapp
3.4.4.6. Créer des objets dans un projet différent Copier lienLien copié sur presse-papiers!
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
$ oc new-app https://github.com/openshift/ruby-hello-world -n myproject
3.4.4.7. Créer plusieurs objets Copier lienLien copié sur presse-papiers!
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
$ oc new-app https://github.com/openshift/ruby-hello-world mysql
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 Copier lienLien copié sur presse-papiers!
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
$ oc new-app ruby+mysql
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
$ oc new-app \
ruby~https://github.com/openshift/ruby-hello-world \
mysql \
--group=ruby+mysql
3.4.4.9. La recherche d’images, de modèles et d’autres entrées Copier lienLien copié sur presse-papiers!
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
$ oc new-app --search php
3.4.4.10. Définir le mode d’importation Copier lienLien copié sur presse-papiers!
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
$ oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest --import-mode=Legacy --name=test
oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest --import-mode=PreserveOriginal --name=test
$ oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest --import-mode=PreserveOriginal --name=test