Workshop Overview - Inner & Outer Loop

To understand the flow of the lab, let’s learn a bit about the inner and outer loop of development. This is a critical part of a developer’s workflow when using the various technologies in this workshop. The development cycle is typically organized in two loops, one closer to the developer’s inner loop; where you code, test, and debug iteratively, and one further away, the outer loop; where your code runs inside a container image you have to build, push and deploy.

Inner Loop vs. Outer Loop

In this lab, we will use these two types of CI/CD pipelines: the inner and outer loop. The inner loop workflow is used to develop and test code locally (ex. using OpenShift Dev Spaces). The outer loop pipeline is used for deploying applications to development and production (ex. using Argo CD).

Inner vs Outer Loop

The truth is that, even though you will eventually run your code inside a Kubernetes cluster, you still generally develop locally where you have your IDE, compilers, etc. Well, you may think to yourself:

I can "test it all" locally, then just push my code, and the rest is history.

However, this is only sometimes the case, for example, you may need to connect to a database, a service, etc., and you may not have all that locally. In this case, this is where the Kubernetes native inner and outer development loop comes in handy.

Kubernetes Native Development Loop
Figure 1. Kubernetes Native Development Loop

Inner and Outer loop flow

Now, let’s look at our usage of the inner and outer loop development flow we’ll use today.

Inner Loop

The inner loop workflow is used to develop and test code locally using OpenShift Dev Spaces. This inner loop involves local development and testing, where developers write code, build the application, and test it locally before pushing any changes to the remote repository. This is where developers rapidly fix bugs, add features, and iterate on the application.

Dev Spaces Interface

Outer Loop

The outer loop pipeline is used for deploying applications to production using Argo CD within OpenShift Gitops. This stage starts after the inner loop when changes are pushed to the remote repository. The outer loop pipeline is triggered when developers push code to a Git repository. The pipeline will build the code, create a new image, and update the repository with the new image tag. Argo CD will then detect the change and deploy the new image to the production environment. The outer loop automates the deployment of the application to the Kubernetes cluster, ensuring that the infrastructure is always in sync with the desired state defined in the Git repository.

Argo CD App Details

Next Steps

Great! Now that we understand the role of the inner and outer loop, we can begin to look at the OpenShift cluster we’re using. This includes understanding the operators used (such as OpenShift GitOps and Dev Spaces) and the Git repositories.