In this article we’ll talk about Kubernetes and Cloud deployment. We’ll have a short history of what was deploying an application before Docker, Cloud, Virtualization and Kubernetes.
Now we develop locally with already in mind a cloud structure and infrastructure as code. We have a configuration which mimics a cloud environment and you can use something like tilt.dev and we basically replicate the Kubernetes cluster environment locally. Once we have that we feed the K8S objects that we want to run through tilt. So what does the process look like right? App code -> GitRepo/Versioning -> CICD of the app -> infracode k8s repo where version of code repo is increased -> CICD -> K8s deployment -> Node -> Namespace -> Pod -> Container -> User. And this is infrastructure as code, resources and deploy paths are declaratively specified and mirror an intent. We basically developed locally with tilt, then we actually make changes to the app repo. We push the repo to, to the remote. We then have a CI CD step, which for example runs the unit test runs the build, then when this step ends, CI/CD deploys, or increments a version in an infrastructure git repo. So this is your code does law. It’s a declarative repository, specifying resources and steps to deploy an app in a Kubernetes environment. And in this infra code repo, we specify which environment this deploy must go too for example in Production, the latest version which was created in the CI/CD step earlier is tagged and deployed in the k8s cluster. The application is hosted on a node. Inside a pod and then run in the container which we used specify in the Docker manifest file and then a user can access it. And this way, it’s a much much better and replicable development method because you know what everything changes and you can control exactly what goes in which environment and with which resources, if you need to scale, and also if you need to overwrite some files, so it’s a great way to actually do software development these days building for accountability, resiliency, and scalability.