What is OpenShift?
  • Enterprise Kubernetes (K8s) + Docker
    • Docker provides abstraction for containers
    • Kubernetes provides the cluster management and orchestrates containers on mulitple hosts
  • Source code management
  • Image management and promotion
  • Application management at scale
  • Team and user tracking
    • Data about objects is stored in etcd a reliable key/value store
  • Cluster networking infrastructure

Main Features

  • Self-service platform
    • Developers can create apps from templates or their own source code repos
  • Polygot, multi-lingual support
    • NodeJs, Perl, Java etc
  • Automation
    • Automatically apply changes to source code under version control
  • User Interface in the form of a web front end and cli (oc command line client)
  • Scalability, high availability
  • Container portability using kubernetes templates
  • Open source

Core Concepts

  • Containers and images
    • Building blocks for deploying applications
  • Pods and services
    • Allow containers to communicate with each other and proxy connections
  • Projects and users
    • Provide the space and means for communities to organise and manage their content together
  • Builds and images streams
    • Build working images and react to new images
  • Deployments
    • Add expanded support for the software development and deployment lifecycle
  • Routes
    • Announce your service to the world
  • Templates
    • Allow for many objects to be created at once based on customised parameters

Openshift can be thought of as the Operating System and images as applications that you run on them. The containers are the actual running instances of those images

Architectural Overview

Standard OS Cluster is comprised of at least one (or more in HA) master node and one or more nodes

  • OCP Masters

    • API Server - Validates are configures data for pods, services and replication controllers and also assigns pods to nodes and synchronises pod information with service info
    • etcd - stores the persistent master state while other components watch etcd for changes to bring themselves to the desired state
    • Controller manager server watches etcd for changes to replication controller objects then uses the api to enforce the desired state
    • HAProxy (Optionally) - Can be used when configuring high availability masters with the native method to balance load between the api master endpoints
  • Nodes

    • Runtime environments - For containers and each node is a kubernetes cluster, and each node in a k8's cluster has the required services to be managed by the master. Nodes also have the required services to run pods
    • Docker service - Source of container images
    • Kubelet - Updates each node as specified by a container manifest - A yaml file that describes a pod. The kubelet uses the set of manifests to ensure the containers are started and that they continue to run.
    • Service proxy - Each node also runs a simple network proxy that reflects the services defined in the api on that node. This allows the node to do simple tcp and udp string forwarding across a set of backends.

OCP can create nodes from a cloud provider, from a physical system or from virtual systems and K8's interacts with node objects that are representations of these nodes. The master uses the information from node objects to validate nodes with health checks. Until that node passes the health check its ignored and the master continues checking the nodes until they are valid. As the administrator you can manage nodes in an OpenShift Container Platform Instance using the OC command line client.

Screenshot-from-2018-11-09-10-35-45

OpenShift - EX280