OpenShift on Azure

Problem Statement

Client had monolithic applications running on Virtual Machine on public cloud. They wished to reduce the time to market duration of their product, by making the development and deployment process quick. Client was also interested to have automated, highly available and easy maintainable setup.

Business Objective

  • Reduce time to market for the product
  • Efficient way to manage the complete infra structure
    Automate the complete setup
  • Scale at need
  • High Available setup available in public cloud

Technical Objective

  • OpenShift Container Platform was the best chosen option due to ease of accelerating the development and deployment process.
  • OpenShift horizontal pod autoscaler helped in scaling on demand, when threshold was hit
  • OpenShift was deployed on one of the most popular public cloud, Microsoft Azure
  • Complete provisioning and configuration management was automated using Ansible
  • OpenShift also provided features for easy life-cycle management

Solution

Have a OpenShift Cluster running on Azure cloud composed of:

  • 3 x Masters – with HA Load Balancer
  • 2 x Infra Nodes – with HA Load Balancer
  • N x App Nodes
  • Shared Object Storage for Registry
  • Block storage as persistent volume claims for the containers

Architecture Diagram

Design Factor

  • OpenShift offloaded the authentication process completely to Azure AD.
  • The OpenShift Container Platform master component such as etcd, API server, Web console and controller manager server were hosted by mater nodes.
  • There were 3 instances of master node deployed to attain high availability of OpenShift Controller node
  • Infrastructure node instances were just like regular OCP nodes but with a different label so that they were used to host components like OpenShift Container Platform router and OpenShift Container Platform integrated registry.
  1. Azure Blob storage was used by Infra nodes so that multiple pods can access the registry at the same time. 
  2. Registry was scaled to 2 pods to achieve high availability and load balancing. 
  3. OpenShift Container Platform metrics were utilised for configuring auto scaling of pods based on the threshold. 
  • The application nodes were used to deploy containers by the users. Azure specific storage such as Azure VHD was be assigned to containers using persistent volume claims. 
  • External load balancer provided access to the OpenShift Container Platform API and web console from outside the cluster 
  • Router load balancer came into play when application was accessed from outside the cluster. 

Deployment of OpenShift on Azure was classified into 3 major steps: 

  • Step 1: Provisioning VMs in Azure cloud 
  • Step 2: Installing OpenShift Container Platform on Azure. 
  • Step 3: Post deployment tasks

Step 1: Provisioning of the environment was done using ARM templates provided in  openshift-ansible-contrib git repository. 

Step 2: Installation of OpenShift was done using the Ansible playbooks. In this step inventory was created and parameters were set to create the cluster. It also deployed registry and router by end of this step. 

Step 3: Verification of the cluster set up and Single sign-on configuration using Azure Active directory was done in this phase. 

Conclusion

By implementing this architecture client could accelerate their development and deployment process. Containerisation of the application helped them follow agile methodology and so helped them do continuous integration and deployment. As Ansible is used for deploying OpenShift the complete process was automated, which reduced the operational overhead. OpenShift’s developer and operations centric tools helped them achieve scaling on need and long-term life-cycle management.

Quick Inquiry

Fill out my online form.