Discover how Mon Petit Placement, a french startup, migrated their infrastructure to the cloud, and more particularly on Kubernetes and how they made their legacy cloud-native.
Starting a tech company is always challenging in terms of infrastructure choice. Technologies are fast-evolving, many use cases are different, and all access to resources are not always equal. That said, many experts agree on the choice of containers and Kubernetes to easily deploy and grow your business.
Kubernetes is the market's most renowned and widely-used container orchestrator, known for its ability to effectively monitor container processes and their network connection. It's a must-have when it comes to maintaining a container environment and build, test and run applications.
What makes Kubernetes so unique?
What makes Kubernetes so unique and what benefits can you expect from using it? For startups beginning to build their infrastructure, Kubernetes and containers are ideal. For one thing, containers allow for growth without placing too many limitations on the future. As a result, your infrastructure can be evolutive.
In addition, Kubernetes’ Autoscaling feature makes it possible to adapt pod deployment to the number of received requests while the Autohealing feature automatically respawns faulty containers. This, in turn, makes your infrastructure scalable and reliable.
As container architectures are portable, lock-in is limited to a particular technology provider. Because it can run in any Kubernetes environment, your infrastructure can thus migrate more easily. Container technology is the brain behind this: it simultaneously carries the OS, software and its dependencies.
But despite those great arguments, remember that Kubernetes can also be a challenging technology. Maintaining Kubernetes is complex. It requires a good understanding of the underlying infrastructure. On top of that, networking and security can prove to be tricky as your team needs to have a deep understanding of the subject to allow for smoother operations.
These Kubernetes challenges can still be mitigated by working with a managed service provider or Kubernetes consultant as well as investing in training and resources to build in-house expertise.
Whether you feel like it is wiser to keep a traditional approach, go full serverless and use small-scale applications, or simply maintain the status quo for legal or third-party constraints, having the full picture and knowing your options is good.
So, without further ado, let’s go through these steps to launch and scale your startup to new heights with Kubernetes!
Analyze your case
The first step is to take a look at your startup model and assess the need to start with Containers and Kubernetes so you can better understand why you are going in that direction. Understandably, your choices will often be challenged: by your clients, your team, new developers, or even your potential investors.
Two criteria to consider are scalability and the flexibility needs of your applications. Scalability depends on your business: How many users will you serve? How much data can you expect? What size of processes do you need to provide your service? When do you ideally need to scale up and down?
Human resource management is also an important topic to tackle. Estimate your team’s level of Kubernetes knowledge and anticipate all the future needs that it would require. Team members can perform a series of assessments or quizzes to gauge their understanding of various Kubernetes concepts! Plenty of material is available online like those CKAD exercises. Individually or as a team, you can obtain certifications such as the Certified Kubernetes Administrator (CKA) or the Certified Kubernetes Application Developer (CKAD).
You can also read our blog article on Should I use Kubernetes?
Take the plunge
By that point, it’s time to create your first Proof of Concept to confirm your decision, test the implementation, and actively understand how it applies in your environment. You can now identify potential issues (such as network misconfiguration, stuck deployment, or unresponsive pods) and adjust them before going further.
Developers may have a very different experience depending on the use case,the architecture they are trying to configure, and their own experience: each project has its own learning curve. Using a cloud provider with managed Kubernetes is a good idea as you can start fast and focus solely on how it works, without worrying about how to manage it.
Another interesting opportunity to learn Kubernetes is to use well-known applications and deploy them, so you can see how it works and understand dependencies. Learning how to deploy a Wordpress in a cluster is a great example. Also, do not forget to check out our complete library with more useful applications. Lastly, think about where you store and push your container images: you can host them on your own server or use a managed service such as Scaleway Container Registry.
Have you decided to settle on Kubernetes to start your application? Now is the time for the development phase! Start to write your first Kubernetes manifest, and create and deploy your first containers to test and see if it deploys as expected.
To fully master Kubernetes, you need to ensure you understand all the components around Kubernetes, like networking or data storage.
CNI in Kubernetes is a Network component responsible for allocating IP addresses, creating network namespaces, and setting up network interfaces and routes for pods, or even with the solution for persistent data storage. There are different existing plugins like Cilium, Flannel, Calico or Weave. Each network plug-in has different forces in security, application performance, or policy enforcement, which can fit a particular use case.
You can also configure a Load Balancer in front of your cluster to increase reliability and reduce external threats.
Volatility is assumed In Kubernetes' world: you need to understand how to sustainably store your data. Persistent Volume is a method to attach a storage volume with an independent lifecycle. To do that, you need to use a volume plugin called Container storage interface (CSI), which will connect persistent storage products such as Block Storage. So voluntary or not, a cluster can disappear and the data remain safe and available to restart afterward.
You can get inspired from this guide on service exposure and data persistence for a Kubernetes cluster - this tutorial is about building for a multi-cloud environment, but configurations are similar if you are building on a single-cloud Kubernetes cluster.
Time to go into production
Now is the time to separate your different environments!
When you have more traffic and clients to serve, you receive more feature requests, stability requirements and bug reports. To successfully overcome these challenges, you need to deliver new and better quality code faster. That’s when the question of having a CI/CD pipeline and separating your environment arises.
Kubernetes will help you set up a CI/CD pipeline quickly and easily. Continuous development and integration suit Kubernetes' design very well, as it is made to roll out new versions of an application without disruption. In addition, many existing tools are available to help you create a state-of-art workflow, such as Gitlab integration or Jenkins.
Thanks to Kubernetes and the CI/CD pipeline, you can tell the difference between development and staging environments, which in turn allows you to validate your development before going to production. Kubernetes is of great support to help implement good practices, especially in terms of architecture and deployment: you want to avoid any disturbance between your developers’ actions and clients’ usage.
As your startup expands and attracts more users, your Kubernetes infrastructure will autoscale. It is important/crucial to monitor these clusters closely to ensure they are operating at their best performance. Don’t hesitate to set up Grafana and Loki to gather logs as well as monitor and display performance data.It will allow you to gain insight into the health of your infrastructure and applications, such as CPU and memory resources usage in your clusters or even metrics related to deployments like replica count or rollout status. Additionally, you will be able to identify potential scaling issues and opportunities for improvement. Scaleway is currently releasing a beta version of its own Observability tool, sparing you the need to manage it on your own.
As an early-stage startup, your level of mastery will increase with time, but you may not have all the expertise needed to wield full control over Kubernetes. With that in mind, engaging with the active and supportive Kubernetes Slack community is a wise move. Consider working with consultants or managed service providers to ensure you get the most out of the platform. It will help to keep improving your Kubernetes deployment by adding new features or tools like CI/CD service, monitoring, and service mesh. It will also help in optimizing performances and addressing security concerns.
Implementing all those good practices and using the latest version of Kubernetes will guarantee that your startup operates at peak efficiency and is protected from potential threats at all times
Do it with Scaleway
Scaleway offers a variety of products and services to assist you in launching and expanding your business with Kubernetes.
Kubernetes Kapsule, Scaleway’s managed Container orchestrator, is a free service that can be easily integrated within all our Compute services.
For businesses with multi-cloud or hybrid cloud needs, we also offer Kubernetes Kosmos, which enables deployment across various platforms.
We can support startups grappling with heavy workloads by providing a dedicated control plane, enterprise instances, and GPU options.
Additionally, we assist clients with large data processing and machine learning training. As such and for an optimal experience, Scaleway offers a container registry, automation command through an API/CLI as well as an integrated ecosystem.
This article will guide you through the best practices to deploy and distribute the workload on a multi-cloud Kubernetes environment on Scaleway's Kosmos.
Multi-cloud environment presents multiple perks: redundancy, reliability, customer coverage, etc. It also raises questions we will address here about the management and implementation of Multi-Cloud.