Authors
Robert Walters

We are excited to announce that Kestra is now an official DigitalOcean technology partner. With this partnership, we are releasing a dedicated DigitalOcean plugin that covers the most common tasks, and blueprints to get you started!
DigitalOcean is designed for developers and expanding digital businesses, offering quick-boot droplets, managed databases like Postgres, MongoDB, MySQL, Redis, and Kafka, as well as managed Kubernetes (DOKS), block storage, load balancers, and DNS. All features are provided with transparent pricing and an easy-to-use API. Its simplicity explains why millions of developers prefer it, and why it requires smarter automation than just cron jobs running doctl scripts on neglected VMs.
With the new plugin-digitalocean, the DigitalOcean resources most teams touch daily become declarative Kestra tasks:
GetKubeconfig, which drops the kubeconfig straight into Kestra’s internal storage ready for kubectldroplet.Trigger polls the account and fires one execution for every new droplet it discoversEvery List task supports fetchType control, returning row data for iteration, counts for reporting, or ION files stored in Kestra’s internal storage for downstream analytics.
DigitalOcean uses a single personal access token for its API. Ths single broad credential is exactly the thing you don’t want pasted into a flow definition in Git. With Kestra its easy to securely store and reference it within a flow e.g. {{ secret('DIGITALOCEAN_TOKEN') }}
The plugin earns its place on operations that span several API calls, need to poll for state, and have to behave correctly when something fails partway through. Those are orchestration problems, and they are where a flow beats a script.
Provision a droplet per batch job, wait until it is actually active, run the workload, and destroy everything in a finally block that executes whether the job succeeded, failed, or timed out. A crashed workload never leaves a forgotten VM billing by the hour:
id: ephemeral-runnernamespace: company.team
tasks: - id: create_droplet type: io.kestra.plugin.digitalocean.droplet.Create apiToken: "{{ secret('DIGITALOCEAN_TOKEN') }}" name: "runner-{{ execution.id | lower }}" region: nyc3 size: s-2vcpu-4gb image: ubuntu-24-04-x64 apiToken: "{{ secret('DIGITALOCEAN_TOKEN') }}"
- id: wait_until_active type: io.kestra.plugin.core.flow.LoopUntil condition: "{{ outputs.poll.status == 'active' }}" checkFrequency: interval: PT10S maxDuration: PT10M failOnMaxReached: true tasks: - id: poll type: io.kestra.plugin.digitalocean.droplet.Get apiToken: "{{ secret('DIGITALOCEAN_TOKEN') }}" dropletId: "{{ outputs.create_droplet.id }}" apiToken: "{{ secret('DIGITALOCEAN_TOKEN') }}"
finally: - id: delete_droplet type: io.kestra.plugin.digitalocean.droplet.Delete apiToken: "{{ secret('DIGITALOCEAN_TOKEN') }}" dropletId: "{{ outputs.create_droplet.id }}" apiToken: "{{ secret('DIGITALOCEAN_TOKEN') }}"Most teams find unauthorized infrastructure only when invoicing. For example, someone created a droplet in March for testing purposes; once the test ended, the droplet remained. Since nothing was monitoring, there was no time to catch it.
Kestra has events such as droplet.Trigger that bridge that gap by activating within minutes of a droplet appearing on the account, regardless of how it arrived, whether through the control panel, doctl, Terraform, or a teammate’s laptop. The key point isn’t just the notification, but that what was once a discovery becomes an action. This enables Kestra to perform any workflow operation on an unanticipated machine, just as it would normally.
This approach offers various responses tailored to the scenario. Enhance the event by matching tags and naming conventions with your inventory, shifting the focus from “what is this?” to “whose is this and is it authorized?”. Share the incident on Slack for awareness and then pause. Use a HumanTask before any action that could destroy someone’s work, ensuring detection is automatic but consequences are not. Escalate according to a schedule or notify upon discovery, follow up if unclaimed after a week, and quarantine behind a strict firewall instead of powering down. For namespaces with clear policies, take immediate action and document it. These are just some of the many possibilities with using Kestra as your enterprise grade orchestrator for DigitalOcean deployments.
Tag-filtered nightly snapshots with dated names, verified blue-green DNS cutovers with duplicate cleanup, and a weekly parallel census of every resource type on the account posted to Slack. Each pattern ships as a blueprint you can copy today.
TKestra offers sample patterns in the blueprint catalog that serve as a great starting point for your orchestration tasks. Here are a few of the DigitalOcean blueprints:
If you are running workloads on DigitalOcean and want to see what event-driven orchestration changes, book a demo or join the Kestra community on Slack; we would love to hear what you build.
Stay up to date with the latest features and changes to Kestra