Amazon Elastic Kubernetes Service (EKS) – Establishing a Deployment Strategy – SAP-C02 Study Guide

Amazon Elastic Kubernetes Service (EKS)

Amazon EKS is a fully managed Kubernetes service that makes it easier to build, operate, and manage Kubernetes clusters on AWS. EKS offers a native Kubernetes experience to the developer, where the control plane is managed by AWS. EKS is integrated with core AWS services such as CloudWatch, Auto Scaling, and IAM to offer a seamless experience for monitoring, scaling, and load balancing containerized applications. It also brings rich observability, traffic controls, and security features to applications through its integration with AWS App Mesh.

Similar to ECS, with EKS you decide whether to provision the underlying compute resources for your EKS cluster with either EC2 instances, AWS Fargate, or externally. EKS lets you run your Kubernetes Pods on EC2 instances that you either manage yourself (self-managed nodes) or have AWS manage on your behalf (managed node groups). The benefit of using managed node groups over self-managed nodes is that AWS provisions and manages the configuration of the EC2 instances for you. You can alternatively run your Pods on Fargate, letting AWS fully manage the underlying infrastructure. Finally, you can also decide to run your EKS cluster on AWS Outposts or on your own compute resources, for instance, on-premises.

Regarding application deployment on EKS, you rely on Kubernetes application deployment mechanisms. Among the various possibilities, Kubernetes has the specific concept of the Deployment, which lets you define the desired state of a rollout, which you can then leverage to deploy your applications. Deployments on Kubernetes use the same concepts that we have already explored with CodeDeploy, ECS, and others: you do either rolling updates, blue-green deployments, or canary deployments. The Kubernetes ecosystem is now very broad and provides a wealth of solutions to assist you with application deployment. Please refer to the references provided in the Further Reading section and to the Kubernetes ecosystem to find out more on this topic. One example is CDK for Kubernetes (CDK8s). Initially developed by AWS, the CDK8s project has been open sourced and taken over by the Cloud Native Computing Foundation (CNCF), the organization also responsible for Kubernetes. CDK8s provides you the ability to leverage the CDK to deploy Kubernetes applications. For more details, please consult the project’s website at https://packt.link/LmrBi.

AWS Copilot

AWS Copilot is an open source CLI for developers to quickly launch and easily manage containerized applications on AWS. You can use Copilot as your CLI to operate such applications across App Runner, ECS, and Fargate.

Copilot makes it easier for you to get started with deploying your first containerized applications on AWS. It helps you with deploying your application across multiple environments, such as test, staging, and production environments. It also helps you set up the necessary resources, such as networking, load balancing, and DNS records.

Additionally, Copilot assists with the lifecycle management of your application. It will let you create and configure CI/CD pipelines to build and package your application and deploy new releases of your application automatically. It does so by leveraging AWS CodePipeline and the relevant AWS Code services, along with your preferred source code repository (GitHub, Bitbucket, or CodeCommit). Have a look at Copilot’s documentation at https://packt.link/Q3JT9 for more details.