Skip to content

Latest commit

 

History

History
58 lines (42 loc) · 2.6 KB

README.md

File metadata and controls

58 lines (42 loc) · 2.6 KB

aws-rds-kratix-promise

This project provides a Kubernetes operator for managing AWS RDS instances using a Kratix-backed state store. This promise uses aws controllers(ACK) for kubernetes as the underlying operator/controller. Aws-rds kratix promise can be used to enforce company standards, security and rules. This promise is the starting point to create a promise using ACK's so that aws rds resource can be created by the application developer from the EKS cluster itself independently without relying on platform engineering team and needing to have separate access to AWS cloud.

Entrypoint

Prerequisites

  • A running EKS cluster
  • Kratix see install guide
  • Docker environment with the ability to build images for both amd64 or arm64 architectures.

Note

We have tried running this on local kubernetes clusters(minikube and kind) instead of EKS but there are many challenges in it since we are using ACK's for this promise, and they were primarily written to work best on the EKS clusters. We have detailed information about this promise here

Setup (Promise)

kubectl apply --context $PLATFORM --filename promise.yaml
kubectl --context $WORKER get pods --watch

Setup IRSA

AWS ACK requires IRSA setup so that it the controller installed along with promise can interact with the aws-rds APIs. Follow the instruction as mentioned here

Setup (Request)

Once the rds operator is running as seen in the previous step and IRSA setup done, you are ready to fulfil a resource-request as a RDSInstance job:

kubectl apply --context $PLATFORM --filename resource-request.yaml

Kratix Verification

kubectl --context $PLATFORM get crds awsrds.example.promise.syntasso.io

kubectl logs -l=kratix-promise-id=awsrds -n kratix-platform-system -c aws-rds-promise-pipeline

Teardown (Request)

kubectl delete --context $PLATFORM --filename resource-request.yaml

Teardown (Promise)

kubectl delete --context $PLATFORM --filename promise.yaml

References

  1. Kratix docs
  2. Aws controllers for kubernetes docs