Skip to main content

Posts

Showing posts from 2020

CI/CD Automation: How to wait for Helm deployment into Kubernetes cluster

 So I created this post because with Helm v3 , if you use --wait option and the timeout is reached and the deployment isn't successful, Helm marks the deployment as failed . The problem is that subsequent deployment (upgrade) that may contain the fix won't work as expected and it will end up in error like this: [some-name] has no deployed release   The only way to fix this is manual intervene and deleting the previous failed release. This is not only scary but also against the automation process. If we remove --wait option, Helm will mark the deployment as successful regardless. My solution to this that works nicely is as per below: Remove --wait option from helm deploy Use this command to retrieve the list of deployment for that namespace that you are deploying against: kubectl get deployments -n ${namespace} -o jsonpath='{range .items[*].metadata}{.name}{","}{end}' You can use split to turn the comma separated list above into an array Then you can run mul

Be A Good Developer - Part 1

Many developers try to learn and implement design patterns and object-oriented principles but most of the time they fail. Many only know those principals but they don't know how to use them or they don't know what they are for. However, there is one principle that can help you from drowning. That is called Simplicity! Simplicity doesn't mean you do the first approach that comes to your mind. That's probably the simplest approach though! Simplicity means that you design a component and write the code in such a way that: Looking at the code, anyone can tell what it's doing Maintaining the code is easy and can be changed easily if needed Debugging is easy and you don't need a million of break-points in order to find the bug.  Writing unit test is easy and simple too. The call-hierarchy of the methods in your code is not infinite! If a part is broken and you have to fix it, you don't need to fix everything else. To make your code/component simpl

Be A Good Developer - Introduction

After many years of coding, debugging, designing and improving applications I came to this point that being a good developer is the key for an application as well as the development team to success. As for an application, good developers make it less problematic and easy to maintain as for the development team, they help others to learn efficient code. This helps to reduce the cost of application maintenance as well as the time of getting new developers up to speed. Many have got this wrong impression that a good developer knows more about design patterns and knows how/when to use them. But that's not the case. In fact, a lot of developers with a good knowledge of OOP and design patterns end up in overengineering the application. No matter what framework or solution you are using, a good developer still worths a million! They are the real assets of a software company or a development team. Now the question is who is a good developer and what makes them so special? Plea