Today we’re releasing version 2.1 of the Red Hat Container Development Kit. With the CDK, developers can easily create enterprise-ready containerized applications which target both OpenShift 3 development and Red Hat Enterprise Linux environments. Enjoy the ease and experience of developing this type of solution locally, on your own machine, without sacrifice or compromise.

Here are the key features in the CDK 2.1 release:

  • OpenShift upgraded to OpenShift Enterprise 3.2. See here to find out more about the new features in OpenShift Enterprise 3.2.
  • Hyper-V support (native hypervisor for Windows) --- Technology preview
  • Reduced size of the CDK Vagrant box by ~150MB
  • Ability to persist data within the VM using persistent volume claims. The CDK 2.1 allows the user to make use of persistent volumes in order to persist data between restarts of pods, OpenShift or even the whole VM.
  • OpenShift registry exposed as route
  • There are also several bug fixes done as part of CDK 2.1 release.

Persistence volume claims

The CDK 2.1 allows the user to make use of persistent volumes in order to persist data between restarts of pods, OpenShift or even the whole VM --- this can be achieved via a so called persistent volume claim.

Let’s take the example template nodejs-mongodb-example which is pre-installed per default with the CDK --- it starts a Node.js application backed by a MongoDB database.

On the index page there is a counter on how often the page has been displayed; the display count is persisted in MongoDB.

By default default there is no persistent data attached to the MongoDB pod, each time the MongoDB pod gets restarted, the counter gets reset (in fact the whole database gets re-created). By attaching a persistent volume to the MongoDB deployment config you can persist the data across pod restarts. Using the oc CLI, this looks like:

$ oc volume dc/mongodb --add --claim-size 512M --mount-path /var/lib/mongodb/data --name mongodb-data

Now your data gets persisted under /nfsvolumes/pv0[0-3] with in the CDK VM --- you can view the created and attached volumes via:

$ oc volume dc --all

Note, this data will be lost in case you destroy the Vagrant box via vagrant destroy.

OpenShift registry exposed as route

Users can use OpenShift’s internal Docker registry running in CDK Vagrant box as local docker registry. In some cases it can be useful to have a local docker registry on the workstation.

To make this easier for the user the vagrant service-manager env command exposes the host name of the OpenShift registry:

$ vagrant service-manager env openshift
# You can access the OpenShift console on: https://10.1.2.2:8443/console
# To use OpenShift CLI, run: oc login https://10.1.2.2:8443
export OPENSHIFT_URL=https://10.1.2.2:8443
export OPENSHIFT_WEB_CONSOLE=https://10.1.2.2:8443/console
export DOCKER_REGISTRY=hub.openshift.rhel-cdk.10.1.2.2.xip.io

# run following command to configure your shell:
# eval "$(vagrant service-manager env openshift)"

In this example the registry is exposed as hub.openshift.rhel-cdk.10.1.2.2.xip.io. You can login to this registry using docker login.

Assume you have a local application containerized which is not pushed anywhere (i.e. it is not available for OpenShift build config to pull the sources). However, with the docker registry you can run the application in OpenShift running on top of CDK --- all you need is your application and the Dockerfile.

First step is to build the Docker image using the Docker daemon. To to this set up your terminal to connect to the CDK docker daemon via vagrant service-manager env. Build your image as usual.

Assuming you build your image with the name my-app, do the following:

# Make sure you are logged into OpenShift
$ oc login 10.1.2.2:8443 -u openshift-dev -p devel

# Tag the image you’ve built against the OpenShift registry
# Remember you get the hostname via ‘service-manager env` and
# ‘sample-project’ is the name of the CDK default project
$ docker tag my-app hub.openshift.rhel-cdk.10.1.2.2.xip.io/sample-project/my-app

# Log in to the OpenShift registry
$ docker login -u openshift-dev -p `oc whoami -t` -e foo@bar.com hub.openshift.rhel-cdk.10.1.2.2.xip.io

# Now you push the image to the registry which will create an image stream of the same name
$ docker push hub.openshift.rhel-cdk.10.1.2.2.xip.io/sample-project/my-app

# Now you can create an application of this image stream
$ oc new-app --image-stream=my-app --name=my-app

# and expose it
$ oc expose service my-app --hostname=my-app.rhel-cdk.10.1.2.2.xip.io

Feedback

We look forward to your feedback and thoughts on the container-tools@redhat.com mailing list. What new features do you want to see?

Last updated: February 11, 2024