Running Ubuntu 20.04 With a GUI In The Cloud

In most cases when we are talking about ‘the cloud’ today, we are talking about virtual machines running on servers in a data center. The real servers below those VMs don’t have a screen attached nor do they have graphics hardware and the virtual machines running on them are usually only accessed for maintenance and configuration via ssh. That’s probably because running a virtual machine with a GUI and a desktop in the cloud that is then accessed over VNC or RDP is not done very often but comes in handy for quite a number of applications. When I recently experimented with this I noticed that there aren’t many descriptions around how to set up such a system. And those that exist did not lead to immediate success, as the way a Linux desktop is started seems to change constantly and depends on which desktop is used. Instructions how to launch a VM with a current version of the Xfce desktop did actually work but I wanted to have an Ubuntu 20.04 Gnome based desktop GUI on a VM in the cloud. After a couple of hours I managed to get a working setup and here is how it is done:

Continue reading Running Ubuntu 20.04 With a GUI In The Cloud

Quick Support Tool: Nautilus ‘Send Path and Filename’ Extension

It happens quite often in my household that I am asked to have a look at an Office document to help with formatting and other things. More often than not the solution to the problem does not come easy and I prefer to work on the solution at my own desk. That means that the file has to be copied, which can be done in many different ways, but that’s usually time-consuming. Since I usually have file system access to the device, I have wished for a long time that I could just send myself a message that contains the path and name for the file in question. So when I had a bit of time recently, I put together an add-on for the Linux Nautilus and Nemo file managers to do just that.

Continue reading Quick Support Tool: Nautilus ‘Send Path and Filename’ Extension

The Cloud Based 5GC – From Theory To Practice

Last year I wrote about a 5G Americas whitepaper that describes how 3GPP has standardized the 5G core in a way that lends itself for cloud based implementation. In short, that means that control plane functions are split into microservices, deployed on bare metal clusters in containers and managed with Kubernetes. So far the theory. Now, products designed this way are announced by first telecommunication vendors.

Continue reading The Cloud Based 5GC – From Theory To Practice

Kubernetes Intro – Part 4 – Persistent Storage

I’m almost happy with the basic hands-on understanding I have gained about Kubernetes about which I have written in part 1 to 3 of this series. I understand much better now how Kubernetes manages Docker containers, how it abstracts and manages the distribution of containers in a cluster of servers and how it makes services running in containers reachable from the outside world. From a developer and network administrator point of view, however, one important thing is still missing: How does Kubernetes manage persistent storage for containers? So let’s have a look at this and also experiment with a hands-on example: Running a WordPress Blog with a MySQL database in a Kubernetes cluster. As you will see, it’s not rocket science.

Continue reading Kubernetes Intro – Part 4 – Persistent Storage

Kubernetes Intro – Part 3 – Create, Dockerize and Push Into the Cluster

So here’s the story so far: In parts 1 and 2 of my Kubernetes intro story, we have set up a Minikube Kubernetes Cluster. We then deployed a container with an app inside, which was downloaded directly from the Kubernetes image hub, into our cluster. Our cluster is small, it only contains one worker node and the container we put into a pod was the only service running in our cluster. If you could follow this description you are now ready for part 3 of the story. Based on what we have done so far we now create our own app, create a Docker image in which the app can run and then deploy it into our Kubernetes cluster. In the end we will have two services running in the cluster: The Echoserver app from part 2 and the app we are going to put together in this episode.

Continue reading Kubernetes Intro – Part 3 – Create, Dockerize and Push Into the Cluster

Kubernetes Intro – Part 2 – The Dashboard

In part 1, I’ve given an introduction to my path to learn more about Kubernetes with a hands-on approach. The story ended with Minikube being installed and a first sample application (the ‘http echosever’) up and running in a container that is managed by Kubernetes. With all of this in place now, the next logical step is to have a closer look at the browser based Kubernetes dashboard and what it shows about this small container deployment.

Continue reading Kubernetes Intro – Part 2 – The Dashboard

Kubernetes Intro – Part 1

When we are talking about the 5G Core and implementations based on containers the story does not end with Docker containers. As a 5GC is not only based on one server and needs lots of redundancy, a management (orchestration) tool is required to manage containers across a large number of servers. There are several tools for this but it seems that Kubernetes is the tool of choice for most these days. I did a lot of reading about Kubernetes but the whole thing was still too abstract for me no matter how much I read about it. So I decided to get some hands-on experience myself. Here’s how I went about it in case you’d like to give it a go as well.

Continue reading Kubernetes Intro – Part 1

Dockerize Me – Containers Managing Containers – Part 5

In the previous episode, I’ve moved a WordPress Blog from the simple installation of part 1 to the more sophisticated reverse proxy setup I have put together in part 3 to demonstrate that containers are ‘portable’ between different servers with little effort. Moving the container also showed that the nginx-gen container recognizes when new containers are started and can actually access the environment of that container. It uses this information in turn to create a vhost configuration for the reverse proxy and triggers the creation of a new Letsencrypt certificate. The big question: How does the software that runs in the nginx-gen container get informed that a new container has started and how and why can it access the environment variables of another container? After all, while this is a nice functionality it also raises the question of container security and privacy. Can any container look at the inside of other containers on a server?

Continue reading Dockerize Me – Containers Managing Containers – Part 5

Dockerize Me – Moving Containers To Another Host – Part 4

In part 3 of this series we’ve created a reverse proxy setup with Docker containers in the public cloud to serve the content of several web services from independent docker containers with individual domain names. In this episode I’ll test the concept that containerized applications can easily be moved from one host to another.

Continue reading Dockerize Me – Moving Containers To Another Host – Part 4

Dockerize Me – Several Services and LetsEncrypt – Part 3

After the basic installation of Docker and getting a WordPress blog up and running in Docker containers in part 1, this part of my Docker series will take a look at how to add two important features to the setup:

  • TLS certificates and LetsEncrypt with auto-renewal
  • How to host several websites on one server that are accessible on the same ports (80 for http and 443 for https)
Continue reading Dockerize Me – Several Services and LetsEncrypt – Part 3