Skip to content

Add support for ACM ACME resources#108

Open
KyleBS wants to merge 1 commit into
aws-controllers-k8s:mainfrom
KyleBS:add-acme-resources
Open

Add support for ACM ACME resources#108
KyleBS wants to merge 1 commit into
aws-controllers-k8s:mainfrom
KyleBS:add-acme-resources

Conversation

@KyleBS

@KyleBS KyleBS commented Jul 14, 2026

Copy link
Copy Markdown

Issue #, if available: N/A

Description of changes:

Add support for ACM's ACME protocol resources. This enables Kubernetes users to manage ACME endpoints, domain validations, and external account bindings as native Kubernetes resources.

New CRDs:

  • AcmeEndpoint: managed ACME server with unique endpoint URL
  • AcmeExternalAccountBinding: EAB credentials for ACME client auth
  • AcmeDomainValidation: DNS prevalidation for domain authorization

Key features:

  • EAB credentials (keyId + macKey) are automatically written to a K8s Secret on creation via GetAcmeExternalAccountBindingCredentials
  • Cross-resource references between EAB/DomainValidation and Endpoint
  • Status fields expose endpointURL for ACME client configuration

SDK bumped from v1.33.0 to v1.42.0 to include ACME operations added in the 2026-06-30 SDK release.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@ack-prow
ack-prow Bot requested review from gustavodiaz7722 and michaelhtm July 14, 2026 01:49
@ack-prow

ack-prow Bot commented Jul 14, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: KyleBS
Once this PR has been reviewed and has the lgtm label, please assign a-hilaly for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ack-prow ack-prow Bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Jul 14, 2026
@ack-prow

ack-prow Bot commented Jul 14, 2026

Copy link
Copy Markdown

Hi @KyleBS. Thanks for your PR.

I'm waiting for a aws-controllers-k8s member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@KyleBS
KyleBS force-pushed the add-acme-resources branch 4 times, most recently from 0f5d21c to 29981e6 Compare July 14, 2026 15:36
…ainValidation

Add support for ACM's ACME protocol resources. This enables Kubernetes
users to manage ACME endpoints, domain validations, and external account
bindings as native Kubernetes resources.

New CRDs:
- AcmeEndpoint: managed ACME server with unique endpoint URL
- AcmeExternalAccountBinding: EAB credentials for ACME client auth
- AcmeDomainValidation: DNS prevalidation for domain authorization

Key features:
- EAB credentials are retrieved via GetAcmeExternalAccountBindingCredentials
  and written into a user-specified, pre-existing Secret. The sensitive macKey
  is written under the user-provided key (defaulting to macKey), and the keyId
  under a fixed keyId key, following the same pattern as the Certificate
  resource's exportTo field. The Secret must exist first.
- The non-sensitive key identifier is also surfaced in status.keyID so ACME
  clients can reference it without reading the Secret
- Cross-resource references between EAB/DomainValidation and Endpoint
- Status fields expose endpointURL for ACME client configuration

SDK bumped from v1.33.0 to v1.42.0 to include ACME operations added
in the 2026-06-30 SDK release.
@KyleBS
KyleBS force-pushed the add-acme-resources branch from 29981e6 to 9d12bfa Compare July 14, 2026 15:37
is_ignored: true No newline at end of file
is_ignored: true

AcmeEndpoint:

@gustavodiaz7722 gustavodiaz7722 Jul 14, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like we are missing proper tag support for all the new resources. We follow the existing Certificate convention for tag support(I.E sync.go contains logic for fetching an updating tags).

In each resource's hooks.go add var syncTags = tags.SyncTags and var listTags = tags.ListTags; add a sdk_update_pre_build_request hook that calls syncTags when delta.DifferentAt("Spec.Tags") and short-circuits with !delta.DifferentExcept("Spec.Tags"); and add a sdk_read_one_post_set_output hook that populates tags via listTags.

@@ -0,0 +1,258 @@
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like we only did create and delete test for AcmeEndpoint and AcmeDomainValidation. Can we add update operation as well in e2e test?

@@ -0,0 +1,258 @@
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth mentioning I notice in some of the test we don't validate the state of the resource in AWS, instead we rely solely on whats in the CR spec/status.

I'd suggest we make AWS describe api calls after resource is synced to verify that the source of truth(aws) matches what's in the spec/status.

We've had issues in the past with e2e test missing bugs/regressions because e2e test did not verify against AWS.

go_version: go1.26.4
version: v0.61.0
api_directory_checksum: 1f8c794be4a652f9a9cbd936b859e8f103e9291e
build_date: No Build Date Provided.

@gustavodiaz7722 gustavodiaz7722 Jul 14, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just an FYI, make sure when you build the controller locally you have latest changes on main branch runtime and code-gen packages in your workspace.

Followed by running make build-controller SERVICE=ACM. This metadata.yaml file seems incorrect as it is right now. You may have had out of date runtime and code-gen packages in your local workspace when you built the controller.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants