Write a Google GCP client with Go

In this article I will explain the mechanics of writing a client for Google GCP, pretty similar like gcloud. The purpose is to not write a full-featured client (that would make no sense, since you can use gcloud already) but to learn the how to communicate with Google’s GCP API using Go. Such a pkg can be useful in small projects where you need to talk to Google GCP API, like the OpenShift’s GCP Operator. Read On →

How to write your own Kubernetes controller

Write your own controller Before going down the operator framework out there, it is important to understand what is happening under the hood. Then you would be able to appreciate the generated boilerplate code and feel more comfortable to change it. Prereq This tutorial assumes you have a cluster up and running and you can successfully communicate with it (e.g. kubectl get pods -A should work). If you don’t have a cluster, you can setup one locally using CodeReadyContainers(used by the tutorial) or minikube. Read On →

How to run Traefik ingress controller as non-root

What is ingress? Ingress are (in a sense) reverse-proxies. But to understand, you need to know first what a proxy is – and only then will be able to understand the reverse of it. What is a proxy? For those of you who do not know what a proxy is, the word proxy describes someone/something acting on behalf of someone/something else. In terms on networking, when we are talking about a proxy server we are talking about one server that is acting on behalf of another server. Read On →

Contribute to minikube in a nutshell

It’s very easy to contribute to minikube (and other similar packages) when the only thing that is needed is just a version bump in the spec file. You first need to install these: # zypper in osc spec-cleaner Configure your ~/.oscrc file: [general] no_verify = 1 extra-pkgs = vim less mc [https://api.opensuse.org] user=pgeorgiadis # CHANGE email=pgeorgiadis@suse.com # CHANGE pass=123456789 # CHANGE trusted_prj=SUSE:SLE-12:GA openSUSE:13.2 openSUSE:Leap:42.3 openSUSE:Factory Base:System Virtualization:containers SUSE:SLE-12-SP3:GA SUSE:SLE-12:SLE-Module-Containers SUSE:Templates:Images:SLE-12-SP3:Base SUSE:SLE-12-SP3:Update openSUSE:Leap:42. Read On →

My personal Go environment setup

How many go version do you have installed? The default upstream location for the binary is: /usr/local/go. But in SUSE it is: /usr/bin/go. This is a symlink created via update-alternatives. # update-alternatives --list go /usr/lib64/go/1.10/bin/go /usr/lib64/go/1.8/bin/go /usr/lib64/go/1.9/bin/go I want to keep only the 1.10 so I will remove the others: # zypper rm $(rpm -qf /usr/lib64/go/1.8/bin/go) $(rpm -qf /usr/lib64/go/1.9/bin/go) To verify, try update-alternatives once more. There should be only one version: Read On →

Deploy openSUSE Leap15 VM in Kubernetes using KubeVirt

Introduction If you think that Kubernetes is a cluster for managing containers, then you are dead wrong. Kubernetes is a cluster for managing Pods. In most cases, a Pod is considered to be an abstraction of an container object, so Pod talks to Docker and they know each other. What happens though when we introduce a new guy called libvirt and we learn Pod to talk to it? We have KubeVirt. Read On →

How to start with OpenFaaS

Introduction Before we get into what is serverless or openfaas, I would like to talk about the concept behind this. So, before going into the details, I want to give you the big picture of this new way of developing applications and how the users are supposed to use them. Containers are now more efficient than ever So let’s go back in time, when computers were enormous things and filled complete rooms. Read On →

Kubernetes Basics

What is Kubernetes By definition, Kubernetes is an open source container cluster manager, and it is usually referred to by its internal name withing Google development - k8s. Google donated it to the open source world as a “seed technology” at 2015, to the newly formed CNCF - Cloud Native Computing Foundation, which established partnership with The Linux Foundation. The primary goal of Kubernetes is to provide a platform for automating deployment, scaling and operations of application containers across a cluster of hosts. Read On →


Hugo is a static site engine written in Go. It makes use of a variety of open source projects including: Cobra Viper J Walter Weatherman Cast Learn more and contribute on GitHub. Setup Some fun facts about Hugo: Built in Go Loosely inspired by Jekyll Primarily developed by spf13 on the train while commuting to and from Manhattan. Coded in Vim using spf13-vim Have questions or suggestions? Read On →