Getting Started With AWS EC2

In the previous post, we talked briefly about EC2. In this post, we’ll explore it in a bit more detail. We’ll launch an instance and use it to run an nginx web server which will be accessible from anywhere using a URL. So without further ado, let’s get started :) Search for “EC2” in the AWS search bar. From there click the “Launch Instance” button. Now you would see a screen to choose an AMI. AMIs (Amazon Machine Images) are nothing but virtual machine images. For this blog, we’re going to select the “Amazon Linux 2 AMI (HVM), SSD Volume Type” with the x86 option. On the “Instance Type” screen we select the kind of hardware we want to be allocated to our VM. This is basically like choosing the configuration (CPU, RAM, etc) for our computer which would act as the server. Let’s go with “t2.micro” here. From here click on “Review and Launch” and finally on the next screen click on “Launch”. ...

October 14, 2021 · 5 min · Arsh Sharma

Introduction To AWS IaaS

This article is going to introduce you to the Infrastructure as a Service side of AWS. We’ll start from the basics of how accounts in AWS work and cover some fundamentals in this article. Then in the next post, we’re going to do something a bit more hands-on and see EC2 and S3 in action. AWS Accounts? So let’s talk a bit about AWS accounts first. If you just have a username and password for your account then you have what is called a root account. If you were sent a username, password, account id, and/or a special link to log in then you have an IAM user account. ...

October 2, 2021 · 6 min · Arsh Sharma

So What Even Is This Cloud Computing?

Cloud computing is what everybody seems to be talking about these days? But what does it even mean? In this short article, I’ll go over what it is and the different types of cloud deployment and delivery models. What is Cloud Computing? Earlier to host applications you would have to rent or build data centers where you would store the hardware which would run your servers. Cloud computing simply refers to using computing resources on demand without directly managing them. So instead of building data centers and buying hardware to run your apps you simply rent compute power and use that to suit your needs. Who do you rent it from? Let’s get to that later in the cloud delivery models section. ...

September 24, 2021 · 5 min · Arsh Sharma

Random Bash

Hey everyone, recently I developed quite an interest in Bash so I’ve been trying to learn it. Unlike other things, this time it wasn’t much-structured learning rather just some random tidbits I picked on here and there. In this post I’ll share those things so that together we can demystify this fancy language. Also, some things might just be about Linux in general rather than bash specific. #!/bin/bash You might have seen that a lot of bash scripts begin with #!/bin/bash. So what exactly is this? ...

July 19, 2021 · 5 min · Arsh Sharma

Using Kyverno To Enforce EKS Best Practices

Hey folks, in this post we’ll see how you can use Kyverno to enforce some best practices for your EKS cluster. For those not familiar, Kyverno is a Kubernetes native policy engine that aims to make your life easy when managing clusters. To know more you can read my previous post on Kyverno where we discuss the project and its internals in detail. With that out of the way, let’s get started! EKS best practices recommend the use of separate IAM roles for different use cases. For example, for dev and prod environments you should prefer to have separate IAM roles which can configure objects in those environments. Now the problem that arises with this is how do you make sure that the IAM role which has permission for the dev environment doesn’t accidentally create objects in the production environment? If you have the roles configured properly it would obviously not allow this to happen but with Kyverno not only can you fool-proof this but also make sure that if someone does try this, then it gets reported. ...

June 21, 2021 · 5 min · Arsh Sharma

Channels In Golang

This is the final post in my “Do You Concur?” series. If you’ve not checked the other two out it is highly recommended you do that before reading this one. With that out of the way let’s get started! What Are Channels? A channel in Go can be best understood by comparing it with a box. It is a box where goroutines can put and take out the data. So essentially channels help your goroutines to share data. One goroutine can send a value into the channel and another goroutine can receive those values. A very simple code snippet demonstrating this is: ...

May 27, 2021 · 3 min · Arsh Sharma

Race Conditions In Golang

This post is the second in my series of articles on Concurrency in Go. In this post, we’ll understand what a race condition is, the why and how of it, and finally, we see some code that creates a race condition, and then we will learn to fix that race condition with the help of Mutexes. So let’s get started! The What, Why And How Of A Race Condition A race condition in Go occurs when two or more goroutines have shared data and interact with it at the same time. This is best explained with the help of an example. ...

May 24, 2021 · 6 min · Arsh Sharma

Concurrency In Golang

I recently started learning more about concurrency in golang and so as with other things I learn, I decided to write about it. This article will be a part of a short series I plan to write about concurrency in Go. So let’s get started! Concurrency Vs Parallelism Before we start looking at some code, I think it would be better to know what concurrency actually is. But even before we do that let us first talk about parallelism because it is a word that often comes up when talking about concurrency. ...

May 19, 2021 · 5 min · Arsh Sharma

Pod Health With Liveness Probes

Kubernetes relies on Probes to determine the health of a Pod container. A probe can be understood simply as a periodical diagnostic performed by the kubelet on the container. In this short article, I’m going to show you a liveness probe in action. Liveness probes are used to check if a Pod is healthy (running as expected) or not. It simply acts as a check for Kubernetes to know when it should restart the container. ...

May 13, 2021 · 3 min · Arsh Sharma

kubectl exec Is So Cool!

I recently learned about kubectl port-forward and kubectl exec, and I was amazed by what simple but cool stuff you could o with just these two commands when getting started with Kubernetes. So that’s what this post is going to be about. Running Our Pod I’m going to use minikube to launch my cluster but feel free to use whatever you like. Once you have your cluster up and running (using minikube start), create a nginx pod using: ...

April 29, 2021 · 4 min · Arsh Sharma