Articles

Tutorials

"Resizing" a PVC and its PV in Microk8s

With the storage addon enabled, microk8s can automatically provision a PV when a PVC is created. The size of the PV is set according to that of the PVC. However, PVCs cannot be resized after creation. The PVC could be deleted and recreated with a larger size but this would result in the deletion of the PV and, by extension, all the data stored so far in it. This article presents a workaround to resize a PVC and its corresponding PV without any loss of data.
TutorialsMediumKubernetesMicrok8s

K8s NGINX Deployment for Ingress test

An NGINX container can be quite useful to test whether one's Kubernetes setup is working. Here is one example manifest file that deploys such container with an appropriate service and ingress.
TutorialsKubernetes

Cert-manager Certificate Issuer

With cert-manager installed, SSL certificates can be automatically obtained for Ingresses deployed in a Kubernetes cluster. To achieve this, one must deploy the appropriate ClusterIssuers to the cluster. Here are example manifests to do so.
KubernetesTutorials

Encrypting Mosquitto using Certbot

This article presents how to encrypt a Mosquitto MQTT broker using SSL certificates obtained with Let's Encrypt
SecurityMQTTTutorials

Getting Python's requests library to use a local DNS (Core-DNS, Docker-compose, etc.) while behind a proxy

When using Python's requests library, the requests are send through the proxy set as environment variables. Consequently, if the DNS to be used comes before said proxy, the host might not be resolved. This typically happens when resolving a host in Kubernetes using Core-DNS. If the request first leaves the Kubernetes cluster to reach the proxy, then the DNS server becomes unreachable, making the request fail.
DevOpsPythonTutorials

Loading an Neo4J 3.X database in a Neo4J 4.X instance

Loading an Neo4J 3.X database in a Neo4J 4.X instance thumbnail
Importing data from a Neo4J v3 database into a v4 one can be a hassle. Here are the steps to achieve the migration.
TutorialsNeo4J

RESTful API design

There are four main kind of operations when working with a database: Create, Read, Update and Delete (CRUD). However, databases are usually not exposed directly to the clients. Instead, those operations are performed by a server side application with a client-facing API. The most common type of APIs nowadays are based on HTTP. An HTTP API can be built with complete freedom. However, guidelines for best-practice HTTP API design have been created. An API following those guidlines is called a REST (or RESTful) API.
APITutorialsWeb

Self-hosted GitLab instance for DevOps on Ubuntu 18.04

GitLab provides a great number of tools needed for the DevOps cycle of an application. In this guide, we'll install a GitLab instance on our own server and configure it to fit our DevOps needs. Here, we will use a fresh install of Ubuntu 18.04 as a base.
WIPDevOpsTutorials

Deploying a TensorFlow model on a Jetson Nano using TensorFlow serving and K3s

The Nvidia Jetson Nano constitutes a low cost platform for AI applications, ideal for edge computing.However, due to the architecture of its CPU, deploying applications to the SBC can be challenging. In this guide, we'll install and configure K3s, a lightweight kubernetes distribution made specifically for edge devices. Once done we'll build and deploy an TensorFlow model in the K3s cluster.
K3sTutorialsKubernetes

Containerization of a Flask application

Flask can be seen as the equivalent of Express for Python. However, although an express application is basically production ready, a Flask app outputs the following when executed by itself:
TutorialsDevOps