DigitalOcean API Kullanımı: Bulut Altyapısı Geliştirici Rehberi

Ashley Innocent

Ashley Innocent

24 March 2026

DigitalOcean API Kullanımı: Bulut Altyapısı Geliştirici Rehberi

Kurumsal Apidog

Şirket İçi Dağıtım

SSO & RBAC

SOC 2 Uyumlu

Apidog Enterprise'ı Keşfet

Kısaca

DigitalOcean API'leri, droplet'leri, birimleri, güvenlik duvarlarını, yük dengeleyicileri, Kubernetes kümelerini ve daha fazlasını yönetir. Kişisel erişim belirteçleri ile kimlik doğrulaması yapın, `api.digitalocean.com/v2` adresini çağırın ve hız sınırlarını yönetin. Test etmek için, Apidog'u kullanarak yapılandırmaları doğrulayın, altyapı tedarikini test edin ve otomasyon iş akışlarınızı belgeleyin.

Giriş

DigitalOcean bulut bilişimi basitleştirir. AWS ve GCP yüzlerce hizmet sunarken, DigitalOcean temel unsurlara odaklanır: işlem gücü (droplet'ler), depolama (birimler), ağ (yüzen IP'ler, güvenlik duvarları), yönetilen Kubernetes ve uygulama platformu. API de bu basitliği yansıtır.

Geliştiriciler DigitalOcean API'sini şunlar için kullanır:

💡
Altyapıyı otomatikleştiriyorsanız, Apidog API çağrılarını test etmenize, altyapı yapılandırmalarını yeniden kullanılabilir şablonlar olarak kaydetmenize ve ekip arkadaşlarınızla tedarik iş akışları üzerinde işbirliği yapmanıza yardımcı olur.
düğme

Kimlik Doğrulama

Kişisel erişim belirteçleri

  1. DigitalOcean Paneli → API → Yeni Belirteç Oluştur'a gidin
  2. Belirteci adlandırın ve son kullanma tarihini ayarlayın
  3. Kopyalayın ve güvenli bir şekilde saklayın

Belirteci kullanma:

curl -X GET "https://api.digitalocean.com/v2/account" \
  -H "Authorization: Bearer YOUR_TOKEN"

Yanıt biçimi

{
  "account": {
    "droplet_limit": 25,
    "email": "you@example.com",
    "name": "Your Name",
    "uuid": "abc123xyz",
    "email_verified": true,
    "status": "active"
  }
}

Droplet'ler (sanal makineler)

Tüm droplet'leri listele

curl -X GET "https://api.digitalocean.com/v2/droplets" \
  -H "Authorization: Bearer YOUR_TOKEN"

Bir droplet oluştur

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"]
  }'

Popüler boyutlar:

Bölgeler:

Droplet detaylarını al

curl -X GET "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Bir droplet'i sil

curl -X DELETE "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Droplet eylemleri

Yeniden başlat:

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"
  }'

Boyutlandır:

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"
  }'

Anlık görüntü:

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"
  }'

Birimler (blok depolama)

Bir birim oluştur

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"
  }'

Birimi droplet'e ekle

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
  }'

Birimleri listele

curl -X GET "https://api.digitalocean.com/v2/volumes" \
  -H "Authorization: Bearer YOUR_TOKEN"

Ağ Oluşturma

Yüzen IP'leri listele

curl -X GET "https://api.digitalocean.com/v2/floating_ips" \
  -H "Authorization: Bearer YOUR_TOKEN"

Yüzen IP ata

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"
  }'

Güvenlik duvarı oluştur

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]
  }'

Yük dengeleyiciler

Bir yük dengeleyici oluştur

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]
  }'

Kubernetes kümeleri

Bir Kubernetes kümesi oluştur

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
      }
    ]
  }'

Düğüm havuzlarını listele

curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools" \
  -H "Authorization: Bearer YOUR_TOKEN"

Düğüm havuzunu ölçeklendir

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
  }'

Kümeyi sil

curl -X DELETE "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Apidog ile test etme

Altyapı tedariki maliyetlidir. Kaynakları oluşturmadan önce kapsamlı bir şekilde test edin.

1. Ortam kurulumu

DIGITALOCEAN_TOKEN: your_token
BASE_URL: https://api.digitalocean.com/v2
DEFAULT_REGION: nyc1
DEFAULT_SIZE: s-2vcpu-4gb

2. Yanıtları doğrula

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. Dry run (deneme çalıştırma) kavramları

DigitalOcean gerçek 'dry run' seçenekleri sunmaz, ancak girişleri doğrulayabilirsiniz:

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)
})

DigitalOcean altyapı API'lerini Apidog ile ücretsiz test edin

Sık karşılaşılan hatalar ve çözümler

401 Yetkilendirilmemiş

Neden: Geçersiz veya süresi dolmuş belirteç.

Çözüm: Belirtecinizi panodan yeniden oluşturun. Authorization başlık biçimini kontrol edin.

422 İşlenemeyen Varlık

Neden: Geçersiz parametreler (yanlış bölge, boyut, görsel vb.).

Çözüm: Geçerli değerler için DigitalOcean'ın API belgelerini kontrol edin. Yaygın sorunlar:

429 Çok Fazla İstek

Neden: Hız limiti aşıldı (varsayılan 2000 istek/saat).

Çözüm: Gecikmeli yeniden deneme uygulayın (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')
}

Droplet limitine ulaşıldı

Neden: Hesapta çok fazla droplet var.

Çözüm: Kullanılmayan droplet'leri silin veya destekten limit artışı talep edin.

Alternatifler ve karşılaştırmalar

Özellik DigitalOcean AWS GCP
Droplet boyutları Sabit Özel Özel
Kubernetes Yönetilen DOKS EKS GKE
Nesne depolama Spaces S3 Cloud Storage
Blok depolama Birimler EBS Kalıcı Disk
Yük dengeleyiciler Dahili ELB Cloud Load Balancing
Ücretsiz katman 200$ kredi Sınırlı 300$ kredi
API basitliği ★★★★★ ★★☆☆☆ ★★★☆☆

DigitalOcean basitlik konusunda öne çıkıyor. API anlaşılır ve çoğu işlem, onlarca iç içe hizmetle uğraşmadan çalışır.

Gerçek dünya kullanım senaryoları

Geliştirme ortamları. Bir başlangıç şirketi, her dal için izole geliştirme ortamları oluşturur. Her PR (Pull Request), en son kodla bir droplet oluşturmak için API çağrılarını tetikler. Birleştirme sonrası, droplet yok edilir. Geliştiriciler, manuel kurulum yapmadan üretim benzeri ortamlarda test yapar.

Otomatik ölçeklenen web sunucuları. Bir web uygulaması yükü izler. CPU %70'i aştığında, API yeni droplet'ler oluşturur ve bunları yük dengeleyiciye ekler. Yük düştüğünde, droplet'ler yok edilir. Maliyetler düşük kalırken performans yüksek seviyede devam eder.

Veritabanı kümeleri. Yönetilen bir veritabanı hizmeti, bölgeler arasında birincil ve replika birimleri sağlar. API, replikasyon yapılandırmasını, yedekleme zamanlamasını ve hata toleransı kurulumunu otomatik olarak yönetir.

Sonuç

İşte öğrendikleriniz:

düğme

Sıkça Sorulan Sorular

Bir droplet ne kadara mal olur?Fiyatlar 1 vCPU/1GB için aylık 5$'dan başlar. Güncel oranlar için fiyatlandırma sayfasını kontrol edin. Saatlik faturalandırma mevcuttur.

API ile oluşturulan droplet'lerde SSH anahtarları kullanabilir miyim?Evet. Droplet oluştururken SSH anahtarı parmak izini ssh_keys dizisine ekleyin.

Birimler ve Spaces arasındaki fark nedir?Birimler, droplet'lere bağlı blok depolamadır. Spaces ise nesne depolamadır (S3 gibi). Veritabanları için birimleri, dosyalar için Spaces'i kullanın.

Kubernetes yapılandırmasını nasıl alırım?

curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/kubeconfig" \
  -H "Authorization: Bearer YOUR_TOKEN"

Bir droplet'i yeniden boyutlandırabilir miyim?Evet, yeniden boyutlandırma eylemini kullanın. Sürüm düşürme (downgrade) bir kapatma gerektirir. Sürüm yükseltmeler (upgrade) çalışırken yapılabilir.

Yedeklemeler ve anlık görüntüler arasındaki fark nedir?Yedeklemeler, DigitalOcean tarafından yönetilen otomatik haftalık/günlük kopyalardır. Anlık görüntüler ise sizin oluşturduğunuz manuel, isteğe bağlı görsellerdir.

Droplet'lerin oluşturulması ne kadar sürer?Genellikle 30-60 saniye. Bazı bölgeler ve boyutlar daha uzun sürebilir.

Terraform'u DigitalOcean ile kullanabilir miyim?Evet. DigitalOcean'ın resmi bir Terraform sağlayıcısı var. Kod olarak altyapı için mükemmeldir.

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin