A Single Consolidated Approach for Managing All Resources
As an alternative to using ACK, you could just adopt two separate control planes—AWS for automated management of your databases and K8s for the automated management of your code and other stateless resources. You can still use the Aurora service endpoints directly in your code. However, this creates challenges with managing your service endpoints.
Cloud-native databases often expose multiple end points. Examples of this may include database instances that are being used for different software development lifecycle stages, like separate instances for development, various testing instances, and production. In these cases, you don’t want to hard-wire the connection from your application to an instance endpoint for each type of instance of your database, requiring you to change your code from one environment to another. Instead, you can use the built-in Domain Name System (DNS) based service discovery for external services, just like you can for the native services. If an external service’s IP address changes, you can change the IP address in the DNS without making any change to the application. You need to be able to leverage the built-in service discovery mechanisms inside of K8’s for services outside the K8s cluster, just like you can for services inside the cluster.
Developers will also be deploying containers and their associated resources in their cluster using the K8s resource model. ACK provides the simplicity of a single consolidated approach to managing not only your workloads running in K8s but also their dependencies rather than multiple infrastructure automation tools for managing different sets of dependencies.
Also, ACK is declarative, so you can define the desired state and allow the controller to take the necessary steps without defining an imperative list of steps. The K8s control loop manages the state of your cluster as well as the configuration you passed in for your AWS resource. There are times where a resource that an ACK service controller is managing is modified outside of ACK, e.g., through the AWS Command Line Interface (AWS CLI) or the console. Every 10 hours, an ACK service controller will look for any drift and attempt to remediate. As part of the remediation, an ACK service controller will reconfigure the managed resource based on the specification for the desired state. A single consolidated approach using ACK makes it easier to adopt a GitOps based approach to automating your deployments.
ACK for Amazon RDS
You can see a complete list of AWS services that can be managed via ACK here. Our focus in this article is on Amazon Aurora which is part of Amazon RDS.
Amazon RDS is a collection of database engines. A recent Gartner Group solution scorecard gave Amazon RDS an overall score of 95. The breakdown of this score and the methodology are part of this report. Amazon RDS includes the following engines:
All the Amazon RDS database engines leverage a single ACK controller. The ACK for Amazon RDS service controller allows you to manage a wide range of Amazon RDS API operations, including engine and instance type, backup configuration, scaling configuration, serverless capacity, automatic minor version upgrades, multi-AZ configuration, and more. ACK for Amazon RDS itself runs in a container on any K8’s distribution on-premise or in the cloud. Hence it is not limited to Amazon Elastic Kubernetes Service (Amazon EKS).
Get Started
ACK for Amazon RDS bridges the best of two worlds. K8s provides the orchestration of containers that run the application code. RDS provides the fully managed database experience for Aurora. ACK for Amazon RDS allows K8s to manage Aurora as an external resource. Developers and operators can keep working within a familiar K8s environment because everything is managed via a simple consolidated K8s resource model.
You can learn more about ACK from the project documentation, which includes detailed instructions and tutorials for obtaining and configuring ACK to create and manage an Amazon RDS or Aurora Serverless v2 cluster from Amazon EKS, Amazon’s managed K8s service. While these instructions use EKS, note that ACK works with any K8s distribution. There are also videos on how ACK works and a blog post that walks you through deploying an application on Kubernetes with Amazon RDS using ACK. To learn more about Aurora Serverless v2, head over to the product page for additional documentation and blogs.