TL;DR
API DigitalOcean mengelola droplet, volume, firewall, penyeimbang beban, klaster Kubernetes, dan lainnya. Autentikasi dengan token akses pribadi, panggil api.digitalocean.com/v2, dan tangani batas laju. Untuk pengujian, gunakan Apidog untuk memvalidasi konfigurasi, menguji penyediaan infrastruktur, dan mendokumentasikan alur kerja otomatisasi Anda.
Pengantar
DigitalOcean menyederhanakan komputasi awan. Sementara AWS dan GCP menawarkan ratusan layanan, DigitalOcean berfokus pada hal-hal penting: komputasi (droplet), penyimpanan (volume), jaringan (IP mengambang, firewall), Kubernetes terkelola, dan platform aplikasi. API-nya sesuai dengan kesederhanaan ini.
Pengembang menggunakan API DigitalOcean untuk:
- Membangun lingkungan pengembangan secara otomatis
- Mengelola klaster Kubernetes
- Infrastruktur sebagai kode dengan Terraform atau Pulumi
- Penyediaan pipeline CI/CD
- Penyebaran multi-wilayah
Autentikasi
Token akses pribadi
- Buka DigitalOcean Dashboard → API → Generate New Token
- Beri nama token dan atur masa berlaku
- Salin dan simpan dengan aman
Menggunakan token:
curl -X GET "https://api.digitalocean.com/v2/account" \
-H "Authorization: Bearer YOUR_TOKEN"
Format respons
{
"account": {
"droplet_limit": 25,
"email": "you@example.com",
"name": "Your Name",
"uuid": "abc123xyz",
"email_verified": true,
"status": "active"
}
}
Droplet (mesin virtual)
Daftar semua droplet
curl -X GET "https://api.digitalocean.com/v2/droplets" \
-H "Authorization: Bearer YOUR_TOKEN"
Buat droplet
curl -X POST "https://api.digitalocean.com/v2/droplets" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-droplet",
"region": "nyc1",
"size": "s-2vcpu-4gb",
"image": "ubuntu-20-04-x64",
"ssh_keys": ["ssh-rsa AAAA..."],
"backups": false,
"ipv6": true,
"tags": ["web", "production"]
}'
Ukuran populer:
s-1vcpu-1gb- 1 vCPU, 1GB RAM ($5/bln)s-2vcpu-2gb- 2 vCPU, 2GB RAM ($10/bln)s-2vcpu-4gb- 2 vCPU, 4GB RAM ($20/bln)s-4vcpu-8gb- 4 vCPU, 8GB RAM ($40/bln)
Wilayah:
nyc1,nyc3- New Yorksfo3- San Franciscoams3- Amsterdamsgp1- Singapura
Dapatkan detail droplet
curl -X GET "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Hapus droplet
curl -X DELETE "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Tindakan droplet
Reboot:
curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "reboot"
}'
Ubah ukuran:
curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "resize",
"size": "s-4vcpu-8gb"
}'
Snapshot:
curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "snapshot",
"name": "my-snapshot"
}'
Volume (penyimpanan blok)
Buat volume
curl -X POST "https://api.digitalocean.com/v2/volumes" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"size_gigabytes": 100,
"name": "my-volume",
"region": "nyc1",
"description": "Data volume for web servers"
}'
Lampirkan volume ke droplet
curl -X POST "https://api.digitalocean.com/v2/volumes/VOLUME_ID/actions" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "attach",
"droplet_id": DROPLET_ID
}'
Daftar volume
curl -X GET "https://api.digitalocean.com/v2/volumes" \
-H "Authorization: Bearer YOUR_TOKEN"
Jaringan
Daftar IP mengambang
curl -X GET "https://api.digitalocean.com/v2/floating_ips" \
-H "Authorization: Bearer YOUR_TOKEN"
Tetapkan IP mengambang
curl -X POST "https://api.digitalocean.com/v2/floating_ips" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"droplet_id": DROPLET_ID,
"region": "nyc1"
}'
Buat firewall
curl -X POST "https://api.digitalocean.com/v2/firewalls" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "web-firewall",
"inbound_rules": [
{
"protocol": "tcp",
"ports": "80",
"sources": {
"addresses": ["0.0.0.0/0"]
}
},
{
"protocol": "tcp",
"ports": "443",
"sources": {
"addresses": ["0.0.0.0/0"]
}
},
{
"protocol": "tcp",
"ports": "22",
"sources": {
"addresses": ["your-ip/32"]
}
}
],
"outbound_rules": [
{
"protocol": "tcp",
"ports": "80",
"destinations": {
"addresses": ["0.0.0.0/0"]
}
}
],
"droplet_ids": [DROPLET_ID]
}'
Penyeimbang beban
Buat penyeimbang beban
curl -X POST "https://api.digitalocean.com/v2/load_balancers" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-lb",
"region": "nyc1",
"algorithm": "round_robin",
"health_check": {
"protocol": "http",
"port": 80,
"path": "/",
"check_interval_seconds": 10,
"response_timeout_seconds": 5,
"healthy_threshold": 3,
"unhealthy_threshold": 3
},
"forwarding_rules": [
{
"entry_protocol": "http",
"entry_port": 80,
"target_protocol": "http",
"target_port": 80
},
{
"entry_protocol": "https",
"entry_port": 443,
"target_protocol": "https",
"target_port": 443,
"tls_passthrough": true
}
],
"droplet_ids": [DROPLET_ID_1, DROPLET_ID_2]
}'
Klaster Kubernetes
Buat klaster Kubernetes
curl -X POST "https://api.digitalocean.com/v2/kubernetes/clusters" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-cluster",
"region": "nyc1",
"version": "1.28",
"node_pools": [
{
"name": "worker-pool",
"size": "s-2vcpu-4gb",
"count": 3,
"auto_scale": true,
"min_nodes": 2,
"max_nodes": 6
}
]
}'
Daftar kumpulan node
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools" \
-H "Authorization: Bearer YOUR_TOKEN"
Skalakan kumpulan node
curl -X PUT "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools/POOL_ID" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"count": 5
}'
Hapus klaster
curl -X DELETE "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Pengujian dengan Apidog
Penyediaan infrastruktur mahal. Uji secara menyeluruh sebelum membuat sumber daya.

1. Penyiapan lingkungan
DIGITALOCEAN_TOKEN: your_token
BASE_URL: https://api.digitalocean.com/v2
DEFAULT_REGION: nyc1
DEFAULT_SIZE: s-2vcpu-4gb
2. Validasi respons
pm.test('Droplet created successfully', () => {
const response = pm.response.json()
pm.expect(response.droplet).to.have.property('id')
pm.expect(response.droplet.status).to.eql('new')
})
pm.test('Token is valid', () => {
const response = pm.response.json()
pm.expect(response.account).to.exist
pm.expect(response.account.status).to.eql('active')
})
3. Konsep uji coba
DigitalOcean tidak menawarkan uji coba yang sebenarnya, tetapi Anda dapat memvalidasi masukan:
const validRegions = ['nyc1', 'sfo3', 'ams3', 'sgp1']
const validSizes = ['s-1vcpu-1gb', 's-2vcpu-2gb', 's-2vcpu-4gb']
pm.test('Region is valid', () => {
const requestBody = JSON.parse(pm.request.body.raw)
pm.expect(validRegions).to.include(requestBody.region)
})
pm.test('Size is valid', () => {
const requestBody = JSON.parse(pm.request.body.raw)
pm.expect(validSizes).to.include(requestBody.size)
})
Uji API infrastruktur DigitalOcean dengan Apidog - gratis
Kesalahan umum dan perbaikan
401 Tidak Sah
Penyebab: Token tidak valid atau kedaluwarsa.
Perbaikan: Buat ulang token Anda dari dasbor. Periksa format header Otorisasi.
422 Entitas Tidak Dapat Diproses
Penyebab: Parameter tidak valid (wilayah, ukuran, gambar yang salah, dll.).
Perbaikan: Periksa dokumentasi API DigitalOcean untuk nilai yang valid. Masalah umum:
- Wilayah tidak mendukung ukuran yang diminta
- ID gambar tidak ada
- Batas droplet tercapai
429 Terlalu Banyak Permintaan
Penyebab: Batas laju terlampaui (standar 2000 permintaan/jam).
Perbaikan: Terapkan backoff:
async function doRequest(url, options, retries = 3) {
for (let i = 0; i < retries; i++) {
const response = await fetch(url, options)
if (response.status === 429) {
await sleep(Math.pow(2, i) * 1000)
continue
}
return response
}
throw new Error('Rate limited')
}
Batas droplet tercapai
Penyebab: Akun memiliki terlalu banyak droplet.
Perbaikan: Hapus droplet yang tidak digunakan atau minta peningkatan batas dari dukungan.
Alternatif dan perbandingan
| Fitur | DigitalOcean | AWS | GCP |
|---|---|---|---|
| Ukuran droplet | Tetap | Kustom | Kustom |
| Kubernetes | DOKS Terkelola | EKS | GKE |
| Penyimpanan objek | Spaces | S3 | Cloud Storage |
| Penyimpanan blok | Volume | EBS | Persistent Disk |
| Penyeimbang beban | Bawaan | ELB | Cloud Load Balancing |
| Tingkat gratis | Kredit $200 | Terbatas | Kredit $300 |
| Kesederhanaan API | ★★★★★ | ★★☆☆☆ | ★★★☆☆ |
DigitalOcean unggul dalam kesederhanaan. API-nya mudah, dan sebagian besar operasi berfungsi tanpa harus berurusan dengan puluhan layanan bertingkat.
Kasus penggunaan dunia nyata
Lingkungan pengembangan. Sebuah startup membuat lingkungan dev yang terisolasi per cabang. Setiap PR memicu panggilan API untuk membuat droplet dengan kode terbaru. Setelah digabungkan, droplet dihancurkan. Pengembang menguji di lingkungan seperti produksi tanpa penyiapan manual.
Server web yang otomatis skalabel. Aplikasi web memantau beban. Ketika CPU melebihi 70%, API membuat droplet baru dan menambahkannya ke penyeimbang beban. Ketika beban menurun, droplet dihancurkan. Biaya tetap rendah sementara kinerja tetap tinggi.
Klaster database. Layanan database terkelola menyediakan volume primer dan replika di seluruh wilayah. API menangani konfigurasi replikasi, penjadwalan pencadangan, dan penyiapan failover secara otomatis.
Kesimpulan
Berikut adalah apa yang telah Anda pelajari:
- Autentikasi dengan token akses pribadi
- Membuat dan mengelola droplet secara terprogram
- Bekerja dengan volume untuk penyimpanan persisten
- Mengkonfigurasi firewall dan penyeimbang beban
- Mengelola klaster Kubernetes
- Menguji infrastruktur dengan Apidog sebelum penyediaan
FAQ
Berapa biaya droplet?Harga mulai dari $5/bulan untuk 1 vCPU/1GB. Periksa halaman harga untuk tarif saat ini. Penagihan per jam tersedia.
Bisakah saya menggunakan kunci SSH dengan droplet yang dibuat API?Ya. Sertakan sidik jari kunci SSH dalam array ssh_keys saat membuat droplet.
Apa perbedaan antara volume dan Spaces?Volume adalah penyimpanan blok yang terpasang pada droplet. Spaces adalah penyimpanan objek (seperti S3). Gunakan volume untuk database, Spaces untuk file.
Bagaimana cara mendapatkan konfigurasi Kubernetes?
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/kubeconfig" \
-H "Authorization: Bearer YOUR_TOKEN"
Bisakah saya mengubah ukuran droplet?Ya, gunakan tindakan ubah ukuran. Penurunan versi memerlukan pematian. Peningkatan versi dapat dilakukan saat berjalan.
Apa perbedaan antara pencadangan (backup) dan snapshot?Pencadangan adalah salinan otomatis mingguan/harian yang dikelola oleh DigitalOcean. Snapshot adalah gambar manual sesuai permintaan yang Anda buat.
Berapa lama waktu yang dibutuhkan untuk membuat droplet?Biasanya 30-60 detik. Beberapa wilayah dan ukuran mungkin membutuhkan waktu lebih lama.
Bisakah saya menggunakan Terraform dengan DigitalOcean?Ya. DigitalOcean memiliki penyedia Terraform resmi. Ini sangat baik untuk infrastruktur sebagai kode.
