Skip to main content

Posts

Externalize SQL Server Container State using Persistent Volume Claim

BackgroundThis is the seventh part of the series on building highly scalable multi-container apps using AKS. So far in the series we have covered following topics:Part 1 :  we provisioned a managed Kubernetes cluster using Azure Container Service (AKS). Part 2 : Understand basic Kubernetes objects - Kubernetes Namespace. Part 3 : Understand basic Kubernetes objects – Pod and DeploymentPart 4 : Understand Kubernetes object – ServicePart 5 : Understand Kubernetes Object – init containersPart 6 : Manage Kubernetes Storage using Persistent Volume (PV) and Persistent Volume Claim (PVC)This post is about externalizing the state associated with SQL Server 2017 Linux container to an external volume which we provisioned in the previous post. We will be focussing on following topics during this post:Create a StatefulSet Kubernetes object which will be responsible for creating the SQL Server 2017 Linux containerExternalize the state by means of volume mapping to utilize the storage which was p…

Manage Kubernetes Storage using Persistent Volume (PV) and Persistent Volume Claim (PVC)

BackgroundThis is the sixth part of the series on building highly scalable multi-container apps using AKS. So far in this series we have covered following topics.Part 1 :  we provisioned a managed Kubernetes cluster using Azure Container Service (AKS). Part 2 : Understand basic Kubernetes objects - Kubernetes Namespace. Part 3 : Understand basic Kubernetes objects – Pod and DeploymentPart 4 : Understand Kubernetes object – ServicePart 5 : Understand Kubernetes Object – init containersIn this post we will learn about a very important concept of Persistent Volumes (PV) and Persistent Volume Claim (PVC). We will use these concepts to manage data for the SQL Server 2017 Linux container.Why do we need volume in the first place?Managing data in a containerized scenario is quite tricky. Containers are ephemeral by design. Which means that they can be created, deleted and rescheduled on any host in the cluster. If the container is recreated, what happens to the data stored inside the containe…

Continuous Kubernetes deployments with Skaffold on Docker for Mac

Background My previous post was about doing continuous deployment of Kubernetes application using Skaffold to a Minikube cluster. In the recent version of Docker for Desktop (Mac & Windows), there is built in support for Kubernetes. We can decide to deploy multi container applications to a single node local cluster and choose the type of Orchestrator. Currently Docker for Mac supports Docker Swarm and Kubernetes. In this post, I will demonstrate how we can use Skaffold to deploy to a Kubernetes cluster instead of Minikube.
We will perform following steps during the course of this post
Enable Kubernetes support for Docker for MacSet context to work with Docker for MacUse Skaffold with Docker for Mac Enable Kubernetes support for Docker for Mac Lets first enable the support for Kubernetes orchestrator for our installation of Docker for Mac. Navigate to the preferences section of Docker. Select the Kubernetes pane, enable Kubernetes support, select default Orchestrator ad Kubernetes.…

Continuous Kubernetes deployments with Skaffold

BackgroundI have been working with Docker containers and Kubernetes for quite some time now. When working with these technologies the usual workflow involves following steps (bare minimum)containerize you application into a docker image push the changes to the container registry like Docker Hub deploy the containers to a cluster using container orchestration tool like KubernetesWhile developing an application, the developer also tests the application. It is quite time consuming to repeat the whole process every time there a change in the code and you need to rebuild the docker container, push it to registry and do the deployment. What if there was a tool which can do all of this for us and we focus on producing the code?Introducing SkaffoldMy dear friend who is a rockstar when it comes to introducing me to new cool tech, Baltazar Chua mentioned to me about Skaffold. Because Bal has this knack of picking the right tool for the right job, I have a hash tag for him #BalIsARockStar. Skaff…

My developer toolkit 2018 (Mac)

Background Last year I had written a post about my developer toolkit 2017 (Mac). There are some modifications this year. For last 1 year, I have used Mac Book Pro as my primary laptop. As such many of the tools that I have been using are more open source. Its an opportunity to list the current state of things. Lets get started by looking at this years developer toolkit. Terminal utilitiesiTerm2 with OhMyZsh  – continued from past iTerm has become quite integral part of my life on Mac. I love the colorful terminal with the Powerlevel9K theme. Although the code editors and IDE's like Visual Studio Code and IntelliJ Idea offer integrated terminals, I still prefer the dedicated iTerm 2 terminal in standalone mode with full screen. Addition of Powerlevel9k themeThe modern day terminals are no longer black and white. We can modify them with themes to make them sleek and sexy. The post from Jessica Dean helped me to add more jazz to my terminal window.Tabset plugin for iterm2 – continue…

Understand Kubernetes Object - Init Containers

BackgroundThis is the fifth part of the series on building highly scalable multi-container apps using AKS. So far in this series we have covered following topics.Part 1 :  we provisioned a managed Kubernetes cluster using Azure Container Service (AKS). Part 2 : Understand basic Kubernetes objects - Kubernetes Namespace. Part 3 : Understand basic Kubernetes objects – Pod and DeploymentPart 4 : Understand Kubernetes object – ServiceIn this post we will get familiar with the concept of init containers. Lets first understand the need for init-containers. In our application we have the TechTalksWeb API which depends on the persistent data stored in MS SQL Server database. It takes few seconds for the SQL Server container to start and to initialize the static data. In the meantime the web API container will start and try to connect to the database container. It will fail if the database container is not yet initialized. In such situation, Kubernetes provides an object named init-container. …

My experience with Voxxed Days 2018

BackgroundThis post is about my experience about the Voxxed Days Singapore 2018 conference. I had attended the conference previous year and had shared a similar experience following the 2017 event. This is my attempt to give my perspective about the great event which happened on 1st June 2018.Brief history about my own journey from attendee to the speaker Voxxed Days 2017 is a life changing event in my career. I was inspired and highly motivated by the talks from the event. Two talks which remain in my memory forever were the ones by Josh Long and Burr Sutter. There were definitely others which were equally good, but these two guys left a lasting impression on me. I was determined to follow in their footsteps and share my knowledge with the community. I was active in the community events as an attendee before this event. But after 2nd June 2017, I was inspired to give back to the community as much as I could. I managed to speak at couple of our internal Tech Talks in our office which …