Docker is awesome! There is no doubt about it. But when it comes to managing the deployment of containerised applications, it is manual. Manual? Then why DevOps?
"Evolution of Deployment", i would say it is fascinating !!!!
Containers are a good way to bundle and run your applications. In a production environment, you need to manage the containers that run the applications and ensure that there is no downtime. For example, if a container goes down, another container needs to start. Wouldn't it be easier if this mechanism was handled automatically by a system?
That's how Kubernetes comes to the rescue! Now the question is "What is Kubernetes?" and "Why Kubernetes?"
Kubernetes is an open source container-orchestration system for automating the deployment, scaling, and management of containerized applications. As an orchestrator, it handles the work of scheduling containers on a cluster and also manages the workloads to ensure that they run as you intend it to run.
While we won't go into the details of how Kubernetes works here, you can learn more by checking out the official Kubernetes website or you can contact me :)
A little bit about our DevOps infrastructure
We use Docker to create images that support our applications with all of their dependencies. This is best done using an automated continuous integration pipeline that includes pushing the versioned images to a Docker registry (which can be private). With these images in a registry, you're ready to move into using Kubernetes.
Your major concerns in architecting your application for Kubernetes execution are redundancy, resiliency, services, networking, monitoring, and persistent state.
Benefits of Kubernetes
As per the first Cloud Native Cloud Foundation(CNCF) project, Kubernetes is the fastest growing project in the history of Open Source software.
Kubenetes is gaining popularity for many reasons, I have highlighted few of them here:
1. Load Balancing and Service discovery
Kubernetes can expose a container using the DNS name or using their own IP address. If traffic to a container is high, Kubernetes will be able to balance the load and distribute the network traffic to maintain the stability of the deployment.
2. Scale Up and Down
Kubernetes will automatically scale up your cluster as soon as you need it, and scale it back down to save you money when you don't. In short, you can autoscale the number of nodes in the cluster and the number of pods in deployment to dynamically adjust the load.
3. Kubernetes Storage
Kuberntes allows you to automatically mount a storage system of your choice, such as local storages, public cloud providers and more.
4. Secret and Configuration management
Kubernetes lets you store and manage sensitive information, such as passwords, OAuth tokens and SSH keys. You can deploy and update secrets and application configuration without rebuilding your container images and without exposing secrets in your stack configuration.
5. Self healing
Kubernetes ensures self-healing pods, if a pod goes down then Kubernetes will restart a new one. It ensures that the count of pod will always match the count in replicas defined in the Deployment.
6. Kubernetes Rollouts and Rollbacks
Kubernetes lets you upgrade the version of a running container without downtime, and if version of the images given by you through command doesn't exist then you can rollback to the previous version without any downtime in Application.
-I have written some of the YAML files "YAML Ain't Markup Language" for application deployment on Kubernetes "Kubernetes/sujeet-appiness". Please check it out.
Kubernetes Certification for DevOps / Developers
1. Certified Kubernetes Administrator (CKA)
2. Certified Kubernetes Application Developer (CKAD)
Some of the tools which are very useful for organisations to automate the infrastructure of CI-CD pipeline are Docker, Jenkins, Ansible, Kubernetes and GitHub Actions.
"We are growing because we are working on pioneering technologies in every field"
WE HAVE EMBRACED KUBERNETES!
Contact Appiness Interactive, a reliable DevOps Company in Bangalore to explore the dynamics of DevOps through different tools.