Golang

How to use third-party APIs in Operator SDK projects

How to use third-party APIs in Operator SDK projects

The Operator Framework is an open source toolkit for managing Kubernetes-native applications. This framework and its features provide the ability to develop tools that simplify complexities, such as installing, configuring, managing, and packaging applications on Kubernetes and Red Hat OpenShift. In this article, we show how to use third-party APIs in Operator-SDK projects.

In projects built with Operator-SDK, only the Kubernetes API schemas are added by default. However, you might need to create, read, update, or delete a resource that is from another API—even one that you created yourself via other Operator projects.

Let’s check out an example scenario: How to create a Route resource from the OpenShift API for an Operator-SDK project.

Continue reading “How to use third-party APIs in Operator SDK projects”

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
Why not couple an Operator’s logic to a specific Kubernetes platform?

Why not couple an Operator’s logic to a specific Kubernetes platform?

You might find yourself in situations where you believe that a logic implementation should occur only if and when your Operator is running on a specific Kubernetes platform. So, you probably want to know how to get the cluster vendor from the operator. In this article, we will discuss why relying on the vendor is not a good idea. Also, we will show how to solve this kind of scenario.

Continue reading “Why not couple an Operator’s logic to a specific Kubernetes platform?”

Share
Probing golang runtime using SystemTap

Probing golang runtime using SystemTap

I recently saw an article from Uber Engineering describing an issue they were having with an increase in latency. The Uber engineers suspected that their code was running out of stack space causing the golang runtime to issue a stack growth, which would introduce additional latency due to memory allocation and copying. The engineers ended up modifying the golang runtime with additional instrumentation to report these stack growths to confirm their suspicions. This situation is a perfect example of where SystemTap could have been used.

SystemTap is a tool that can be used to perform live analysis of a running program. It is able to interrupt normal control flow and execute code specified by a SystemTap script, which can allow users to temporarily modify a running program without having to change the source and recompile.

Continue reading “Probing golang runtime using SystemTap”

Share
Support Lifecycle for Clang/LLVM, Go, and Rust

Support Lifecycle for Clang/LLVM, Go, and Rust

On the heels of our recently announcement, General Availability of Clang/LLVM 6.0, Go 1.10, and Rust 1.29, I want to share how we’ll be supporting them going forward. Previously, these packages had been in “Technology Preview” status, which means that they were provided for “you to test functionality and provide feedback during the development process”, and were “not fully supported under Red Hat Subscription Level Agreements, may not be functionally complete, and are not intended for production use”.

So now that we’ve promoted them to fully supported status, what does that mean? In the simplest terms, General Availability (GA) means that these packages have officially entered the “Full Support Phase” of their lifecycle:

Continue reading “Support Lifecycle for Clang/LLVM, Go, and Rust”

Share
Clang/LLVM 6.0, Go 1.10, and Rust 1.29 NOW GA for RHEL

Clang/LLVM 6.0, Go 1.10, and Rust 1.29 NOW GA for RHEL

We are pleased to announce general availability of these 3 compiler toolsets for Red Hat Enterprise Linux 7. These versions are now officially supported Red Hat offerings:

  • Clang/LLVM 6.0
  • Go 1.10
  • Rust 1.29

These toolsets can be installed from the Red Hat Enterprise Linux 7 Devtools channel.  See the “New compiler details” below to learn about the new features.

Continue reading “Clang/LLVM 6.0, Go 1.10, and Rust 1.29 NOW GA for RHEL”

Share
Clang/LLVM 6.0, Go 1.10, and Rust 1.29 now in beta for Red Hat Enterprise Linux

Clang/LLVM 6.0, Go 1.10, and Rust 1.29 now in beta for Red Hat Enterprise Linux

We are pleased to announce the immediate availability of these three compiler toolsets now in beta for Red Hat Enterprise Linux 7.  Upon the GA release, these versions will become officially supported Red Hat offerings:

  • Clang/LLVM 6.0
  • Go 1.10
  • Rust 1.29

These toolsets can be installed from the Red Hat Enterprise Linux 7 Devtools channel.  See the “New compiler details” below to learn about the new features.

Continue reading “Clang/LLVM 6.0, Go 1.10, and Rust 1.29 now in beta for Red Hat Enterprise Linux”

Share
Announcing updated Red Hat Developer Studio and Container Development Kit

Announcing updated Red Hat Developer Studio and Container Development Kit

I’m extremely pleased to announce the release of Red Hat Container Development Kit (CDK) 3.5 and Red Hat Developer Studio 12. Whether you are developing traditional or cloud-based applications and microservices, you can run these tools on your Windows, macOS, or Red Hat Enterprise Linux laptop to streamline development:

  • Red Hat Container Development Kit provides a pre-built container development environment to help you develop container-based applications quickly using Red Hat OpenShift and Kubernetes.
  • Red Hat Developer Studio (previously named JBoss Developer Studio) provides a desktop IDE with superior support for your entire development lifecycle. It includes a broad set of tooling capabilities and support for multiple programming models and frameworks. Developer Studio provides broad support for working with Red Hat products and technologies including middleware, business automation, and integration, notably Camel and Red Hat Fuse. Developer Studio is based on Eclipse 4.8 (Photon).

A number of Red Hat Enterprise Linux (RHEL) development tools have been updated. These include Rust 1.26.1, Go 1.10.2, Cargo 1.26, and Eclipse 4.8 (Photon).

Our goals are to improve usability of our tools for developers, while adding new features that matter most for users of Red Hat platforms and technologies.

Overview of new features:

Continue reading “Announcing updated Red Hat Developer Studio and Container Development Kit”

Share
Announcing GA for latest Software Collections, Developer Toolset, Compilers

Announcing GA for latest Software Collections, Developer Toolset, Compilers

We are pleased to announce the general availability of:

  • Red Hat Software Collections 3.1 (including Ruby 2.5, Perl 2.26, PHP 7.0.27, PostgreSQL 10, MongoDB 3.6, Varnish 5, HAProxy 1.8, Apache 2.4 update)
  • Red Hat Developer Toolset 7.1 (GCC 7.3)
  • Clang/LLVM 5.0, Go 1.8.7, Rust 1.25.0

Continue reading “Announcing GA for latest Software Collections, Developer Toolset, Compilers”

Share
Manage test dependencies with Go

Manage test dependencies with Go

Introduction

I’m working on the upstream fabric8-wit project of openshift.io. In this Go project, we embrace testing as best as we can in order to deliver a stable component. Testing acts as our safety net to allow for fast-paced feature development. This blog post is about our recent change in our testing strategy. It is not as boring as it might sound at first. 😉

Continue reading “Manage test dependencies with Go”

Share