AWS Summit Singapore 2019 | Latest Trends for Cloud-Native Application Development on OpenShift 4
Latest trends for Cloud Native Application
Development on OpenShift 4
Stephen Bylo
Snr Specialist Solution Architect, Containers and OpenShift
April 11th 2019
OPEN HYBRID CLOUD
HYBRID CLOUD
INFRASTRUCTURE
Infrastructure software
across the 4 footprints, with
RHEL at the very core
CLOUD-NATIVE APP
PLATFORMS
Software to rapidly &
efficiently develop & deploy
apps across hybrid cloud
MANAGEMENT &
AUTOMATION
Software can simplify
management & automation
of hybrid cloud environments
THREE PILLARS OF THE RED HAT BUSINESS
CLOUD-NATIVE APP PLATFORM
Automate Kubernetes
application Operations
with DevOps in mind
Cloud-native
middleware
applications services
and service mesh
Tools and standard
processes to increase
developer productivity
on Kubernetes
Our vision is to simplify the creation of cloud-native services and
serverless functions with a rich set of components and tools
without forcing a deep knowledge of Kubernetes.
DEVELOPERS ARE KEY TO
PLATFORM ADOPTION
58%
of developers said they are
the primary decision makers in
choosing a container platform.
Source: Cloud development Survey 2017 - Evans Data Corp
DEVELOPMENT HAS CHANGED...
From local desktop, single language, and custom processes to ...
Using Many
Languages
Adopting
Containers
Moving to the
Hybrid Cloud
Source: Cloud Development Survey 2017 - Evans Data Corp
...AND HAS BROUGHT NEW CHALLENGES
Dev Tool IntegrationConfig and Setup
Source: Cloud Development Survey 2017 - Evans Data Corp
41%
Of enterprises see non-integrated
tools as an inhibitor to container
adoption.
24%
Of time spent building and
maintaining developer
environments.
Do all development
in containers
Enable developers
and teams to make
better decisions
Improve & standardize
end to end process,
not just single tasks
Reduce setup and
management time
RED HAT DEVELOPER TOOLS APPROACH
Red Hat OpenShift Hybrid Serverless
Red Hat OpenShift Knative
Function as a Service*
The leading enterprise Kubernetes platform
Automated Operations
Build and run anywhere (Hybrid Cloud)
Developer experience
APIs, CLI, service binding
Events Build Serving
Building blocks for serverless
Source-centric and container-based
Red Hat Enterprise Linux or Red Hat CoreOS
Kubernetes
Automated
Operations
Hybrid Install / Ops
Ops & Dev Consoles
Install / Upgrade
Security / Auth
Network / CNI
Storage / CSI
Istio
Operator Framework
RH MW Services
(Operator backed)
ISV Services
(Operator backed)
ODO CLI Eclipse Che
Invoker Runtime CLI API
CodeReady Workspaces
● Browser-based Web IDE + Dev
Environment in pods
● Red Hat supported Eclipse Che
● Bundled with OCP/OSD SKU
● Available on OCP and OSD
● Enabled via an operator
● RHEL 8-based stacks
(tools and runtimes)
CODEREADY WORKSPACES
Container Workspaces
Workspace replicas to end
“works on my machine” and
enable team collaboration.
A collaborative container-native development solution that
runs in OpenShift on-premises or in the cloud.
Built In Security: OpenShift running on Red Hat Linux, with development containers using secure Red Hat Linux.
DevOps Integrations
Reference developer
workspaces from any issue,
failed build, or git notification.
Protect Source Code
Full access to source code
without any of it landing on
hard-to-secure laptops.
Use It To: Simplify container-based development and increase efficiency.
Based
on
Eclipse
Che!
odo is a new CLI for OpenShift
that is tailored for developer
syntax and workflows.
Goal is to make it simple for a
developer to create an app, add
components (like a database)
and expose it without needing to
know Kubernetes.
odo is a affectionately called
“OpenShift DO!”
odo: A CLI FOR DEVELOPERS
> odo create wildfly backend
Component ‘backend’ was created.
To push source code to the component run ‘odo push’
> odo push
Pushing changes to component: backend
> odo storage create backend-store --path /data --size 100M
Added storage backend-store to backend
> odo create php frontend
Component ‘frontend’ was created.
To push source code to the component run ‘odo push’
> odo push
Pushing changes to component: frontend
> odo url create
frontend - http://frontend-myproject.192.168.99.100.nip.io
> odo watch
Waiting for something to change in /Users/tomas/odo/frontend
COMMUNITY 1.0 IN MAY
Provides a pre-built development
environment based on Red Hat
Enterprise Linux and OpenShift for
quick container-based application
development. Use with OpenShift on-
premises or cloud.
Available for:
- Linux (no VM)
- Windows (Virtualbox)
- MacOS (Virtualbox)
CODEREADY CONTAINERS
Use It To: Simplify direct-to-OpenShift development on laptops.
OpenShift 3.x: Container Development Kit (CDK)
- Linux, Windows and Mac (with VMs)
- Simplified RHEL entitlement
- Available now
OpenShift 4.x: CodeReady Containers
- Linux, Windows and Mac (with VMs)
- Toolbar widget for quick access
- Simplified upstream/downstream
- Target release: May 2019
Build / Pipelines
A pluggable model for
building artifacts, like jar
files, zips or containers
from source code.
Knative Overview - Components
Serving
An event-driven model
that serves the container
with your application and
can "scale to zero".
Eventing
Common infrastructure for
consuming and producing
events that will stimulate
applications.
"...an extension to Kubernetes exposing building blocks to build modern, source-centric, and container-
based applications that can run anywhere".
KNATIVE FOR DEVELOPERS
Knative Pipelines
A Kubernetes-native CI that utilizes
existing Kubernetes primitives to
provide you with the ability to run on-
cluster container builds from source,
test them and deploy them.
OpenShift Cloud Functions
Based on Knative, the developer
experience for OCF will be exposed
through:
- The upcoming OpenShift
DevOps console
- In CodeReady Workspaces
- Through odo developer CLI
- In plugins for other IDEs
In Development
Application-specific controllers that extend the Kubernetes
API to create, configure, and manage instances of complex
stateful applications on behalf of a Kubernetes user
OPERATORHUB
● Accessible to admins only
● Discovery/install of all optional
components and apps
● Upstream and downstream
content
● ISV partners will support their
Operators
CONFIRMED FOR 4.0
Red Hat Products
ISV Partners
Community
TYPES OF OPERATORS
● Entry point for a developer to access all services available to them
● Merges all capabilities from Operators, Service Catalog, Brokers, and S2I
DEVELOPER CATALOG CONFIRMED FOR 4.0
New Installation Process
via openshift-install
● OpenShift 4 introduces a new CLI-based installer designed to
easily provision of a “best practices” OpenShift cluster on RH
CoreOS immutable infrastructure
○ Control plane must be deployed on RH CoreOS nodes
○ Support for adding RHEL infra/worker nodes
● Simplified cluster creation with an interactive guided workflow
○ Allows for customization at each step
○ https://github.com/openshift/installer/blob/master/docs/user/customization.md
● Quickly download installer client (& token) from
https://cloud.openshift.com and run from anywhere
● Non-essential installation config options are now handled post-
install via component operator CRD’s
● Used new installations of OpenShift 4 only!
○ Does NOT support installing or upgrading of OCP 3.x clusters!
$ ./openshift-install create cluster
? SSH Public Key /Users/<userid>/.ssh/id_rsa.pub
? Platform aws
? Region us-west-2
? Base Domain openshift.com
? Cluster Name ocp
? Pull Secret [? for help]
*************************************************************
INFO Creating cluster...
INFO Waiting up to 30m0s for the Kubernetes API...
INFO API v1.11.0+c69f926354 up
INFO Waiting up to 30m0s for the bootstrap-complete event...
INFO Destroying the bootstrap resources...
INFO Waiting up to 10m0s for the openshift-console route to be created...
INFO Install complete!
INFO Run 'export KUBECONFIG=<your working directory>/auth/kubeconfig' to
manage the cluster with 'oc', the OpenShift CLI.
INFO The cluster is ready when 'oc login -u kubeadmin -p <provided>' succeeds
(wait a few minutes).
INFO Access the OpenShift web-console here: https://console-openshift-
console.apps.ocp.openshift.com
INFO Login to the console with user: kubeadmin, password: <provided>
Documentation: https://github.com/openshift/training/
openshift-install is downloadable
from https://cloud.openshift.com!
● “Over-the-air” updates can be performed from either OpenShift Cluster Console: “Administration→Cluster
Settings” menu or Red Hat Cloud web interface at https://cloud.openshift.com
● Update images are comprised of top level controller manifests, roles, and other resources necessary to update a
cluster to a particular version
○ Bundled as a container image to avoid the need for a separate content delivery mechanism
Over-the-air Updates
Air-gapped Environments
Disconnected Installation & Updating
● Support for installing and updating of OpenShift clusters in air-gapped environments is tentatively planned for
4.2; final design still under discussion and subject to change!
● Admin first need to mirror installation and update payload images to a local container registry, then openshift-
install and ‘oc adm upgrade’ can be configured to leverage the offline content
○ RH CoreOS images for AWS will also need to be copied to a local S3 bucket and AMI ID defined in install-config
Admin
Local Container
Registry
Container
Registry
# mirror update image:
$ oc adm release mirror --from=<rht repo:version>
--to=<local repo:version>
# provide cluster with update image to update to:
$ oc adm upgrade --to-mirror=<local repo:version>
Local Copy of
Update Image
Air-gapped
OpenShift Cluster
Red Hat sourced
Update Image
Mirrored to
local registry
Cluster
updated locally
Customer Cluster
OpenShift Hive
API Driven Multi-cluster Provisioning & Lifecycle Management
● Reliably provision/deprovision, upgrade, & configure OpenShift 4 clusters
○ 4.1: Internal only release
■ Initial support for OpenShift deployment on AWS only.
■ Primary focus supporting Dedicated clusters
and the new UHC Portal/API.
■ May be used to drive cluster creation for CI.
● Leverages:
○ openshift-install - Uses CLI to launch clusters in the public cloud
○ Kubernetes Cluster API - Declarative, Kubernetes-style APIs for
cluster creation, configuration, and management
○ Kubernetes Federation - Makes it easy
to manage multiple clusters
● Working code & documentation now available:
○ https://github.com/openshift/hive Hive
Future
Deliverable