Don Schenck

Recent Posts

Containerize .NET for Red Hat OpenShift: Linux containers and .NET Core

Containerize .NET for Red Hat OpenShift: Linux containers and .NET Core

When .NET was released to the open source world (November 12, 2014—not that I remember the date or anything), it didn’t just bring .NET to open source; it brought open source to .NET. Linux containers were one of the then-burgeoning, now-thriving technologies that became available to .NET developers. At that time, it was “docker, docker, docker” all the time. Now, it’s Podman and Buildah, and Kubernetes, and Red Hat OpenShift, and serverless, and … well, you get the idea. Things have progressed, and your .NET applications can progress, as well.

This article is part of a series introducing three ways to containerize .NET applications on Red Hat OpenShift. I’ll start with a high-level overview of Linux containers and .NET Core, then discuss a couple of ways to build and containerize .NET Core applications and deploy them on OpenShift.

Continue reading “Containerize .NET for Red Hat OpenShift: Linux containers and .NET Core”

Share
How to run Red Hat CodeReady Containers on Windows 10 Enterprise

How to run Red Hat CodeReady Containers on Windows 10 Enterprise

Red Hat CodeReady Containers allows you to spin up a small Red Hat OpenShift cluster on your local PC, without the need for a server, a cloud, or a team of operations people. For developers who want to get started immediately with cloud-native development, containers, and Kubernetes (as well as OpenShift), it’s a simple and slick tool. It runs on macOS, Linux, and all versions of Windows 10.

Except for Windows 10 Enterprise.

Which I painfully learned.

Because I lazily didn’t pay attention to the documentation.

OK, so I’m the only developer who glosses over documentation. Fortunately for you, I struggled and managed to get CRC running on my Windows 10 Enterprise notebook computer, and this article explains what is involved to get it working. So, in a sense, you’re welcome that I’m lazy.

Continue reading “How to run Red Hat CodeReady Containers on Windows 10 Enterprise”

Share
How to install the CouchbaseDB Operator for Red Hat OpenShift on your laptop using Red Hat CodeReady Containers and Red Hat Marketplace

How to install the CouchbaseDB Operator for Red Hat OpenShift on your laptop using Red Hat CodeReady Containers and Red Hat Marketplace

Red Hat Marketplace is an online store of sorts, where you can choose the software that you want to install and run on your Red Hat OpenShift cluster. The analogy is a phone app store, where you select an app, and it’s automagically installed on your phone. With Marketplace, you simply register your cluster(s), select the software that you want, and it is installed for you. It could not be easier.

In this article, I show you how to install Couchbase Server Enterprise Edition on an OpenShift cluster. In my case, the cluster is running on Fedora 32 using Red Hat CodeReady Containers (CRC). Couchbase Server Enterprise Edition is currently available as a free trial, and CRC is also available at zero cost. This setup offers a no-risk way to try containers, Kubernetes, OpenShift, and, in this case, Couchbase. This is definitely “developers playing around with the software”-level stuff.

Continue reading “How to install the CouchbaseDB Operator for Red Hat OpenShift on your laptop using Red Hat CodeReady Containers and Red Hat Marketplace”

Share
How to fix .NET Core’s ‘Unable to obtain lock file access’ error on Red Hat OpenShift

How to fix .NET Core’s ‘Unable to obtain lock file access’ error on Red Hat OpenShift

Well, it finally happened. Despite the added assurances of working with containers and Kubernetes, the old “It works on my machine” scenario reared its ugly head in my .NET Core (C#) code. The image that I created worked fine on my local PC—a Fedora 32 machine—but it crashed when I tried running it in my Red Hat OpenShift cluster.

The error was “Unable to obtain lock file access on /tmp/NuGetScratch.” Let’s take a quick look at what happened, and then I’ll explain how I fixed it.

Identity issues

After a lot of web searching and a discussion with a Red Hat .NET Core engineer, I discovered the underlying problem. It turns out that within a container, the identity used to initially run the program (using the dotnet run command) must be the same for subsequent users.

The problem might be easy to understand, but what’s the solution?

Continue reading “How to fix .NET Core’s ‘Unable to obtain lock file access’ error on Red Hat OpenShift”

Share
Build a Go application using OpenShift Pipelines

Build a Go application using OpenShift Pipelines

Go is an increasingly popular programming language, and frequently chosen for developing command-line utilities. Many tools used with Kubernetes and Red Hat OpenShift are written in Go, including the command-line interfaces (CLIs) for Tekton (tkn), OpenShift (oc), and Kubernetes (kubectl). Also, developers can compile Go to a single executable for a broad range of operating systems. As a result, it’s easy to develop and desk-test applications before putting them into containers and running those containers in OpenShift.

In a meta sort of way, this is an article about a tutorial, where I show you how to build and deliver a small Go RESTful service using OpenShift Pipelines. You could just jump to the tutorial now, but I suggest reading this article first. I’ll quickly introduce the working environment for the tutorial, and I’ll explain my logic for setting up the tutorial the way that I did.

Continue reading “Build a Go application using OpenShift Pipelines”

Share
Editing, debugging, and GitHub in Red Hat CodeReady Workspaces 2

Editing, debugging, and GitHub in Red Hat CodeReady Workspaces 2

In a previous article, I showed how to get Red Hat CodeReady Workspaces 2.0 (CRW) up and running with a workspace available for use. This time, we will go through the edit-debug-push (to GitHub) cycle. This walk-through will simulate a real-life development effort.

To start, you’ll need to fork a GitHub repository. The Quote Of The Day repo contains a microservice written in Go that we’ll use for this article. Don’t worry if you’ve never worked with Go. This is a simple program and we’ll only change one line of code.

After you fork the repo, make note of (or copy) your fork’s URL. We’ll be using that information in a moment.

Continue reading “Editing, debugging, and GitHub in Red Hat CodeReady Workspaces 2”

Share
Managing development environments with Red Hat CodeReady Workspaces 2

Managing development environments with Red Hat CodeReady Workspaces 2

The release of Red Hat CodeReady Workspaces 2.0 (CRW) brings changes. Based on Eclipse Che 7 and the Theia online editor, CRW 2.0 frees the developer from the confines of a specially configured PC in favor of multiple specially configured workspaces. Imagine having a separate work environment for each language, version, tools and more, all available from a browser. This article discusses some of the features of CRW.

Continue reading “Managing development environments with Red Hat CodeReady Workspaces 2”

Share
CodeReady Workspaces devfile, demystified

CodeReady Workspaces devfile, demystified

With the exciting advent of CodeReady Workspaces (CRW) 2.0 comes some important changes. Based on the upstream project Eclipse Che 7, CRW brings even more of the “Infrastructure as Code” idea to fruition. Workspaces mimic the environment of a PC, an operating system, programming language support, the tools needed, and an editor. The real power comes by defining a workspace using a YAML file—a text file that can be stored and versioned in a source control system such as Git. This file, called devfile.yaml, is powerful and complex. This article will attempt to demystify the devfile.

Continue reading “CodeReady Workspaces devfile, demystified”

Share