Working With AWS And Kubernetes Together
Working With AWS And Kubernetes Together
Tae a closer look at how these two technologies come together through the AWS EKS tool.
Join the DZone community and get the full member experience.Join For Free
Many developers now package the various services that comprise their applications into separate containers. These containers can then be deployed across clusters of machines, whether virtual or physical. This is a neat and attractive way of approaching software development that also necessitates another innovation—container orchestration. Leading container management tool Kubernetes automates the creation, configuration, scaling, networking, and other facets of container-based applications.
As a way to containerize applications in a cloud environment, Kubernetes offers a lot of flexibility. You can structure your web application into pods, contain processes or functions separately, and create complex communications between worker nodes in different pods. The way Kubernetes is designed to be flexible resembles that of Amazon Web Services and the tools it offers. One such tool in particular, Amazon EKS, is a certified Kubernetes conformant which means you can use existing tooling and plugins from partners and the Kubernetes community on the AWS platform. The service allows you to deploy Kubernetes instances without managing them manually.
Kubernetes on AWS is not a difficult thing to imagine. In fact, the two go together brilliantly, with each offering additional flexibility and features that support the other.
Amazon EKS — A Gamechanger
Amazon EKS is released as a fully-managed Kubernetes environment. Yes, you can install and run Kubernetes on Amazon EC2 manually. (In fact, this is the route to take if you want deeper control over your Kubernetes environment.) However, Amazon EKS eliminates the management aspect of Kubernetes clusters completely.
Amazon EKS is geared more towards developers and those who want to benefit from the containerized environment of Kubernetes but without the usual hassle of configuring Pods and Secrets. You don’t even have to worry about networking and security because they are also handled by Amazon. Based on how EKS is offered, you can direct focus on your workers.
Amazon EKS brings three major advantages to Kubernetes users and those who want to run their applications in a compartmentalized way. First of all, the environment offered by Amazon EKS is completely standardized; it is compatible with any Kubernetes instance on any cloud platform, making migrating to Amazon EKS a breeze.
Amazon EKS is also integrated with AWS Availability Zones, so you know the launched cloud environment will be resilient. Rather than relying on one instance for your Kubernetes master, you get multiple masters running from multiple AZs. The configuration eliminates a single point of failure and allows your environment to be more reliable.
Everything else is automated, which is an advantage of its own. Updates, maintenance, and integration with other Amazon services are fully programmable. You can also set up IAM for authentication or use AWS CloudTrail to monitor your Kubernetes instances without having to configure everything manually.
An Easy Setup
One big advantage of running Kubernetes using Amazon EKS is the easy setup process. When you provision an EKS cluster, new EC2 instances are created automatically, assuming you already have an Amazon S3 running. Amazon EKS will also handle the creation of your starting workers—three workers across three AZs, which you can customize according to your specific needs—and automatically connect everything to your EKS console.
That’s it! At this point, you already have the environment you need to run processes and Kubernetes apps. You can then configure each worker to a specific use or customize the entire environment to better suit your requirements.
As mentioned before, there is no need to integrate other Amazon services manually since they are supported natively by Amazon EKS. Adding Amazon CloudTrail is as simple as defining which workers are to monitor and set the logging parameters. The same can be said for other services that need to be integrated, including encrypted storage and a private network.
Amazon EKS is also available through CLI now that it is out of preview mode. You use the aws eks command for everything from creating a new instance to updating the cluster version. Keep in mind that you are responsible for updating the worker nodes and worker node groups, so you still need to be familiar with kubectl and its commands.
Using Amazon EKS
The possibilities are endless with the Amazon EKS. It is very easy to use Amazon EKS for development thanks to its private networking features. You can create a suitable development environment that matches your production instances perfectly. On top of that, you can now use Jenkins X to manage versioning and create the perfect continuous delivery workflow.
The Amazon EKS is designed with microservices in mind. Each microservice can be fully integrated with AWS services, giving you additional resources such as encrypted storage and logging without taxing the environment itself. You can run complex microservices without the usual hassle of managing the infrastructure.
This is actually something that Skyscanner does with Amazon EKS. The company recently adopted the Amazon EKS and moved its price aggregation app to the ecosystem. There are microservices—running from multiple AZs—that communicate with APIs of airlines and travel agents constantly, expanding Skyscanner’s aggregation capacity to a whole new level.
Additional tools offered by Amazon also makes processing a large amount of data easy. There are on-demand EC2 resources and features such as Spot and Reserved Instances also accessible via Amazon EKS. You can expand your workers temporarily to deal with traffic spikes and increase in computing needs. Of course, that expansion can be fully automated with real-time monitoring.
More importantly, Amazon EKS makes it easy to migrate non-containerized applications to Kubernetes. Even when you need to refactor your codes and start compartmentalizing your application, you can do so with the help of features like built-in ingress controller.
Kubernetes and AWS are highly compatible if you’re looking to optimize the best features of both in the most cost-effective manner possible. This is no secret. AWS’ support of K8s in its managed service offering in Amazon EKS is a huge step towards helping devs create more modular apps, microservices, and run containerization on its own platform successfully. Future updates are already in the pipeline too, so expect more features and streamlined services in the near future.
This post was originally published here.
Published at DZone with permission of Kiran Sangeetam . See the original article here.
Opinions expressed by DZone contributors are their own.