2.7. Creating an application with a database
This example describes how to deploy and connect a database to a front-end application.
2.7.1. Prerequisites 复制链接链接已复制到粘贴板!
-
odois installed. -
occlient is installed. - You have a running cluster. Developers can use CodeReady Containers (CRC) to deploy a local cluster quickly.
The Service Catalog is installed and enabled on your cluster.
注意Service Catalog is deprecated on OpenShift Container Platform 4 and later.
2.7.2. Creating a project 复制链接链接已复制到粘贴板!
Create a project to keep your source code, tests, and libraries organized in a separate single unit.
Procedure
Log in to an OpenShift Container Platform cluster:
$ odo login -u developer -p developerCreate a project:
$ odo project create myprojectExample output
✓ Project 'myproject' is ready for use ✓ New project created and now using project : myproject
2.7.3. Deploying the front-end component 复制链接链接已复制到粘贴板!
To create and deploy a front-end component, download the Node.js application and push the source code to your cluster with odo.
Procedure
Download the example front-end application:
$ git clone https://github.com/openshift/nodejs-ex frontendChange the current directory to the front-end directory:
$ cd frontendList the contents of the directory to see that the front end is a Node.js application.
$ lsExample output
README.md openshift server.js views helm package.json tests注意The front-end component is written in an interpreted language (Node.js); it does not need to be built.
Create a component configuration of Node.js component-type named
frontend:$ odo create nodejs frontendExample output
✓ Validating component [5ms] Please use `odo push` command to create the component with source deployedCreate a URL to access the frontend interface.
$ odo url create myurlExample output
✓ URL myurl created for component: nodejs-nodejs-ex-pmdpPush the component to the OpenShift Container Platform cluster.
$ odo pushExample output
Validation ✓ Checking component [7ms] Configuration changes ✓ Initializing component ✓ Creating component [134ms] Applying URL changes ✓ URL myurl: http://myurl-app-myproject.192.168.42.79.nip.io created Pushing to component nodejs-nodejs-ex-mhbb of type local ✓ Checking files for pushing [657850ns] ✓ Waiting for component to start [6s] ✓ Syncing files to the component [408ms] ✓ Building component [7s] ✓ Changes successfully pushed to component
2.7.4. Deploying a database in interactive mode 复制链接链接已复制到粘贴板!
odo provides a command-line interactive mode which simplifies deployment.
Procedure
Run the interactive mode and answer the prompts:
$ odo service createExample output
? Which kind of service do you wish to create database ? Which database service class should we use mongodb-persistent ? Enter a value for string property DATABASE_SERVICE_NAME (Database Service Name): mongodb ? Enter a value for string property MEMORY_LIMIT (Memory Limit): 512Mi ? Enter a value for string property MONGODB_DATABASE (MongoDB Database Name): sampledb ? Enter a value for string property MONGODB_VERSION (Version of MongoDB Image): 3.2 ? Enter a value for string property VOLUME_CAPACITY (Volume Capacity): 1Gi ? Provide values for non-required properties No ? How should we name your service mongodb-persistent ? Output the non-interactive version of the selected options No ? Wait for the service to be ready No ✓ Creating service [32ms] ✓ Service 'mongodb-persistent' was created Progress of the provisioning will not be reported and might take a long time. You can see the current status by executing 'odo service list'
Your password or username will be passed to the front-end application as environment variables.
2.7.5. Deploying a database manually 复制链接链接已复制到粘贴板!
List the available services:
$ odo catalog list servicesExample output
NAME PLANS django-psql-persistent default jenkins-ephemeral default jenkins-pipeline-example default mariadb-persistent default mongodb-persistent default mysql-persistent default nodejs-mongo-persistent default postgresql-persistent default rails-pgsql-persistent defaultChoose the
mongodb-persistenttype of service and see the required parameters:$ odo catalog describe service mongodb-persistentExample output
*********************** | ***************************************************** Name | default ----------------- | ----------------- Display Name | ----------------- | ----------------- Short Description | Default plan ----------------- | ----------------- Required Params without a | default value | ----------------- | ----------------- Required Params with a default | DATABASE_SERVICE_NAME value | (default: 'mongodb'), | MEMORY_LIMIT (default: | '512Mi'), MONGODB_VERSION | (default: '3.2'), | MONGODB_DATABASE (default: | 'sampledb'), VOLUME_CAPACITY | (default: '1Gi') ----------------- | ----------------- Optional Params | MONGODB_ADMIN_PASSWORD, | NAMESPACE, MONGODB_PASSWORD, | MONGODB_USERPass the required parameters as flags and wait for the deployment of the database:
$ odo service create mongodb-persistent --plan default --wait -p DATABASE_SERVICE_NAME=mongodb -p MEMORY_LIMIT=512Mi -p MONGODB_DATABASE=sampledb -p VOLUME_CAPACITY=1Gi
Link the database to the front-end service:
$ odo link mongodb-persistentExample output
✓ Service mongodb-persistent has been successfully linked from the component nodejs-nodejs-ex-mhbb Following environment variables were added to nodejs-nodejs-ex-mhbb component: - database_name - password - uri - username - admin_passwordSee the environment variables of the application and the database in the pod:
Get the pod name:
$ oc get podsExample output
NAME READY STATUS RESTARTS AGE mongodb-1-gsznc 1/1 Running 0 28m nodejs-nodejs-ex-mhbb-app-4-vkn9l 1/1 Running 0 1mConnect to the pod:
$ oc rsh nodejs-nodejs-ex-mhbb-app-4-vkn9lCheck the environment variables:
sh-4.2$ envExample output
uri=mongodb://172.30.126.3:27017 password=dHIOpYneSkX3rTLn database_name=sampledb username=user43U admin_password=NCn41tqmx7RIqmfv
Open the URL in the browser and notice the database configuration in the bottom right:
$ odo url listExample output
Request information Page view count: 24 DB Connection Info: Type: MongoDB URL: mongodb://172.30.126.3:27017/sampledb
2.7.7. Deleting an application 复制链接链接已复制到粘贴板!
Deleting an application will delete all components associated with the application.
Procedure
List the applications in the current project:
$ odo app listExample output
The project '<project_name>' has the following applications: NAME appList the components associated with the applications. These components will be deleted with the application:
$ odo component listExample output
APP NAME TYPE SOURCE STATE app nodejs-nodejs-ex-elyf nodejs file://./ PushedDelete the application:
$ odo app delete <application_name>Example output
? Are you sure you want to delete the application: <application_name> from project: <project_name>-
Confirm the deletion with
Y. You can suppress the confirmation prompt using the-fflag.