Chapter 1. Executive Summary
Much has been written about continuous integration and delivery. It is impossible to deliver a “one size fits all” approach to such a complex topic. The scope of this paper is to provide guidance for mid-size teams using OpenShift to continuously test and deploy applications. Specifically, the focus is managing multi-cluster authentication and authorization, promoting applications between clusters and orchestrating the pipeline using an integrated Jenkins server.
For the purposes of this paper, assume a mid-size development team consisting of 12-50 people. Smaller teams may require less formalization than this paper outlines. Larger teams tend to have more centralized resources and more prescriptive processes that prevent adopting the recommendations this paper outlines. Limiting the scope of this paper highlights best how OpenShift addresses problems, including teams that are part of a much larger organization.
1.1. Problem
Development teams want to move faster than traditional infrastructure, testing, and processes allow. OpenShift is designed to enable teams to adopt a culture which moves at a faster pace. When prioritizing automation in the development process, code is better and the team is more satisfied with the output. OpenShift is designed to be an integral part of automating the software development lifecycle (SDLC).
1.2. Limitations
This work is meant as guidance only. Red Hat will not provide support for the solution described in this document or source repository.
This Reference Implementation requires a few things to be set up properly, outlined in the following chapters.
1.3. OpenShift Container Platform 3.7
All commands, playbooks, and configurations require OpenShift Container Platform 3.7 and the Jenkins image included in that release.
There are multiple reference architectures available for OpenShift deployment on various cloud providers and on-premise infrastructure. Any of them may be utilized, including oc cluster up and the Red Hat CDK once updated with OpenShift 3.7 release.
1.4. Local Client Tools
In order to run Ansible playbooks, the OpenShift command line tools, git, and Ansible need to be available locally.
Table 1.1. Required local software
| Software | RPM | Repository |
|---|---|---|
| git | git-1.8.3.1-12.el7_4.x86_64 | rhel-7-server-rpms |
| ansible | ansible-2.4.1.0-1.el7.noarch | rhel-7-server-ose-3.7-rpms |
| oc command | atomic-openshift-clients-3.7.9-1.git.0.7c71a2d.el7.x86_64 | rhel-7-server-ose-3.7-rpms |
1.5. OpenShift Projects
The lifecycle project on the dev cluster will run an instance of Jenkins. Each cluster and lifecycle project will run an instance of the application and database. Below are the PersistentVolumes required for each deployment type.
Table 1.2. Required PersistentVolumes
| PersistentVolume | min.size | used for | used by |
|---|---|---|---|
| jenkins | 2Gi | Jenkins Configs | Jenkins pod |
| mongodb | 1Gi | Mongo Database | MongoDB pod |

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.