Create an ACK Resource

Create, Update and Delete an AWS Resource using ACK

Note

While this guide provides examples for managing S3 bucket, you can find sample manifest files for other AWS services in test/e2e/resources directory of corresponding service controller’s GitHub repository. For example: Sample manifest for ecr repository can be found here

You can find API Reference for all the services supported by ACK here

Create an S3 bucket

export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)
export BUCKET_NAME=my-ack-s3-bucket-$AWS_ACCOUNT_ID

read -r -d '' BUCKET_MANIFEST <<EOF
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: $BUCKET_NAME
spec:
  name: $BUCKET_NAME
EOF

echo "${BUCKET_MANIFEST}" > bucket.yaml

kubectl create -f bucket.yaml

kubectl describe bucket/$BUCKET_NAME

Update the S3 bucket

read -r -d '' BUCKET_MANIFEST <<EOF
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: $BUCKET_NAME
spec:
  name: $BUCKET_NAME
  tagging:
    tagSet:
    - key: myTagKey
      value: myTagValue
EOF

echo "${BUCKET_MANIFEST}" > bucket.yaml

kubectl apply -f bucket.yaml

kubectl describe bucket/$BUCKET_NAME

Delete the S3 bucket

kubectl delete -f bucket.yaml

# verify the bucket no longer exists
kubectl get bucket/$BUCKET_NAME

Understanding ACK Controller Conditons

ACK controllers use conditions to indicate the state of custom resources and their corresponding AWS service resources. These conditions are exposed in the Status.Conditions collection of each custom resource.

Condition Types

ACK.Adopted

Indicates that an adopted resource custom resource has been successfully reconciled and the target has been created.

  • True: Resource has been successfully adopted
  • False: Resource adoption failed
  • Unknown: Resource adoption status cannot be determined

ACK.ResourceSynced

Indicates whether the state of the resource in the backend AWS service is in sync with the ACK service controller.

  • True: Resource is fully synced
  • False: Resource is out of sync
  • Unknown: Sync status cannot be determined

ACK.Terminal

Indicates that the custom resource Spec needs to be updated before any further sync can occur.

  • True: Resource is in terminal state
  • False: Resource is not in terminal state
  • Unknown: Terminal state cannot be determined

Possible Causes:

  • Invalid arguments in input YAML
  • Resource creation failed in AWS

ACK.Recoverable

Indicates errors that may be resolved without updating the custom resource spec.

  • True: Error is recoverable
  • False: Error is not recoverable
  • Unknown: Recovery status cannot be determined

Possible Causes:

  • Transient AWS service unavailability
  • Access denied exceptions requiring credential updates

ACK.Advisory

Indicates advisory information present in the resource.

  • True: Advisory condition exists
  • False: No advisory condition
  • Unknown: Advisory status cannot be determined

Possible Causes:

  • Attempting to modify an immutable field after resource creation

ACK.LateInitialized

Indicates the status of late initialization of fields.

  • True: Late initialization completed
  • False: Late initialization in progress
  • Not present: No late initialization needed

ACK.ReferencesResolved

Indicates whether all AWSResourceReference type references have been resolved.

  • True: All references resolved
  • False: Reference resolution failed
  • Unknown: Resolution status cannot be determined
  • Not present: No references to resolve

Next Steps

Now that you have verified ACK service controller functionality, checkout ACK functionality for creating resources in multiple AWS regions.

Edit this page on GitHub