User Tools

Site Tools


openshift

Workflow comparisson Virtual vs. PAAS

Physical

  1. Have idea
  2. Get budget
  3. Submit hardware acquisition request
  4. Wait
  5. Get hardware
  6. Rack and stack hardware
  7. Install operating system
  8. Install OS patches/fix-packs
  9. Create user accounts
  10. Deploy framework/application server
  11. Deploy testing tools
  12. Test testing tools
  13. Code
  14. Configure production servers (buy them if needed)
  15. Push to production
  16. Launch
  17. Order more servers to meet demand
  18. Wait
  19. Deploy new servers
  20. Etc.

Virtual

  1. Have idea
  2. Get budget
  3. Submit VM request
  4. Wait
  5. Deploy framework/application server
  6. Deploy testing tools
  7. Test testing tools
  8. Code
  9. Configure production VMs
  10. Push to production
  11. Launch
  12. Order more production VMs to meet demand
  13. Wait
  14. Deploy application to new VMs
  15. Etc.

PAAS

  1. Have idea
  2. Get budget
  3. Code
  4. Test
  5. Launch
  6. Scale automatically

OpenSHift Architecture

  • Only x86 platforms supported
    • OpenShift runs on either RHEL or Red Hat Enterprise Atomic Host
      • Nodes are instances of RHEL 7 or Red Hat Atomic Host with OpenShift installed
        • Nodes are orchestrated by masters
  • Hybrid approach supports deploying OpenShift instances across all of these infrastructures
  • OpenShift is supported anywhere that Red Hat Enterprise Linux is
Scheduler

Determines placement of new pods onto nodes within OpenShift cluster. Select best-fit node

  • Sort nodes based on scores
  • Select node with highest score to host pod
  • If multiple nodes have same high score, select one at random
Replication ControllerEnsures that specified number of pod replicas running at all times. Adds or deletes pods according to life signs.
OpenShift Networking
  • Container networking based on integrated Open vSwitch
  • Platform-wide routing tier
  • Ability to plug in third-party software-defined network (SDN) solutions
  • Integrated with DNS and existing routing and load balancing

Scenario: External client points browser to myApp.cloudapps.ml.opentlc.com:80

  • DNS resolves to host running router container
  • Using openshift-sdn overlay network: Router checks if route exists for request
  • Proxies request to internal pod IP:port (10.1.2.3:8080)

Scenario: Pod transmits packet to pod in another node host in OpenShift environment

  • Container sends packet to target pod using IP 10.1.2.3:8080
  • OpenShift node uses Open vSwitch to route packet to OpenShift node hosting target container
  • Receiving node routes packet to target container
Route

Exposes service by giving it externally reachable hostname (FQDN).

Router
  • Router is ingress point for traffic destined for OpenShift-hosted pods
  • The Router serves routes - consumes a defined route and endpoints, identified by a service.
  • The Router serves the routing layer.
  • Router container can run on any node host in environment
Services
  • Services often used to provide permanent IP to group of similar pods
  • Internally, when accessed, services load-balance and proxy to an appropriate backing pod
  • Backing pods can be added to or removed from service arbitrarily while service remains consistently available
    • Enables anything that depends on service to refer to it at consistent internal address
XXX

Container Deployment Workflow

Scenario: New application requested via CLI, web console, or API

OpenShift API/authentication layer:
  • Approves request, considering user’s permissions, resource quotas, and other information
  • Creates supporting resources: deployment configuration, replication controllers, services, routes, and persistent storage claims
OpenShift scheduling layer:
  • Designates node host for each pod, considering resources' availability and load and application spread between nodes for application high availability
OpenShift node:
  • Pulls down image to be used from external or integrated registry
  • Starts container (pod) on node

OpenShift CICD

Update Rollout strategies
Rolling UpdatePre life cycle hook. Scale up/down new/old pods one by one. Wait for readiness checks. Post life cycle hooks. No downtime.
Recreate Scale down all old. Scale up all new. Has downtime.
Concepts
BuildConfig

Definition of the entire build process as code.

Build Strategies

Build strategies for building artifacts. Artifact resulting from build depends on builder used to create it.

  • Docker build
  • Source-to-Image (S2I) build
  • Custom build
  • Pipeline build (Tech-preview in OCP 3.3)

For Docker and S2I builds, resulting objects are runnable images. For custom builds, resulting object are whatever builder image author specified.

Source-to-Image (S2I) Build
  • Source-to-Image (S2I) is tool for building reproducible Docker images
  • Produces ready-to-run images by injecting application source into Docker image and assembling new Docker image
  • New image incorporates base image (builder) and built source and is ready to use with docker run command

Reproducability. S2I supports incremental builds, which reuse previously downloaded dependencies, previously built artifacts, etc.

Security. Builds and runs are executed as root, which may be exposed. S2I can execute commands with less rights.

Image Stream

Docker images from different sources, identified by the same tag.
Can be monitored, to trigger a build as a result.

Jenkins pipeline
  • A Jenkins can be used to build artifacts via OPenShift.
  • A Jenkins strategy is chose in BuildConfig
  • A Jenkins-Pipeline is defined as code in BuildConfig

During the build the following will then happen

  • A Jenkins will be started in a container and reused by all Jobs with the Jenkins-build-strategy.
  • A Pipeline will be created.
  • An image will be build.
  • An image will be put into the registry.
  • Then optionally, via trigers, the pod can be replaced by new pods with the container from new image.

Build via OpenShift pipelines:

More: https://developers.redhat.com/blog/2017/01/09/using-pipelines-in-openshift-3-3-for-cicd/

XXX
XXX
XXX
XXX

API


# list pods
oc get pod
openshift.txt · Last modified: 2020/12/27 20:35 by 127.0.0.1