openshift/origin

Name: origin

Owner: OpenShift

Description: Enterprise Kubernetes for Developers

Created: 2014-07-30 20:04:05.0

Updated: 2018-01-18 14:08:49.0

Pushed: 2018-01-18 19:19:09.0

Homepage: http://www.openshift.org

Size: 919713

Language: Go

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

OpenShift Application Platform

Go Report Card GoDoc Travis Jenkins Join the chat at freenode:openshift-dev Licensed under Apache License version 2.0

OpenShift Origin is a distribution of Kubernetes optimized for continuous application development and multi-tenant deployment. OpenShift adds developer and operations-centric tools on top of Kubernetes to enable rapid application development, easy deployment and scaling, and long-term lifecycle maintenance for small and large teams.

Watch the full asciicast

Features:

Learn More:

For questions or feedback, reach us on IRC on #openshift-dev on Freenode or post to our mailing list.

Getting Started
Installation

If you have downloaded the client tools from the releases page, place the included binaries in your PATH.

The latest OpenShift Origin images are published to the Docker Hub under the openshift account at https://hub.docker.com/u/openshift/. We use a rolling tag system as of v3.9, where the :latest tag always points to the most recent alpha release on master, the v3.X tag points to the most recent build for that release (pre-release and post-release), and v3.X.Y is a stable tag for patches to a release.

Concepts

OpenShift builds a developer-centric workflow around Docker containers and Kubernetes runtime concepts. An Image Stream lets you easily tag, import, and publish Docker images from the integrated registry. A Build Config allows you to launch Docker builds, build directly from source code, or trigger Jenkins Pipeline jobs whenever an image stream tag is updated. A Deployment Config allows you to use custom deployment logic to rollout your application, and Kubernetes workflow objects like DaemonSets, Deployments, or StatefulSets are upgraded to automatically trigger when new images are available. Routes make it trivial to expose your Kubernetes services via a public DNS name. As an administrator, you can enable your developers to request new Projects which come with predefined roles, quotas, and security controls to fairly divide access.

For more on the underlying concepts of OpenShift, please see the documentation site.

OpenShift API

The OpenShift API is located on each server at https://<host>:8443/apis. OpenShift adds its own API groups alongside the Kubernetes APIs. For more, see the API documentation.

Kubernetes

OpenShift extends Kubernetes with security and other developer centric concepts. Each OpenShift Origin release ships slightly after the Kubernetes release has stabilized. Version numbers are aligned - OpenShift v3.9 is Kubernetes v1.9.

If you're looking for more information about using Kubernetes or the lower level concepts that Origin depends on, see the following:

What can I run on OpenShift?

OpenShift is designed to run any existing Docker images. Additionally, you can define builds that will produce new Docker images using a Dockerfile.

For an easier experience running your source code, Source-to-Image (S2I) allows developers to simply provide an application source repository containing code to build and run. It works by combining an existing S2I-enabled Docker image with application source to produce a new runnable image for your application.

You can see the full list of Source-to-Image builder images and it's straightforward to create your own. Some of our available images include:

Your application image can be easily extended with a database service with our database images:

What sorts of security controls does OpenShift provide for containers?

OpenShift runs with the following security policy by default:

Many Docker containers expect to run as root (and therefore edit all the contents of the filesystem). The Image Author's guide gives recommendations on making your image more secure by default:

* Don't run as root
* Make directories you want to write to group-writable and owned by group id 0
* Set the net-bind capability on your executables if they need to bind to ports < 1024

If you are running your own cluster and want to run a container as root, you can grant that permission to the containers in your current project with the following command:

# Gives the default service account in the current project access to run as UID 0 (root)
oc adm add-scc-to-user anyuid -z default 

See the security documentation more on confining applications.

Support for Kubernetes Alpha Features

Some features from upstream Kubernetes are not yet enabled in OpenShift, for reasons including supportability, security, or limitations in the upstream feature.

Kubernetes Definitions:

OpenShift uses these terms in the same fashion as Kubernetes, and adds four more:

The list of features that qualify under these labels is described below, along with additional context for why.

Feature | Kubernetes | OpenShift | Justification ——- | ———- | ——— | ————- Custom Resource Definitions | GA (1.9) | GA (3.9) | Stateful Sets | GA (1.9) | GA (3.9) | Deployment | GA (1.9) | GA (1.9) | Replica Sets | GA (1.9) | GA (3.9) | Replica Sets perform the same function as Replication Controllers, but have a more powerful label syntax. Both ReplicationControllers and ReplicaSets can be used.
Ingress | Beta (1.9) | Tech Preview (3.9) | OpenShift launched with Routes, a more full featured Ingress object. Ingress rules can be read by the router (disabled by default), but because Ingress objects reference secrets you must grant the routers access to your secrets manually. Ingress is still beta in upstream Kubernetes. PodSecurityPolicy | Beta (1.9) | Tech Preview (3.9) | OpenShift launched with SecurityContextConstraints, and then upstreamed them as PodSecurityPolicy. We plan to enable upstream PodSecurityPolicy so as to automatically migrate existing SecurityContextConstraints. PodSecurityPolicy has not yet completed a full security review, which will be part of the criteria for tech preview.
SecurityContextConstraints are a superset of PodSecurityPolicy features. NetworkPolicy | GA (1.6) | GA (3.7) |

Please contact us if this list omits a feature supported in Kubernetes which does not run in Origin.

Contributing

You can develop locally on your host or with a virtual machine, or if you want to just try out Origin download the latest Linux server, or Windows and Mac OS X client pre-built binaries.

First, get up and running with the Contributing Guide.

All contributions are welcome - Origin uses the Apache 2 license and does not require any contributor agreement to submit patches. Please open issues for any bugs or problems you encounter, ask questions on the OpenShift IRC channel (#openshift-dev on freenode), or get involved in the Kubernetes project at the container runtime layer.

See HACKING.md for more details on developing on Origin including how different tests are setup.

If you want to run the test suite, make sure you have your environment set up, and from the origin directory run:

n the verifiers, unit tests, and command tests
ke check

n a command-line integration test suite
ck/test-cmd.sh

n the integration server test suite
ck/test-integration.sh

n the end-to-end test suite
ck/test-end-to-end.sh

n all of the tests above
ke test

You'll need etcd installed and on your path for the integration and end-to-end tests to run, and Docker must be installed to run the end-to-end tests. To install etcd you should be able to run:

ck/install-etcd.sh

Some of the components of Origin run as Docker images, including the builders and deployment tools in images/builder/docker/* and images/deploy/*. To build them locally run

ck/build-images.sh

To hack on the web console, check out the assets/README.md file for instructions on testing the console and building your changes.

Security Response

If you've found a security issue that you'd like to disclose confidentially please contact Red Hat's Product Security team. Details at https://access.redhat.com/security/team/contact

License

OpenShift is licensed under the Apache License, Version 2.0.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.