Red Hat Enterprise Linux

What is Red Hat Universal Base Image?

What is Red Hat Universal Base Image?

Back in May, we launched the Red Hat Universal Base Image (UBI), targeted at developers building containerized applications for the cloud. Since then, we have published an extensive FAQ covering topics ranging from how often UBI is updated, to how the end user license agreement (EULA) allows you to redistribute applications built on it. These are all great fundamental topics to cover, but people still seem to have a lot of questions around what UBI is and what it isn’t.

Continue reading What is Red Hat Universal Base Image?

Share
Changes to CentOS: What CentOS Stream means for developers

Changes to CentOS: What CentOS Stream means for developers

Today Chris Wright, vice president and CTO at Red Hat, published a post describing how CentOS is changing and the opportunities it opens for developers in the Red Hat Enterprise Linux (RHEL) ecosystem. The net effect of this change is that, in addition to CentOS Linux 8, there is a new version of CentOS—CentOS Stream—which will provide a “rolling preview” of future Red Hat Enterprise Linux kernels and features. This is being announced in addition to the release of the traditional CentOS Linux 8, which is a downstream rebuild of the current RHEL release.

Continue reading Changes to CentOS: What CentOS Stream means for developers

Share
Develop with Node.js in a container on Red Hat Enterprise Linux

Develop with Node.js in a container on Red Hat Enterprise Linux

In my previous article, Run Red Hat Enterprise Linux 8 in a container on RHEL 7, I showed how to start developing with the latest versions of languages, databases, and web servers available with Red Hat Enterprise Linux 8, even if you are still running RHEL 7. In this article, I’ll build on that base to show how to get started with Node using the current RHEL 8 application stream versions of Node.js and Redis 5.

Continue reading “Develop with Node.js in a container on Red Hat Enterprise Linux”

Share
Develop with Flask and Python 3 in a container on Red Hat Enterprise Linux

Develop with Flask and Python 3 in a container on Red Hat Enterprise Linux

In my previous article, Run Red Hat Enterprise Linux 8 in a container on RHEL 7, I showed how to start developing with the latest versions of languages, databases, and web servers available with Red Hat Enterprise Linux 8 even if you are still running RHEL 7. In this article, I’ll build on that base to show how to get started with the Flask microframework using the current RHEL 8 application stream version of Python 3.

From my perspective, using Red Hat Enterprise Linux 8 application streams in containers is preferable to using software collections on RHEL 7. While you need to get comfortable with containers, all of the software installs in the locations you’d expect. There is no need to use scl commands to manage the selected software versions. Instead, each container gets an isolated user space. You don’t have to worry about conflicting versions.

Continue reading “Develop with Flask and Python 3 in a container on Red Hat Enterprise Linux”

Share
Develop with Django 2 and Python 3 in a container with Red Hat Enterprise Linux

Develop with Django 2 and Python 3 in a container with Red Hat Enterprise Linux

In my previous article, Run Red Hat Enterprise Linux 8 in a container on RHEL 7, I showed how to start developing with the latest versions of languages, databases, and web servers available with Red Hat Enterprise Linux 8 even if you are still running RHEL 7. In this article, I’ll build on that base to show how to get started with Django 2 using the current RHEL 8 application stream versions of Python 3 and PostgreSQL 10.

Continue reading “Develop with Django 2 and Python 3 in a container with Red Hat Enterprise Linux”

Share
Interacting with native libraries in .NET Core 3.0

Interacting with native libraries in .NET Core 3.0

NativeLibrary is a new class in .NET Core 3.0 for interacting with native libraries. In this article, we’ll take a closer look.

DllImport

.NET makes it simple to call functions from a native library using DllImport:

[DllImport("mylibrary")]
public static extern int foo();

This code makes available the function foo from the native library mylibrary. This function accepts no arguments and returns an int. .NET takes care of marshaling the argument types. It is possible to use managed types (like strings), which will be automagically marshaled.

Continue reading “Interacting with native libraries in .NET Core 3.0”

Share
Run Red Hat Enterprise Linux 8 in a container on RHEL 7

Run Red Hat Enterprise Linux 8 in a container on RHEL 7

You can start developing with the latest versions of languages, databases, and web servers available with Red Hat Enterprise Linux 8 even if you are still running RHEL 7. It is pretty simple to do with containers, even if you’ve only been through a “Hello, World” or two.

By the end of this article, you’ll have the current RHEL 8 application stream versions of PHP, MariaDB, and Apache HTTPD running in containers, managed by systemd on your RHEL 7 system. Podman makes it easy to accomplish this since there is no container daemon to complicate things. We’ll use WordPress as a placeholder for your own application code.

Continue reading “Run Red Hat Enterprise Linux 8 in a container on RHEL 7”

Share
Troubleshooting Red Hat OpenShift applications with throwaway containers

Troubleshooting Red Hat OpenShift applications with throwaway containers

Imagine this scenario: Your cool microservice works fine from your local machine but fails when deployed into your Red Hat OpenShift cluster. You cannot see anything wrong with the code or anything wrong in your services, configuration maps, secrets, and other resources. But, you know something is not right. How do you look at things from the same perspective as your containerized application? How do you compare the runtime environment from your local application with the one from your container?

If you performed your due diligence, you wrote unit tests. There are no hard-coded configurations or hidden assumptions about the runtime environment. The cause should be related to the configuration your application receives inside OpenShift. Is it time to run your app under a step-by-step debugger or add tons of logging statements to your code?

We’ll show how two features of the OpenShift command-line client can help: the oc run and oc debug commands.

Continue reading “Troubleshooting Red Hat OpenShift applications with throwaway containers”

Share
Using Let’s Encrypt with Apache httpd on Red Hat Enterprise Linux 7

Using Let’s Encrypt with Apache httpd on Red Hat Enterprise Linux 7

Getting an SSL certificate for your web server has traditionally been a something of an effort.  You need to correctly generate a weird thing called a certificate signing request (CSR), submit it to the web page of your chosen Certificate Authority (CA), wait for them to sign and generate a certificate, work out where to put the certificate to configure it for your web server—making sure you also configure any required intermediate CA certificates—and then restart the web server.  If you got all that right, you then need to enter a calendar entry so you’ll remember to go through the process again in (say) a year’s time. Even some of the biggest names in IT can mess up this process.

With new CAs like Let’s Encrypt, along with some supporting software, the rigmarole around SSL certificates becomes a thing of the past.  The technology behind this revolution is Automatic Certificate Management Environment (ACME), a new IETF standard (RFC 8555) client/server protocol which allows TLS certificates to be automatically obtained, deployed, and renewed. In this protocol, an “agent” running on the server that needs an SSL certificate will talk to to the CA’s ACME server over HTTP.

A popular method for using ACME on your Red Hat Enterprise Linux 7 server is certbot. Certbot is a standalone ACME agent that is configured out-of-the-box to work with Let’s Encrypt and can work with Apache httpd, Nginx, and a wide variety of other web (and non-web!) servers.  The certbot authors have an excellent guide describing how to set up certbot with httpd on RHEL7.

In this tutorial, I’ll show an alternative method—the mod_md module—which is an ACME agent implemented as a module for Apache httpd, tightly integrated with mod_ssl, and is supported today in Red Hat Enterprise Linux 7.  The mod_md module was implemented by Stefan Eissing—a prolific developer who also added HTTP/2 support to httpd—and contributed to the Apache Software Foundation, becoming a standard part of any new installation since httpd version 2.4.30.

Continue reading “Using Let’s Encrypt with Apache httpd on Red Hat Enterprise Linux 7”

Share