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.
- A running EKS cluster
- Kratix see install guide
- Docker environment with the ability to build images for both amd64 or arm64 architectures.
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
kubectl apply --context $PLATFORM --filename promise.yaml
kubectl --context $WORKER get pods --watch
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
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
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
kubectl delete --context $PLATFORM --filename resource-request.yaml
kubectl delete --context $PLATFORM --filename promise.yaml