June 19, 2015 | Written by: Sanjay Nayak
Share this post:
As of May 23rd IBM Bluemix Container Service now provides a native Kubernetes operations experience while removing the burden of maintaining master nodes. Kubernetes itself is based on the Docker engine for managing software images and instantiating containers. Get the details.
In this post, we describe how you can quickly and continuously develop and deploy hybrid multi-tier and multi-container applications to on-premises and public clouds using IBM and Docker products.
IBM is Docker Inc.’s lead-with partner to bring containers technology to the Enterprise. IBM has integrated its UrbanCode DevOps offerings with the new Docker Trusted Registry product to enable multi-platform and multi-container deployments. Additionally, IBM is wrapping Docker Trusted Registry with its world-class support that enterprise customers highly value. Read more about IBM and Docker partnership here.
We built this hybrid and on-premises cloud deployment demo for the IBM booth at DockerCon 2015 with the following products:
An Enterprise Hybrid Cloud Application
In the demo, we describe the development and deployment of an e-commerce application (The Store) that consists of a Node.js front-end Docker container running on IBM Containers in Bluemix, and a multi-container back-end deployed with Docker Swarm on-premises. The figure below shows this hybrid architecture.
The front-end container uses the IBM Bluemix Secure Gateway Service to communicate with the back-end running in the on-premises infrastructure. As a first-class citizen in Bluemix, the container can also consume any of the other Bluemix services (such as cache, analytics, and email), as needed by the application as it evolves to meet new business requirements.
Easily configure Docker builds and deployments
UrbanCode Build and UrbanCode Deploy enhance developer productivity by enabling automated processes to quickly build and continuously deploy the application components to fully on-premises or hybrid environments. The UrbanCode products also provide easy-to-use and intuitive features for orchestration, visibility, and control of the automation processes that add value over command-line-only based workflows.
We model the Store Application in UrbanCode Deploy using the following containerized Components:
- Front-end: Node.js
- Back-end: WebSphere Application Server
- Back-end: DB2
- Back-end: MySQL
In UrbanCode Deploy, you can define different deployment Environments for an application, such as those representing on-premises, staging, production, and hybrid areas.
For the Store Application, we defined one Environment to deploy all 4 Components to an on-premises Swarm cluster, and defined another Environment to deploy the front-end container to IBM Containers in Bluemix and the three back-end containers to the on-premises Swarm cluster, as shown below.
UrbanCode Deploy also provides a graphical editor application to define the deployment processes for the Application and its Components.
Updating and deploying the application with UCD, DTR, and Bluemix
As part of the demo scenario for updating and redeploying the Store, we highlight the following DevOps process (the numbered steps correspond to the figure below).
- Developer changes the application and pushes it to the Git repository.
- UrbanCode Build is notified of the Git commit containing the updated code.
- UrbanCode Build packages the software into a new Docker image and pushes it to the on-premises Docker Trusted Registry instance.
The new UrbanCode Deploy plugin then imports the updated image version for the application component.
- UrbanCode Deploy pushes the image for the front-end component to the IBM Containers Registry in Bluemix.
- UrbanCode Deploy starts the back-end Docker containers in the on-premises Docker Swarm cluster.
UrbanCode Deploy starts the front-end Docker container on IBM Containers in Bluemix.
IBM UrbanCode Deploy provides enterprise grade automation, orchestration, management, visibility and control capabilities for the application development and deployment process, where an application can include software components hosted in bare metal, virtual machines or containers.
In the DockerCon demo recording we also show the use of an approval process in UrbanCode Deploy, which can gate the deployment of new software versions to an environment such as production only with the explicit action of a specific user role in the organization.
We showed how a multi-tiered and multi-container application could be quickly developed on-premises and continuously deployed to both an on-premises Docker Swarm cluster and an off-premises cloud environment such as IBM Containers in Bluemix. We used the enterprise features of IBM UrbanCode Build and IBM UrbanCode Deploy along with the new IBM-supported Docker Trusted Registry offering as the trusted repository for Docker images.
IBM UrbanCode products integrate with Docker Trusted Registry, as well as orchestrate and automate the deployment of multiple containers to multiple cloud environments as part of a typical DevOps pipeline. We also demonstrated how an application running in IBM Containers in Bluemix could securely connect to on-premises infrastructure using the Bluemix Secure Gateway service, with the potential to use the vast catalog of other Bluemix services.
For further details on the IBM UrbanCode Deploy plugins for Docker and IBM Containers in Bluemix, go to this link.
Please feel free to give us your feedback by posting your comments below, our aim is to help customers make the most of Docker containerization in their enterprise cloud environments!
Thanks to contributions from the following IBMers:
Sanjay Nayak, Noel Nihill, Michael Samano, Steve Hanley, Willie Duchenay, Kathy Girard