OpenShift is a container application platform that allows developers to deploy, manage, and scale applications in a cloud-native environment.
At its core, OpenShift uses a master-slave architecture, with a master node responsible for controlling the cluster and one or more worker nodes that run the actual applications.
The master node is the central component of the OpenShift cluster, responsible for managing the creation, deletion, and scaling of pods, as well as maintaining the overall health and status of the cluster.
OpenShift also uses a resource-based architecture, where resources such as compute, storage, and networking are allocated to pods based on their requested needs.
Architecture
OpenShift's architecture is designed to be highly scalable and secure. It uses a master node to manage the cluster and a set of worker nodes to host applications.
The master node runs the OpenShift control plane, which includes the API server, controller manager, and scheduler. This allows for centralized management and control of the cluster.
Each worker node runs a container runtime, such as Docker, and is responsible for hosting and running applications. This allows for efficient use of resources and scalability.
Components
In a Kubernetes cluster, the master node is the host that contains the API server, controller manager server, and etcd. This master node manages the cluster's nodes and schedules pods to run on them.
The master node has components that can be run on all master hosts, including a pacemaker, which provides consensus, fencing, and service management. A pacemaker is the core technology of the High Availability Add-on for Red Hat Enterprise Linux.
The master node also has a virtual IP (VIP), which is the single point of contact for all OpenShift clients.
Cloud Platform
Cloud Platform is a fundamental component of modern architecture, enabling scalability and flexibility. It allows businesses to store and process vast amounts of data on-demand.
Cloud platforms provide a cost-effective alternative to traditional on-premise infrastructure, reducing the need for expensive hardware and maintenance. This is evident in the section on "Benefits of Cloud Computing".
Cloud services can be categorized into three main types: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). This is explained in the "Cloud Service Models" section.
Cloud platforms are particularly useful for businesses with fluctuating workloads, as they can scale up or down to meet changing demands. This is a key advantage highlighted in the "Scalability and Flexibility" section.
Cloud providers such as Amazon Web Services (AWS) and Microsoft Azure offer a wide range of services, including compute, storage, and database services. These services are detailed in the "Cloud Service Providers" section.
Cloud platforms also enable businesses to deploy applications quickly and easily, using tools such as continuous integration and continuous deployment (CI/CD). This is a key benefit of cloud computing, as explained in the "Deployment and Management" section.
Cluster Setup
In an OpenShift architecture, a cluster setup is crucial for deploying applications.
A cluster is a group of machines that work together to provide a highly available and scalable environment.
The master node is responsible for managing the cluster, while the worker nodes run the actual applications.
The OpenShift cluster can be set up in different configurations, such as a single master or a multi-master setup.
A single master setup is suitable for small-scale deployments, while a multi-master setup provides higher availability and scalability.
Cluster
When setting up a cluster, it's essential to understand the underlying architecture. Network traffic is resolved with OCI DNS, which is the first step in the process.
OCI's DNS Resolution is the foundation of the cluster's network infrastructure. This ensures that traffic is routed correctly within the cluster.
The Virtual Cloud Network (VCN) plays a crucial role in routing traffic to the cluster compute nodes. Traffic is routed to the VCN assigned to the cluster compute nodes.
Within the VCN's public subnet, an external Load Balancer routes traffic to the control plane (master) nodes of the cluster. These nodes sit within a private subnet.
The cluster's control plane compute nodes use an internal Load Balancer to communicate with the compute (worker) nodes of the cluster.
Here's a breakdown of the cluster architecture:
- Network traffic is resolved with OCI DNS.
- Traffic is routed to the VCN assigned to the cluster compute nodes.
- An external Load Balancer routes traffic to the control plane (master) nodes within the private subnet.
- An internal Load Balancer is used by the control plane compute nodes to communicate with the compute (worker) nodes.
Persistent Storage
In OpenShift, persistent storage is a must-have for any cluster setup.
Persistent storage prevents data loss by preserving data even when containers are restarted or deleted.
You can use various tools and features to handle storage needs, including network-attached storage, storage classes, and Persistent Volume Claims (PVCs).
These tools and features are designed to keep your data safe and accessible.
Here are some of the key features of persistent storage in OpenShift:
- Network-attached storage
- Storage classes
- Persistent Volume Claims (PVCs)
This allows stateful applications to be used without worrying about data loss.
All of your data is preserved and attached to containers in persistent storage, making it a crucial part of any cluster setup.
Pod and Service Management
Pods are the most compact and deployable entities within the OpenShift and Kubernetes platforms, capable of encompassing multiple containers within a shared network namespace and storage volume.
A pod can contain multiple containers, but they share the same network namespace and storage volume. This allows for efficient resource utilization and easier management of containerized applications.
Services are responsible for defining a collection of pods and establishing the means to access them, offering a network abstraction layer and implementing load balancing mechanisms to evenly distribute incoming traffic among the pods.
Here's a summary of the key concepts:
- Pods: compact and deployable entities containing multiple containers within a shared network namespace and storage volume.
- Services: define a collection of pods and provide a network abstraction layer with load balancing.
Pods
Pods are the most compact and deployable entities within the OpenShift and Kubernetes platforms. They have the capability to encompass multiple containers that operate within a shared network namespace and storage volume.
A pod represents a single unit of deployment in these platforms, making it easier to manage and scale applications. This shared network namespace allows containers within a pod to communicate with each other more efficiently.
In a pod, multiple containers can be combined to provide a single service or functionality. This is particularly useful for applications that require multiple components to work together.
Here are some key characteristics of pods:
By using pods, developers can create more efficient and scalable applications that are easier to manage and maintain.
Services
Services are responsible for defining a collection of pods and establishing the means to access them.
Services offer a network abstraction layer, which is a fancy way of saying they provide a way for pods to communicate with each other without worrying about the underlying network details.
This abstraction layer is crucial for load balancing mechanisms, which distribute incoming traffic evenly among the pods.
Services implement these load balancing mechanisms to ensure that no single pod is overwhelmed with traffic.
By doing so, services help maintain the stability and performance of the overall system.
Deployment and Configuration
Deployment and Configuration is a crucial aspect of OpenShift architecture. Deployment Configurations specify the manner in which an application is to be deployed and updated.
In OpenShift, deployment configurations are used to define how an application should be deployed. This includes specifying the container image to use, the deployment strategy, and the resources required.
Deployment Configurations are a key component of OpenShift's architecture, allowing for flexible and scalable deployment of applications. They enable developers to define how their applications should be deployed and updated.
Here are some key aspects of Deployment Configurations in OpenShift:
- Specify the manner in which an application is to be deployed and updated.
By using Deployment Configurations, developers can ensure that their applications are deployed consistently and efficiently, reducing the risk of errors and downtime.
Sources
- https://docs.oracle.com/en-us/iaas/Content/openshift-on-oci/overview.htm
- https://lenovopress.lenovo.com/lp0968-red-hat-openshift-container-platform-reference-architecture
- https://tekneed.com/what-is-openshift-openshift-architecture/
- https://www.geeksforgeeks.org/openshift-architecture/
- https://k21academy.com/openshift/openshift-architecture/
Featured Images: pexels.com