How to setup a self-signed SSL certificate for a Cloud Foundry application on IBM Cloud

This blog post is about, how to setup a self-signed SSL certificate for an encrypted (https) communication with a Cloud Foundry application on IBM Cloud, if you are at a Hackathon. Keep in mind you don’t need to implement additional code inside of your Cloud Foundry application in this scenario. All is managed by IBM Cloud and you don’t need to modify your source-code. You need to have installed OpenSSL on your local machine and this example shows the setup on MacOS and Safari. You also need a Pay-As-You-Go or Trial-Account for the IBM Cloud to setup custom domain and ssl.

Motivation

In my example situation I want to access my Node-RED instance with a custom domain and a self-signed SSL certificate.

Normally you would create a certificate signing request to get public key certificate to encrypt the communication with https provided by a certificate authority for example “Let’s encrypt”, as you see simplified in the image below.

A certificate from a certificate authority can be costly, if you aren’t able to use a free certificate authority like for example “Let’s encrypt” supported by your domain provider. In my case the domain provider GoDaddy doesn’t support to request certificates directly from “Let’s encrypt”.

One easy solution to avoid additional costs is to create a self-signed certificate. This solution works well, if you only want to test and develop during a Hackathon and you have a very small count of users and you can give them the guidance to use the self-signed SSL certificate in their browser.
As you can see you need to upload self-signed SSL certificate in this simplified picture.

Overview of the needed steps

Here is an overview of the major needed steps:

  1. Create a custom domain and map it with the CNAME (this will result in the fully qualified domain name)
  2. Register the created custom domain in your Cloud Foundry org and region
  3. Create a route with your custom domain for your Cloud Foundry app
  4. Create a self-signed SSL certificate for custom domain
  5. Upload the self-signed certificate to IBM Cloud
  6. Invoke URL in a browser on a machine
  7. Copy the self-signed certificate from your browser to your computer
  8. Import the self-signed SSL certificate to the keychain of your operating-system on your local machine
  9. Restart the browser and see now your communication is encrypted
Continue reading

Absolute beginner Node-RED flow

The motivation for that blog post is: When I support Hackathons I notice there’s often a lack of programming knowledge and building UIs, but they have awesome ideas. If this is the case, then Node-RED is a perfect starting point to realize a prototype at a hackathon. The dashboard of Node-RED is a awesome way to build a UI, but there was a “out of the box” Node missing to simply add a table. Now I found a very useful Node that’s create a table inside a Node-RED dashboard.

That’s motivated me to create an example GitHub project, which provides an example to build a simple application from scratch.

The gif shows the simple functionality of the flow.

  • Enter a new user
  • Search for lastname
  • Inspect result
Continue reading

Get started with IBM Cloud – a student perspective

In this new blog post I want to address a common situation I see students facing: there are several cloud providers and you want to check out the different platforms. The reason is you want to be prepared; for example working with cloud resources related to courses at your university or for a hackathon. One of these cloud providers is IBM Cloud and this blog post is about how to get started with IBM Cloud. This is a tailored version of my blog post: How to prepare for a Hackathon with IBM Cloud for you as a student.

IBM Cloud provides a wide range and huge amount of different services, runtimes, and more. It covers both virtual and hardware –based servers on one demand cloud-platform, which means you have complete infrastructure control. One of the great things about IBM Cloud is that you can register for an account and try before you buy without needing a credit card.

From my point of view, one of the most important objectives for student is to have a running application instance live.

To do this you need a runtime 😉

Continue reading

Updated: How to prepare for a Hackathon with IBM Cloud?

In this new blog post I want to address a common situation for developers: You want to participate in a hackathon, and you plan to use IBM Cloud, but you have never used it before. How to prepare? So I created a newer version of my older blog post: How to prepare for a Hackathon with IBM Cloud 

IBM Cloud provides a huge amount of different services, runtimes, and more. From my point of view, one of the most important objectives in a hackathon is:

Run your developed application instance live! To do this you need a runtime 😉

Let’s start with the basics

Let’s get a basic understanding of what does IBM Cloud provide and where to find how to’s?

The IBM Cloud catalog gives you an entry point to find Cloud Services, Software and Consulting, which are organized by different categories like containers, storage and more as you see in the gif below.

IBM Cloud has a very good entry point for new users with the getting started page. The page is structured in five major steps.

ibmcloud-starting-point
  1. Explore IBM Cloud
  2. See cloud essentials
  3. Start building
  4. Helpful resources
  5. Get community support

The gif below shows the navigation going through the different steps on the getting started page.

ibmcloud-get-starter

Free online trainings

Continue reading

Run a PostgreSQL container as a non-root user in OpenShift

In this blog post I want to point out a simple topic: How to run a simple PostgreSQL Docker image as a non-productive container in OpenShift? As you maybe know, OpenShift doesn’t allow by default to run container images as root.

The image below shows the result of the simply deployed postgreSQL image from dockerhub.

postgres openshift root user ibmcloud

It’s possible to enable images to run as root on OpenShift, that’s documented in the OpenShift documentation here, by adding a service account.

But, in this blog post we choose an alternative way, where we don’t change the security in OpenShift, here we will customize the postgreSQL Docker image a bit. We will follow the steps to create a postgreSQL database on OpenShift, along the creation of the database called postgreSQL database-articles for the Cloud Native Starter reactive example .

These are the major steps:

  1. Write the specifications and configurations  for:
    1. … the Dockerfile
    2. … the  yaml with a Kubernetes Deployment and a Kubernetes Service specification
  2. Execute the oc CLI commands to:
    1. … create a OpenShift project
    2. … create a OpenShift build configuration
    3. … start the build
    4. … apply the Deployment and Service specification
    5. … expose the Service

Continue reading

Setup a MongoDB in less than 4 min on a free IBM Cloud Kubernetes cluster at a Hackathon

In this blog post I want to highlight that I just created a GitHub project and a 10 min YouTube video to “How to setup mongoDB in less than 4 min on a free IBM Cloud Kubernetes cluster at a Hackathon”.

My objective is to provide a small guide, how to setup a MongoDB server and Mongo UI (Mongo-Express)  on a free IBM Cloud Kubernetes cluster and when you don’t want to use the existing MongoDB service on IBM Cloud.

On the free IBM Cloud Kubernetes cluster:  No persistent volume claims are used. So, keep in mind, if your Pod in Kubernetes crashes the data of the database is lost.

Based on the “security feature” of the MongoDB default port 27017, you need to run the application to access the MongoDB server in the Kubernetes cluster .

In other words, your UI application has to access the database with a server application, which also runs on the free Kubernetes cluster (like the Mongo UI (Mongo-Express)  in that example here). You should implement a backend for frontend architecture.

The YouTube video shows the setup and a description how it works.

Continue reading

Create a python application instance in less than 5 min on IBM Cloud

In that blog post I want to highlight the cool topic: How to create a python application instance in minutes on IBM Cloud, using public Cloud Foundry. This could be useful in a Hackathon with Hackers who are new to IBM Cloud. Therefore I made a short 5 min YouTube video.

Here is the link where you can create your own python instance: https://cloud.ibm.com/catalog/starters/cloud-foundry?runtime=python

Just create your own free IBM Cloud Lite Account and try it out, therefore you only need an e-mail address and no credit card.

These are my related blog posts to the topic Hackathon:


I hope this was useful for you and let’s see what’s next?

Greetings,

Thomas

PS:  You can also try out Kubernetes on IBM Cloud.

#IBMDeveloper, #IBMCloud, #python, #hackathon, #cloudfoundry

Run a Docker image as a Cloud Foundry App on IBM Cloud

In that blog post I want to point out an awesome topic: “Run a Docker container image as a Cloud Foundry App on IBM Cloud”

Rainer Hochecker, Simon Moser and I had an interesting exchange about running a Docker image as a Cloud Foundry App on IBM Cloud.

The advantage with that approach is: you don’t need to instantiate a Kubernetes or OpenShift cluster. You can just run a single Docker image with your single application on IBM Cloud. That can be useful in different situations where you need to control the contents of your application, and the cloud foundry build-pack mechanism maybe restricts you.

IBM offers to run Cloud Foundry Apps on IBM Cloud and supports a set of build packsBut, by the fact IBM uses Cloud Foundry, you can also upload a Docker image as a Cloud Foundry application, it’s an officially supported feature. Yes there is no documentation related to that topic in the IBM Cloud documentation, but you can apply the Cloud Foundry documentation.

One impact of that situation is, you don’t see the VCAP variables and you can’t use the out of the box binding for IBM Cloud services. You have to manage the bindings to your IBM Cloud services by yourself.  

Let’s start with a short guide: How to setup a Cloud Foundry application using a Docker image.

Continue reading

COVID19 communication starter kit for the Call for Code challenge

In this blog post I want to point out the awesome COVID19 communication starter kit for the Call for Code challenge. I created a small YouTube Video series following a COVID19 starter kit tutorial with the objective to show and talk: “More about the how and not so much about the why”.

 

I selected the tutorial Create a crisis communication chatbot and connect it to news and COVID-19 data sources for my video series on YouTube.

Note: Here is the YouTube video series link for LinkedIn users ;-), because I notice in the LinkedIn Mobile App it seems, it isn’t possible to access the embedded YouTube video in the blog post.

Continue reading

A Node-RED Twitter-follower-flow

In my last blog post I did an introduction to “how use the starter kit for Node-RED on IBM Cloud” and in this new blog post I want to highlight the Node-RED Twitter-follower-flow I developed as an introduction to different topics I frequently face at hackathons. Here is the link to the “Twitter-follower-flow” GitHub project. Node-RED is very good for prototyping, that is the reason why it is often used in hackathons. If you are new to Node-RED and you start  to develop a Node-RED flow, you normally have following challenges:

  • How to …
    1. … define own REST endpoints to encapsulate an external API?
    2. … automate the authentication to that external API?
    3. … extract data from the external API?
    4. … customize data and CRUD with databases?

The Node-RED flow of that project has the objective to provide an (little advanced) introduction to the first three topics above. The CRUD (Create, Read, Update, Delete) topic is not covered here. Visit that CRUD example for more information.

  • The “Twitter-follower-flow” example …
    • … uses open technologies (Node-RED is a Project of the OpenJS foundation )
    • … creates no additional costs
    • … has following technical level:
      • Beginner to intermediate
      • Needs a basic knowledge of JavaScript and REST
    • … takes 30 – 45 min to setup the example from scratch
      1. Register on IBM Cloud
      2. Create a Node-RED instance on IBM Cloud
      3. Register at Twitter for a developer API Account
      4. Copy the existing Node-RED flow
      5. Configure the flow
      6. Run the flow

The YouTube video below gives you a 13 min more detailed introduction to the Twitter-follower-flow.

Continue reading