April 21, 2020
Containerization has become very popular during the last few years, especially given the growth of microservices architectures and cloud services. Using a stack such as Docker, Kubernetes and Helm can make one’s life easier in terms of building, running and deployment options as an introduction to containerization and Azure API Management.
Let’s go through the basics of each of the three tools, understand how they work, and the benefits they could bring to our day-to-day activities.
Docker is a software program that performs operating-system-level virtualization, also known as “containerization”. You can create Docker image files in which you describe what will be copied in the Docker “image”, what will be run, dependencies and so on. Then you can run that image as a “container” in Docker. Images can be saved to a repository so anyone can run it without having to take the code and build it.
Having all libraries and dependencies built as a single package in the Docker image you can run the application on any machine and have the same behavior. This way you can avoid conflicts between libraries or system settings that sometimes appear when running an application directly in the OS or in an application server.
You can install Docker from here.
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.
Kubernetes is even more helpful when running a complex application based on containers. It interacts with several groups of containers and automates various manual processes: controls which server will host the container, how it will be launched etc.
These are some key features of Kubernetes:
A Kubernetes cluster consists of a set of worker nodes that run containerized applications. The nodes host pods which are parts of the application. The cluster is controlled through a master. The master contains an API server that receives commands (as JSON or YAML) from kubectl (a CLI on the local workstation).
Handling a complex application on Kubernetes can be quite difficult and would involve many Kubernetes resources. Helm steps in to simplify things; it allows the packaging and deployment of applications on a Kubernetes cluster.
Helm is a package manager, it bundles files for an application (config-map.yaml, deployment.yaml, service.yaml). The files are templatesthat are combined with configurable valuesthat are set in files (values.yaml) or during runtime. The collection of templates and value files is called a Helm chart.
Once you have the application described as a Helm chart you can install, update or delete the chart from the Kubernetes cluster using Helm. Helm also allows you to install the same chart multiple times with different runtime values, thus obtaining multiple releases for the same application.
Another advantage of Helm is the installation of 3rd party applications or community charts. You can simply add the Helm repository that contains the community chart you need, and in one command you can install it in the cluster.
Key features of using Helm:
Docker, Kubernetes, and Helm are useful tools to master. With Docker you can easily run an application on multiple machines and be sure you obtain the same behavior, you can scale up with Kubernetes and deploy multiple services into a cluster, and then package all your services into a proper multiservice application with a Helm chart.
Containerization and Azure API Management have been the topic of the most recent meetup in Craiova. Learn more about our upcoming events here and join our MeetUp group to stay up to date with future sessions. For more information on an introduction to containerization and Azure API Management or complex project deployments, don’t hesitate to contact us.
We’d love to hear about your plans for transformation.
Use the form below to send us a message, and we will get back to you within 24 hours.
New Broad Street House, 35 New Broad Street, London, EC2M 1NH
4D Gara Herastrau Street, 2nd Floor
Building C, 020334
+40 31 425 19 08
30 Stirbei Voda Blvd,
Malmo Business Center, 200423
+40 35 142 36 80