Build, maintain, and control Helm chart releases with fewer bugs and code issues

Charts
Charts
Photo by William Iven on Unsplash.

Kubernetes is an orchestration tool for running, automating, and managing the lifecycle of containerized applications. All resources managed by Kubernetes need to be defined in YAML or JSON format and processed by the Kubernetes API server.

Deploying applications with Kubernetes usually requires defining multiple resources (this highly depends on the application itself), such as the config maps, secret deployments, and service resources. Each of these resources needs to be created using the Kubernetes API server. Moreover, some resources need to be created in a specific order or need to wait for the success of the creation of other resources.

Kubernetes…


Security

Manage public access to services behind Nginx ingress controller per endpoint

Photo by King's Church International on Unsplash

Securing access to development and testing environments is a vital issue that needs to be considered during the creations of these environments especially when working with cloud-native tools and providers (it is very common and easy to end up with a public infrastructure 😆).

On the other hand, it is needed sometimes to expose specific endpoints and make them publicly accessible even for the development and testing environments. …


Legacy Migration

Plan for software service migration and make it through with zero downtime and incidents

Male standing. Contemplating.
Male standing. Contemplating.
Photo by Kitera Dent on Unsplash

Introduction

The term Legacy Migration is used widely in the technical world to describe the process of migrating the software stack, infrastructure, or software architecture from one state to another one. Some of the common use cases that can be described by the term Legacy Migration are listed below:

  • Migrating from monolithic to microservices architecture.
  • Migrating services from on-premises to cloud.
  • Migrating services to containers/docker/Kubernetes.

In this post, I will highlight a couple of points that need to be considered while migrating software services from one infrastructure to another. For instance, when migrating service from Docker Swarm to Kubernetes. …


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:

  • Communications between the client and the server are encrypted.
  • The identity of the services or the websites can be verified by the clients using the trusted certificate authorities.

Ordering and using valid SSL certificates cost both money and time (some certificate authorities take three days to issue the needed certificates)…


Centralized Logging

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

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…


Define and control the way you ship software applications to production

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:

  • have proper documentation
  • are prepared for running in production environments
  • are compliant with…


Manage Docker Swarm and Docker Compose deployments with GitHub Actions

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…


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

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…


Docker Swarm Clusters

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

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

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:

  • You have to maintain the infrastructure.
  • It is not free.
  • Editing the…

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