Skip to content

driver/kubernetes: add ownerrefs driver option for owner references#3791

Open
abhay1999 wants to merge 1 commit intodocker:masterfrom
abhay1999:kubernetes-driver-owner-references
Open

driver/kubernetes: add ownerrefs driver option for owner references#3791
abhay1999 wants to merge 1 commit intodocker:masterfrom
abhay1999:kubernetes-driver-owner-references

Conversation

@abhay1999
Copy link
Copy Markdown

Fixes #2626

Add support for setting Kubernetes ownerReferences on the builder
Deployment/StatefulSet via a new ownerrefs driver option.

This allows the builder to be automatically garbage-collected by
Kubernetes when its owning resource (e.g. an ephemeral GitHub Actions
runner) is deleted, removing the need to manually patch the Deployment
after creation.

Usage:

docker buildx create \
  --driver kubernetes \
  --driver-opt "ownerrefs=apiVersion=actions.github.com/v1alpha1,kind=EphemeralRunner,name=runner-xyz,uid=<uid>,controller=true,blockOwnerDeletion=false"

Multiple owner references can be specified by separating them with
semicolons:

--driver-opt "ownerrefs=apiVersion=v1,kind=Pod,name=pod1,uid=uid-1;apiVersion=v1,kind=Pod,name=pod2,uid=uid-2"

Each owner reference supports the following fields:
apiVersion, kind, name, uid, controller, blockOwnerDeletion

The implementation follows the same parsing pattern as the existing
tolerations driver option (semicolon-separated entries, each with
comma-separated key=value fields).

Changes:

  • driver/kubernetes/manifest/manifest.go: add OwnerReferences field
    to DeploymentOpt and set it on the Deployment/StatefulSet ObjectMeta
  • driver/kubernetes/factory.go: parse the ownerrefs driver option
  • driver/kubernetes/factory_test.go: add tests for single owner ref,
    multiple owner refs, and invalid inputs

Signed-off-by: abhay1999 abhaychaurasiya19@gmail.com

Add support for setting Kubernetes ownerReferences on the builder
Deployment/StatefulSet via a new 'ownerrefs' driver option. This allows
the builder to be automatically garbage-collected by Kubernetes when its
owning resource (e.g. an ephemeral GitHub Actions runner) is deleted.

Usage:
  docker buildx create     --driver kubernetes     --driver-opt ownerrefs=apiVersion=actions.github.com/v1alpha1,kind=EphemeralRunner,name=runner-xyz,uid=<uid>,controller=true,blockOwnerDeletion=false

Multiple owner references can be specified by separating them with
semicolons. Each owner reference supports the following fields:
  apiVersion, kind, name, uid, controller, blockOwnerDeletion

closes docker#2626

Signed-off-by: abhay1999 <abhaychaurasiya19@gmail.com>

deploymentOpt.Tolerations = append(deploymentOpt.Tolerations, t)
}
case k == "ownerrefs":
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

To avoid inflation of the switch{}, can we rather support an arbitrary yq/jq expression to patch the manfiest?

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request - Add Support for Owner References in Kubernetes Driver

3 participants