Manage SSL certificate orders in K8s with Helm and Let’s Encrypt

Soldiers protecting building entrance
Soldiers protecting building entrance
Photo by Toa Heftiba on Unsplash.

Security is becoming more important than ever and needs to be integrated with any technical solution — even for testing environments. One of the most popular techniques is to use HTTPS protocol with SSL certificates instead of using the plain HTTP protocol. This technique provides us with two main benefits:

Ordering and using valid SSL certificates cost both money and time (some certificate authorities take three days to issue the needed certificates). As a result, there was a need to automate the creation and issuance of the SSL certificates. Most of the major cloud platforms can generate SSL certificates within hours. …


Centralized Logging

Parsing Heroku’s logs and split them into multiple FleunetD messages

Image for post
Image for post
Photo by Mateo Giraud on Unsplash

“Fluentd is a cross-platform open-source data collection software project originally developed at Treasure Data. It is written primarily in the Ruby programming language.”

— Wikipedia

In my previous blog posts, I explained how to use FluentD to parse and ship logs to a centralized logging server (EFK stack), Parse multi-line logs for Rails applications, and provided an overview of some of the most used plugins for parsing logs with FluentD. You can check the mentioned blog posts using the links below:

In this post, I will focus on another issue that can be solved with Fluentd. It will result in improving the quality of the logs and provide a better chance for building visualizations based on the parsed logs. …


Define and control the way you ship software applications to production

Image for post
Image for post
Photo by Jacalyn Beales on Unsplash

Stability and governance are among the hottest topics that should be handled in any software development process. Both topics need to be addressed from the development stage to the deployment and running stages in the production environment.

One of the processes or techniques that can help in mastering software development, deployment, and running of the services is the production readiness process. This process is a bunch of tasks and verification of items that need to be checked during the software development process to ensure that the services:


Manage Docker Swarm and Docker Compose deployments with GitHub Actions

Image for post
Image for post
Photo by Chris Sabor on Unsplash

There are plenty of continuous integration and delivery tools that can be used to run CI/CD pipelines, such as Jenkins, Travis CI, and CircleCI. When it comes to projects hosted on GitHub, there is another native option available, which is GitHub workflows.

GitHub workflows can be used to achieve several goals, such as building Docker images, running unit tests, and even deploying to a remote server. The workflows can be triggered by GitHub events as well as external events. For instance, it is possible to create a workflow that will be executed once you create a new release on the repository. …


Extract key-value pairs from log lines using the FluentD parser

Image for post
Image for post
Photo by David Kovalenko on Unsplash

“Fluentd is a cross-platform open-source data collection software project originally developed at Treasure Data. It is written primarily in the Ruby programming language.”

— Wikipedia

In my previous blog posts, I explained how to use FluentD to parse and ship logs to a centralized logging server (EFK stack), Parse multi-line logs for Rails applications, and provided an overview of some of the most used plugins for parsing logs with FluentD. You can check the mentioned blog posts using the links below:

In this post, I will focus on another issue that can be solved with Fluentd. It will result in improving the quality of the logs and provide a better chance for building visualizations based on the parsed logs. …


Docker Swarm Clusters

Tips for running a Swarm cluster in a highly available mode for production environments

Image for post
Image for post
Photo by Alex Iby on Unsplash

Start running Docker containers with Docker Swarm is a simple task especially if you have the knowledge and experience of using docker-compose files. Creating a Docker Swarm cluster can be easily done by executing a single command line. Moreover, extending the cluster with more servers can be done using a single command line.

On the other hand, Running Docker services on Swarm clusters for production environments could be a challenging task, due to the fact that production environments should be stable and sustain a certain level of quality. …


Publish your Markdown-powered blog on GitHub Pages for free

Image for post
Image for post
Photo by Belo Rio Studio on Unsplash.

There are many options for building and hosting personal blogs. It is possible to use one of the well-known blogging platforms such as WordPress, Blogger, and Tumblr to host your blog. With this option, you don't need to worry about maintaining the blog’s infrastructure and the blogging platform.

On the other hand, you can host your own blog on one of the cloud providers. Below is a well-documented article that describes how to achieve this task using Ghost and DigitalOcean:

All the options mentioned above have some drawbacks:


Running a Traefik cluster and store traffic configuration in a key-value store

Image for post
Image for post
Photo by Adrian Schwarz on Unsplash

Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience. It receives requests on behalf of your system and finds out which components are responsible for handling them.

https://docs.traefik.io/

Running a single Traefik instance in production environments is not recommended simply because Traefik will be a bottleneck of the environment and the environment will be highly available. If Traefik instance is down all services behind it will be down.

Therefore, I started exploring the options available to host Traefik in a high availability mode, and since I am using Docker Swarm for hosting Traefik the backend services, the first idea that came to my mind is to scale Traefik service with more replicas or to deploy it in a global mode (It will be deployed to every swarm worker node). However, It turns out that running Traefik with this setup will introduce the risk of generating the SLL certificates multiple times by different instances (if there is no need for generating SSL certificates, this Idea is enough to host Traefik in HA mode). …


Move your services from docker-compose files to Kubernetes resources and deploy them

Image for post
Image for post
Photo by Andrew Ruiz on Unsplash.

Docker Compose is a great tool that can be used to manage Docker container creations and deployment in development environments. However, it is not the best option for deploying containers into production environments because it lacks a lot of features that are needed for production deployment, such as building container clusters to support high availability of the containers and supporting zero-downtime deployment.

On the other hand, container orchestrators such as Marathon, Nomad, Docker Swarm, and Kubernetes are built to manage container deployments in production environments. These systems are built to handle:


Build and deploy a GitHub action to the GitHub marketplace

Image for post
Image for post
Photo by Leonardo Yip on Unsplash

GitHub supports several third-party tools for continuous integration and continuous deployment tools, such as Travis CI and Circle CI. On the other hand, GitHub offers its own CI service, which is GitGub workflows.

Workflows can be created to achieve several goals, such as building docker images, running unit tests, and even deploying to a remote server. The workflows can be triggered based on GitHub events as well as external events. For instance, It is possible to create a workflow that will be executed once you create a new release on the repository. …

About

Al-Waleed Shihadeh

Team Lead & Product Owner

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store