Gyro Kapsayıcı'yı API, gyro CLI ve Terraform ile yönetin
1. Önce: kimlik ve ortam numarası
API anahtarı oluştururken izinleri işaretleyin: hizmet okuma (services_read) ve hizmet yazma (services_write); harcama bilgisi için faturalama okuma (billing_read). Güvenlik için anahtarı yalnız CI sunucunuzun IP'sine kısıtlayın.
Komutlardaki {id} / 12345, kapsayıcı ortamınızın hizmet numarasıdır. Bulmak için:
gyro configure # bir kez: anahtarı kaydeder
gyro service list # tüm hizmetleriniz; kapsayıcı ortamının numarasını bulun
2. Komut özeti
| İşlem | Komut |
|---|---|
| Servisleri listele / ayrıntı | gyro container service list ID · gyro container service get ID AD |
| Servis oluştur | gyro container service create ID --name AD --image İMAJ --port 8080 --public |
| Yeni sürüm yayınla | gyro container service update ID AD --image İMAJ --reason "not" |
| Ölçekle | gyro container service scale ID AD --replicas N |
| Yeniden başlat | gyro container service restart ID AD |
| Sürümler / geri al | gyro container service revisions ID AD · gyro container service rollback ID AD [--revision N] |
| Servis sil | gyro container service delete ID AD |
| Ortam değişkenleri | gyro container env set ID AD --data '{"set":{"K":"V"}}' · --unset K · --replace 1 |
| Gizli değerler | gyro container secret set ID AD --data @- · gyro container secret delete ID AD --keys K |
| Alan adı | gyro container domain add|list|verify|remove |
| Loglar / grafik / olaylar | gyro container logs ID AD · gyro container metrics ID AD · gyro container events ID |
| Düğüm havuzu | gyro container nodes ID |
| Gyro imaj deposu | gyro container registry get|images|credentials|rotate|policy|image-delete ID |
| Özel dış depo | gyro container external-registry set|delete ID |
Yıkıcı işlemler (silme, geri alma, parola yenileme) onay ister; betiklerde --yes kullanın. Çıktı için -o json, tek alan için --query kullanabilirsiniz.
3. gyro CLI örnekleri
# Servis oluştur
gyro container service create 12345 --name api \
--image registry.ist.gyrohosting.com/<kodunuz>/api:1.0 --port 8080 \
--replicas 2 --cpu-m 250 --memory-mi 256 --health-path /healthz --public
# Gizli değer (stdin ile, komut geçmişine yazılmaz)
echo '{"set":{"DB_PASSWORD":"çok-gizli"}}' | gyro container secret set 12345 api --data @-
# Yeni sürüm, sonra geri alma
gyro container service update 12345 api --image registry.ist.gyrohosting.com/<kodunuz>/api:1.1 --reason "release 1.1"
gyro container service rollback 12345 api --yes
# Alan adı bağla
gyro container domain add 12345 api --domain api.ornekfirma.com
gyro container domain verify 12345 api
# Loglar ve harcama
gyro container logs 12345 api --since-minutes 30
gyro billing balance get
4. REST API örnekleri
Taban adres https://www.gyrohosting.com/api/v1/client; kimlik Authorization: Bearer $GYRO_TOKEN.
B=https://www.gyrohosting.com/api/v1/client
H=(-H "Authorization: Bearer $GYRO_TOKEN" -H "Content-Type: application/json")
# Servisleri listele
curl -s "$B/cloud/containers/12345/services" "${H[@]}"
# Servis oluştur
curl -s -X POST "$B/cloud/containers/12345/services" "${H[@]}" -d '{
"name":"api","image":"registry.ist.gyrohosting.com/<kodunuz>/api:1.0","port":8080,
"replicas":2,"cpu_m":250,"memory_mi":256,"health_path":"/healthz","public":true}'
# Yeni sürüm
curl -s -X PATCH "$B/cloud/containers/12345/services/api" "${H[@]}" \
-d '{"image":"registry.ist.gyrohosting.com/<kodunuz>/api:1.1","reason":"release 1.1"}'
# Ölçekle
curl -s -X POST "$B/cloud/containers/12345/services/api/scale" "${H[@]}" -d '{"replicas":3}'
# Geri al (onay ister)
curl -s -X POST "$B/cloud/containers/12345/services/api/rollback" "${H[@]}" -d '{"confirm":true}'
# Gizli değer
curl -s -X PUT "$B/cloud/containers/12345/services/api/secrets" "${H[@]}" -d '{"set":{"DB_PASSWORD":"çok-gizli"}}'
Tüm uçlar /developers sayfasındaki API başvurusundadır (/cloud/containers/{id}/…: services, env, secrets, domains, logs, metrics, nodes, events, registry, external-registry).
5. Terraform ile
variable "db_password" {
type = string
sensitive = true
}
resource "gyro_container_service" "web" {
service_id = 12345 # kapsayıcı ortamınızın hizmet numarası
name = "web"
image = "registry.ist.gyrohosting.com/<kodunuz>/web:1.4"
port = 8080
replicas = 2
cpu_m = 500
memory_mi = 512
public = true
health_path = "/healthz"
env = { MODE = "prod" }
secrets = { DB_PASSWORD = var.db_password } # yalnız yazılır, geri okunmaz
# Önce alan adınızdan gyro_container_service.web.host adresine CNAME yazın.
domains = ["app.ornekfirma.com"]
}
output "web_url" {
value = gyro_container_service.web.url
}
- Her değişiklik (kopya sayısı hariç) yeni sürüm oluşturur ve kesintisiz yayınlanır.
- Gizli değerler yalnız yazılır; dışarıdan silinirse sonraki planda fark görünür.
- İçe aktarma:
terraform import gyro_container_service.web 12345/web. (İçe aktarmadan sonra ilk planda gizli değerler için bir fark görünmesi beklenir.)
6. Otomasyon ipuçları
- CI/CD için ayrı bir API anahtarı ve ayrı bir imaj deposu parolası kullanın; ikisini de gizli değişken olarak saklayın.
- Yayında imajı sürüm etiketi ya da commit numarasıyla verin (
latestdeğil);--reasonile sürüm geçmişine commit numarasını yazın. - Tam örnek: GitHub Actions ile otomatik deploy.
7. Sık sorulan sorular
Ortam numarasını nereden bulurum?
Müşteri panelinde hizmetin sayfa adresindeki numaradır ya da gyro service list çıktısında kapsayıcı ortamının numarasıdır.
quota_exceeded hatası alıyorum, ne yapmalıyım?
Havuz kapasitenizi aşıyorsunuz: kopya sayısını ya da boyutu azaltın, ya da üst pakete geçin.
Sürüm yayını bitti mi nasıl anlarım?
gyro container service get ID AD çıktısındaki durum running ve hazır kopya sayısı istenen sayıya eşit olunca bitmiştir.
Terraform her planda fark gösteriyor, ne yapmalıyım?
Çoğunlukla gizli değerler ya da dışarıdan yapılan değişikliklerdir; panelden değiştirdiğiniz alanları Terraform dosyasına da yansıtın.
Sıradaki adım
Geri bildiriminiz için teşekkürler!