Bookmark this page

Red Hat OpenShift Concepts and Terminology

Objectives

  • Describe the concepts and terminology used when deploying applications to Red Hat OpenShift.

Kubernetes Concepts

The following list contains some Kubernetes concepts and terminology that you might find useful throughout this course.

Pods

A Pod is a collection of containers that share the same storage and network. Pods share the context by using Linux namespaces, cgroups, and other isolation technologies.

Each container in a pod usually contains applications that are more or less logically coupled.

ReplicaSet

The ReplicaSet object indicates the number of pods that are available to attend a request. This object also ties all the pods replicas together so you can operate on them at the same time.

Deployments

A Deployment contains the desired state of an application's pods, and uses a ReplicaSet to achieve this desired state. Some changes in the application's state can be: creating pods, declaring new state of pods, changing the number of pods, or rolling back to a previous Deployment revision.

Service

A Kubernetes Service exposes a set of pods over a network. This abstraction allows internal or external clients of the application running on said pods to connect to them regardless of the actual state of the replicas or varying network IPs.

Ingress

An Ingress exposes services inside the cluster to outside clients by using HTTP or HTTPS. A service ingress can also provide external URLs, load balancing, name-based virtual hosting, or SSL/TLS termination.

Namespace

A Namespace can enable you to isolate resources, encapsulating objects under a unique name, and providing resource quotas.

Custom Resource

Custom Resource (CR) allows extending the Kubernetes API. Custom resources represent entities other than the default ones in Kubernetes. Additionally, Custom resources interact with other cluster objects, regardless of whether those other objects are default or custom.

Operator

An Operator is a custom Kubernetes controller that uses custom resources to deploy and manage applications. It takes high-level user configuration and acts to make the cluster match the desired state.

Service Account

A Service Account is a special kind of account that does not correspond to an actual user but it is used internally by cluster tools. It is useful for pods to connect to objects in the cluster such as CI/CD pipelines, secrets, or external (to the namespace or to the cluster) resources.

Storage Class

A Storage Class is a name that identifies a particular kind of storage defined by the cluster administrator. A storage class also defines its own characteristics, be it backup policies or service level quality, or any other specification the admin might choose.

Persistent Volume

A Persistent Volume (PV), is a persistence storage unit offered by the cluster, independent of cluster nodes. This object holds the information regarding the size, the type, or the ability to share the storage.

Persistent Volume Claim

Users claim the storage that a PV offers by using a Persistent Volume Claim (PVC). A PVC is a request to access a specific kind of storage of the required size. After acquiring the PVC, the storage is attached to the pods claiming it.

Red Hat OpenShift Extends Kubernetes Red Hat OpenShift

In the following list you can find how Red Hat OpenShift extends the basic functionality of Kubernetes:

DeploymentConfig

The DeploymentConfig object is a Red Hat OpenShift extension of the Kubernetes Deployment that favors consistency over availability. Additionally, DeploymentConfig provides automatic rollbacks, pausing roll outs, lifecycle hooks, and custom deployment strategies.

Build

A Build is the generic process of taking an input source, such as the source code of an application and producing a usable resource as the output, such as a runnable image.

BuildConfig

An object that defines a build process. A build object requires, at least, the source input of the build, the build strategy that defines how to build the input, and where to store the output of the process.

Route

A Route serves a similar purpose to the Kubernetes ingress but provides additional features: TLS passthrough and re-encryption, wildcard domains, pattern-based domains, and splitting traffic.

Project

A Project extends Kubernetes namespaces by adding templated project creation and finer control over user permissions.

Internal DNS

Red Hat OpenShift provides an internal DNS server that adds automatic DNS service resolution for services in the same project.

Security Context Constrains

In addition to hardening and providing finer role-based user control, Red Hat OpenShift provides Security Context Constrains (SCC), which control pod permissions.

Explaining Objects with the CLI

The Red Hat OpenShift Container Platform offers the oc CLI tool to interact with the cluster. The oc CLI includes the explain command, which provides information about Kubernetes and OpenShift objects.

For example, with the oc explain pods command you get the following output:

[student@workstation ~]$ oc explain pods
KIND:     Pod
VERSION:  v1

DESCRIPTION:
     Pod is a collection of containers that can run on a host. This resource is
     created by clients and scheduled onto hosts.

FIELDS:
   apiVersion	<string>
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

...output omitted...

References

For more information about the differences between Deployment and DeploymentConfig, refer to the Comparing Deployment and DeploymentConfig section in the Understanding Deployments and DeploymentConfigs objects chapter in the Red Hat OpenShift Container Platform 4.12 Deployments documentation at https://access.redhat.com/documentation/en-us/openshift_container_platform/4.12/html-single/building_applications/index#deployments-comparing-deploymentconfigs_what-deployments-are

For more information about the Red Hat OpenShift API, refer to the API reference chapter in the Red Hat OpenShift Container Platform 4.12 Deployments documentation at https://docs.openshift.com/container-platform/4.12/rest_api/understanding-api-support-tiers.html

Revision: do288-4.12-0d49506