Skip to main content

How does ACK work?

Each ACK service controller is packaged into a separate container image that is published in a public repository corresponding to an individual ACK service controller. For each AWS service that we wish to provision, resources for the corresponding controller must be installed in the Amazon EKS cluster. We've already done this in the prepare-environment step. Helm charts and official container images for ACK are available here.

In this section of the workshop, as we will be working with Amazon DynamoDB, the ACK controllers for DynamoDB has been pre-installed in the cluster, running as a deployment in its own Kubernetes namespace. To see what's under the hood, lets run the below.

~$kubectl describe deployment ack-dynamodb -n ack-dynamodb
info

kubectl also contains useful -oyaml and -ojson flags which extract either the full YAML or JSON manifests of the deployment definition instead of the formatted output.

This controller will watch for Kubernetes custom resources for DynamoDB such as dynamodb.services.k8s.aws.Table and will make API calls to the DynamoDB endpoint based on the configuration in these resources created. As resources are created, the controller will feed back status updates to the custom resources in the Status fields. For more information about the spec of the manifest, click here.

If you'd like to dive deeper into the mechanics of what objects and API calls the controller listens for, run:

~$kubectl get crd