In a previous post I demonstrated how to quickly get a FlexDeploy installation up and running with Oracle Kubernetes Engine. The approach, while quick, simply won’t scale in the long run. Anything from a new user not knowing the process or deploying the wrong image tag could hinder your deployments.  Because of these issues we can benefit greatly by introducing FlexDeploy to automate and streamline the development and delivery process. Deploying to Kubernetes with FlexDeploy can afford us the following:

  • Repeatable, automated process for building Docker images and deploying charts
  • Reporting and audit capability
  • Implement governance and controls using release orchestration

The Goal

Deploy a containerized application to OKE using FlexDeploy. A node based website called ‘Natours’ will used in this case.

Setting up FlexDeploy

In order to deploy our Natours application we are going to set up the following:

  • A FlexDeploy Project where the Docker image name and Helm Chart is specified
  • Workflows to get the source code from git and deploy to K8s
  • A Pipeline to govern the Release Orchestration

The FlexDeploy Project follows a pretty simple format. First of all it utilizes the build and deploy workflows mentioned above. Secondly, it is configured to grab the source code from GitHub.

Project Configuration

As well as specify the Docker image tag that should be built and pushed to our registry. In this case I’m using Oracle’s Cloud Infrastructure Registry.

Docker Config

Lastly, the Helm Chart for deployment. If you are following along, you will want to change the image repository in both the Docker and Helm configuration to your own.

Helm Configuration

The full Helm Chart is https://github.com/joel-wenzel/charts/raw/master/generic/generic-0.1.0.tgz which can reused. It follows the standard chart from Helm Create with a few minor adjustments.

With those configurations in place we can actually now build and deploy our image to our OKE cluster. However, it would be nice if some governance existed around the deployments. As such, we can use a Pipeline to incorporate some Release Orchestration.

Containers Pipeline

With this Pipeline in place, any new image builds will deploy directly to the QA environment. However there are some controls before deploying to Production to prevent those gunslingers from ruining everyone’s good time. Of course we could also have integrated test and quality automation into the pipeline, such as functional testing and container security scanning.

Deploying with FlexDeploy

Now that all the setup is complete its time to see this in action. Additionally I have my project setup to build based on a webhook. As a result all I need to do is push a change to my repository to get things started.

I am going to commit a small typo in our website:

Source code change

After pushing the commit a new build is visible in the FlexDeploy UI. Notice the new Project Version of 1.0.8. This Project Version will be the tag we both push the image with and the version the Helm Chart uses.

New Project build

Furthermore, after the build completes our new image is deployed via our Pipeline.

Pipeline Deployment

Fantastic! Lets take a look at our change in OKE.

Natours change

Splendid. Reverting our “typo” would be easy as reversing the commit in GitHub. We could also simply deploy a previous Snapshot through our FlexDeploy Pipeline. The Natours Project in FlexDeploy can now be used as a template to create additional Projects! We only need to change the image name.

And with that, we have a repeatable, automated process for building and deploying images to OKE. For more complex deployments checkout Deployment Strategies.

Joel Wenzel

I have been working on integration and API architecture and development for the past 6 years, including with products such as Oracle SOA Suite, MuleSoft Anypoint Platform, Oracle Integration Cloud and API Platform, and Google Apigee. At Flexagon, I am part of the FlexDeploy engineering team which is enabling on prem and cloud use cases related to integration, API management, containers, and other tools and technologies.

More posts by Joel Wenzel
    

Leave a Reply

Your email address will not be published. Required fields are marked *