An image contains the code used to create a deployment. Then, a deployment can be created from an image, which should then create a replica set (which is the number of pods that should be created), and then the pods should be created.
If you are not familiar with the oc command, refer to OpenShift - Getting Started with the oc command.
The oc new-app or oc create command can be used to deploy an application from GitHub to OpenShift.
There are various ways to deploy an app.
dnf install git
In this example, cakephp (which is an HTTPD web server with PHP support) from GitHub (cakephp-ex.git) will be deployed using the oc new-new command. If the --name option is not used, the name of the pod would be cakephp-ex. The --name option cab be used to give the pod a specific name, such as just "php".
oc new-app https://github.com/sclorg/cakephp-ex --name php
Or, you could create a JSON file such as cakephp.json that contains the JSON needed to deploy the app and then use the oc create command with the -f or --filename option to deploy the app.
oc create --filename cakephp.json
If something like this is returned . . .
error: unable to load template file "https://github.com/sclorg/nodejs-ex": error parsing https://github.com/sclorg/nodejs-ex: error converting YAML to JSON: yaml: line 28: mapping values are not allowed in this context error: local file access failed with: stat https://github.com/sclorg/nodejs-ex: no such file or directory error: unable to locate any images in image streams, templates loaded in accessible projects, template files, local docker images with name "https://github.com/sclorg/nodejs-ex" Argument 'https://github.com/sclorg/nodejs-ex' was classified as an image, image~source, or loaded template reference. The 'oc new-app' command will match arguments to the following types: 1. Images tagged into image streams in the current project or the 'openshift' project - if you don't specify a tag, we'll add ':latest' 2. Images in the container storage, on remote registries, or on the local container engine 3. Templates in the current project or the 'openshift' project 4. Git repository URLs or local paths that point to Git repositories --allow-missing-images can be used to point to an image that does not exist yet.
you can try including the --image-steam and --allow-missing-imagestream-tags options.
oc new-app https://github.com/sclorg/nodejs-ex --name nodejs --image-stream="openshift/nodejs" --allow-missing-imagestream-tags
If the deployment was successful, the oc get deployments command should return something like this.
~]# oc get deployments NAME READY UP-TO-DATE AVAILABLE AGE php 1 1 8d
While the pod is being built, the oc get pods command should display something like this. Notice "-build" in name.
NAME READY STATUS RESTARTS AGE php-ex-1-build 0/1 ContainerCreating 0 5s
Once the build has completed successfully, the following should be displayed.
NAME READY STATUS RESTARTS AGE php-ex-1-build 1/1 Running 0 1m
Next, the deploy pod should be create. One the deploy has completed successfully, the following should be displayed.
NAME READY STATUS RESTARTS AGE php-ex-1-deploy 1/1 Running 0 2m
If there is some issue with the build or deploy, something like this should be displayed.
NAME READY STATUS RESTARTS AGE php-ex-1-build 0/1 Init:0/2 0 15s
If the build pod fails to initialize, something like this should be displayed.
NAME READY STATUS RESTARTS AGE php-ex-1-build 0/1 Init:Error 0 4m
In this scenario, the oc describe pod command can be used to display the pod events.
oc describe pod/php-ex-1-build
Here is a sample of what could possibly be included in the output.
Status: Failed State: Terminated Reason: Error Message: Cloning "https://github.com/sclorg/cakephp-ex" ... WARNING: timed out waiting for git server, will wait 1m4s WARNING: timed out waiting for git server, will wait 4m16s error: fatal: unable to access 'https://github.com/sclorg/cakephp-ex/': Failed connect to github.com:443; Connection timed out
In this scenario, if you are behind a proxy server, you could use the git config command to instruct git to use your proxy server.
git config --global http.proxy http://username:firstname.lastname@example.org:80
Once the status of the pod is Running, the oc status command can be used.
Something like this should be displayed.
svc/php - 10.15.152.137 ports 8080, 8443 dc/httpd deploys openshift/php:7.1 deployment #1 running for about a minute - 0/1 pods 3 infos identified, use 'oc status --suggest' to see details.