Giter Site home page Giter Site logo

test-ok1's Introduction

Introduction

Problem Setting

A developer would like to configure an application or the application runtime deployed to Openshift.

Description

This project demonstrates application and runtime configuration leveraging external configuration sources. Alongside the basic means to set up a configmap and use with a specific runtime, this quickstart also demonstrates how changes to the configuration can be applied to services already deployed to openshift.

Concepts & Architectural Patterns

ConfigMap, Application Configuration, Rollout of changes

Prerequisites

To get started with these quickstarts you'll need the following prerequisites:

Name Description Version
java Java JDK 8
maven Apache Maven 3.2.x
oc OpenShift Client >1.4.1
git Git version management 2.x

Build the Project

The project uses WildflySwarm to create and package the service.

Execute the following maven command:

mvn clean install

Launch and test

  1. Run the following command to start the maven goal of WildFlySwarm:

    mvn wildfly-swarm:run
    
  2. If the application launched without error, use the following command to access the REST endpoint exposed using curl or httpie tool:

    http http://localhost:8080/api/greeting
    curl http://localhost:8080/api/greeting
    

It should return the value Hello, World!, which uses the default greeting template due to the lack of a configmap. But in the next step, running on openshift, we'll supply a configmap with a message property.

OpenShift Online

Login and prepare your openshift account

  1. Go to OpenShift Online to get the token used by the oc client for authentication and project access.

  2. Using the oc client, execute the following command to replace MYTOKEN with the one from the Web Console:

    oc login https://api.dev-preview-int.openshift.com --token=MYTOKEN
    
  3. To allow the WildFly Swarm application running as a pod to access the Kubernetes Api to retrieve the Config Map associated to the application name of the project swarm-rest-configmap, the view role must be assigned to the default service account in the current project:

    oc policy add-role-to-user view -n $(oc project -q) -z default
    

Working with a service that relies on an external configuration source

  1. Deploy the configmap to openshift

    oc create configmap app-config --from-file=app-config.yml		
    

    One you've deployed the configmap, verify it's contents using:

    oc get configmap app-config -o yaml
    

    This will return something similar to:

greeting: message: Hello World! swarm: logging: INFO
```

  1. Next, use the Fabric8 Maven Plugin to launch the S2I process on the OpenShift Online machine & start the application.

    mvn clean fabric8:deploy -Popenshift
    
  2. Get the route url.

    oc get route/wildfly-swarm-configmap
    NAME              HOST/PORT                                          PATH      SERVICE                TERMINATION   LABELS
    wildfly-swarm-configmap   <HOST_PORT_ADDRESS>             wildfly-swarm-configmap:8080
    
  3. Use the Host or Port address to access the service.

    http http://<HOST_PORT_ADDRESS>/api/greeting    
    

    Here the response from the REST endpoint should use the greeting template defined in our configmap:

    {
    "id": 1,
    "message": "Hello World!"
    }
    

Update the configuration and rollout the changes

  1. Update the configuration source that's already deployed to Openshift:

    oc edit configmap app-config
    

    Change the value for the greeting.message key to Bonjour! and save the file. The changes will be propagated to Openshift.

  2. Instruct Openshift to rollout a new version of your services to pick up the changes in the configmap:

    oc rollout latest dc/wildfly-swarm-configmap
    
    

    Wait for the pods to become ready:

    oc get pods -w
    
  3. Verify that the changes have been picked up by the Wildfly Swarm service implementation:

    http http://localhost:8080/api/greeting
    curl http://localhost:8080/api/greeting
    

    This should return the value you've chosen for the key greeting.message, i.e.:

    {
    "id": 1,
    "message": "Bonjour!"
    }
    

Congratulations! You've just finished your first service configuration quickstart.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.