Sürüm: 0.21.0Bu dokümantasyon Spitfire 0.21.0 içindir.
Protokoller ve bağlantılar
Spitfire'da bir test adımı bir protokolle konuşur: HTTP, WebSocket, SSE, gRPC, Kafka, MQTT, RabbitMQ (AMQP), Redis, SQL (PostgreSQL, MySQL / MariaDB, SQL Server, Oracle) ya da MongoDB. HTTP dışındaki protokollerin çoğu bir connection (bağlantı) ister: adres, kullanıcı adı, parola, TLS ayarları gibi erişim bilgileri test tanımına yazılmaz; Bağlantılar sayfasında bir kez, şifreli olarak saklanır ve adımlar bağlantıyı adıyla kullanır.
Bu sayfa bağlantıları genel olarak anlatır: nasıl eklenir, nasıl test edilir, kim düzenleyebilir, secret'lar nasıl saklanır ve adımlar onlara nasıl bağlanır. Her protokolün kendi sayfası bu sayfanın devamıdır (sayfanın sonundaki İlgili sayfalar listesine bakın).
Ne işe yarar
- Erişim bilgilerini testten ayırır. Test tanımında yalnızca
"connection": "orders-db"yazar. Parola, token, özel anahtar gibi secret'lar test JSON'unda, koşu kayıtlarında, raporlarda ve loglarda görünmez. - Tek yerden yönetim sağlar. Veritabanının parolası değişirse yalnızca bağlantıyı güncellersiniz; o bağlantıyı kullanan bütün testler bir sonraki koşuda yeni değeri kullanır.
- Yetkiyi sınırlar. Bağlantıları yalnızca yöneticiler oluşturur ve düzenler; testi yazan herkesin veritabanı parolasını bilmesi gerekmez.
Ne zaman kullanılır
- gRPC, Kafka, MQTT, RabbitMQ, Redis, SQL veya MongoDB adımı eklemeden önce. Bu protokollerin adımları bağlantısız kaydedilemez.
- HTTP, WebSocket ya da SSE adımlarında yalnızca istemci sertifikası (mTLS) veya özel bir CA gerekiyorsa. Bunun için İstemci sertifikası (mTLS) türünde bir bağlantı oluşturursunuz.
| Protokol (adımda) | Gerekli bağlantı türü | Zorunlu mu |
|---|---|---|
| HTTP, WebSocket, SSE | İstemci sertifikası (mTLS) | Hayır, yalnızca mTLS / özel CA için |
| gRPC | gRPC | Evet |
| Kafka | Kafka | Evet |
| MQTT | MQTT | Evet |
| RabbitMQ (AMQP) | RabbitMQ (AMQP) | Evet |
| Redis | Redis | Evet |
| SQL | PostgreSQL, MySQL / MariaDB, SQL Server veya Oracle | Evet |
| MongoDB | MongoDB | Evet |
Bir adım yalnızca kendi protokolüne uyan türde bir bağlantıyı kullanabilir. Örneğin bir SQL adımına Kafka bağlantısı seçerseniz kayıt şu hatayla reddedilir: kafka-local bir kafka bağlantısı; sql için postgres/mysql/mssql/oracle gerekli.
Kimler ne yapabilir
| İşlem | Kullanıcı (user) |
Çalışma alanı yöneticisi | Kurulum yöneticisi |
|---|---|---|---|
| Bağlantı listesini görmek (ad, tür, hedef, hangi secret'ların kayıtlı olduğu) | Evet | Evet | Evet |
| Bağlantı eklemek, düzenlemek, silmek | Hayır | Evet | Evet |
| Test et düğmesiyle bağlantıyı denemek | Hayır | Evet | Evet |
| SQL bağlantısına SSH tüneli eklemek veya değiştirmek | Hayır | Hayır | Evet |
| SQL bağlantısında Schema'dan öner | Hayır | Hayır | Evet |
Secret'ların değeri hiç kimseye gösterilmez; yöneticiler bile yalnızca "kayıtlı" bilgisini görür. SSH tüneli ve schema önerileri ayrıca bir tarayıcı oturumu ister; API token'ıyla yapılamaz.
Bağlantı ekleme
- Sol menüde Altyapı → Bağlantılar'ı açın (Bağlantılar
Spitfire'da: /connections). - Sağ üstteki Bağlantı ekle düğmesine tıklayın. Yeni bağlantı penceresi açılır.
- Tür listesinden bağlantı türünü seçin: gRPC, MQTT, RabbitMQ (AMQP), Kafka, Redis, PostgreSQL, MySQL / MariaDB, SQL Server, Oracle, MongoDB ya da İstemci sertifikası (mTLS).Dikkat
Tür, bağlantı oluşturulduktan sonra değiştirilemez (Tür oluşturulduktan sonra değişmez.). Yanlış tür seçtiyseniz bağlantıyı silip yeniden oluşturun.
- Ad alanına kısa, anlamlı bir ad yazın, örneğin
orders-db,kafka-local,payments-grpc. Ad harf veya rakamla başlamalı; yalnızca harf, rakam,_,.ve-içerebilir; en çok 63 karakterdir. Adımlar bağlantıya bu adla bağlanır. - İsterseniz Açıklama yazın (ör. "Staging sipariş veritabanı, salt okunur kullanıcı").
- Türe özgü alanları doldurun. Yıldızlı (
*) alanlar zorunludur. Kilit simgeli alanlar secret'tır ve şifreli saklanır. Her türün alanları kendi sayfasında tek tek anlatılır. - Bağlantı TLS kullanıyorsa formun altındaki TLS başlığına tıklayıp ayarları açın (bkz. TLS ayarları).
- Kaydet'e tıklayın. Hatalı bir alan varsa alanın altında kırmızı bir açıklama çıkar ve pencere açık kalır; düzeltip yeniden kaydedin.
- Listede yeni satırın Test et düğmesine tıklayarak bağlantıyı deneyin (bkz. Bağlantıyı test etme).
Parolayı adresin içine yazmayın. RabbitMQ URL'si, MongoDB URI'si ve MQTT broker adreslerinde kullanıcı:parola@ biçimi reddedilir (adreste parola olmasın: şifreli saklanan Parola alanına yazın). Kullanıcıyı ve parolayı ayrı alanlara yazın; parola alanı şifreli saklanır, adres alanı herkese görünür.
Secret'lar nasıl saklanır
- Kilit simgeli alanlar (parola, Bearer token, SASL parola, TLS istemci anahtarı, SSH özel anahtarı ve parolası…) AES-256-GCM ile, kurulumun
SPITFIRE_SECRET_KEYanahtarıyla şifrelenir. Formun altındaki not bunu söyler: Gizli alanlar AES-256-GCM ile şifrelenir; API onları hiçbir zaman geri döndürmez. Runner'lara yalnızca koşu hazırlanırken gönderilir. - Kayıtlı bir secret'ı düzenleme penceresinde göremezsiniz; alanda ••••• (kayıtlı; değiştirmek için yazın) yazar.
- Değiştirmek için: alana yeni değeri yazıp kaydedin.
- Olduğu gibi bırakmak için: alanı boş bırakın; boş alan kayıtlı değeri silmez.
- Silmek için: alanın altındaki Kayıtlı değeri sil kutusunu işaretleyip kaydedin.
- Listedeki Gizli alanlar sütunu yalnızca hangi secret'ların kayıtlı olduğunu (alan adlarını) gösterir, değerlerini değil.
- Secret'lar test tanımına hiç girmez. Bir testi JSON olarak dışa aktarsanız, başka bir kuruluma taşısanız ya da koşu raporunu paylaşsanız bile parola içlerinde yoktur. Testi başka bir kuruluma taşırsanız orada aynı adla bir bağlantı oluşturmanız gerekir.
SPITFIRE_SECRET_KEY kaybolursa kayıtlı secret'lar çözülemez. Kurulumu yedeklerken bu anahtarı da güvenli bir yerde yedekleyin.
Bağlantıyı test etme
- Bağlantılar listesinde bağlantının satırını bulun.
- Test sütunundaki Test et düğmesine tıklayın. Düğme kısa süre Deneniyor… yazar.
- Sonucu okuyun:
- Yeşil bağlandı (… ms): bağlantı açıldı ve kimlik doğrulama geçti; süre bağlantının kurulma süresidir.
- Kırmızı başarısız: …: hatanın ilk 80 karakteri yanda görünür. Tamamını görmek için farenizi mesajın üzerinde bekletin.
Test et, bağlantıyı controller sunucusundan dener (en çok 15 saniye). Yükü ise runner'lar üretir. Runner'lar başka bir ağda, başka bir lokasyonda ya da farklı firewall kurallarının arkasındaysa testin yeşil olması runner'ların da ulaşabildiği anlamına gelmez. Editördeki Dene düğmesi de tek iterasyonu controller'dan gönderir. Koşu sırasında connection refused ya da zaman aşımı görürseniz runner makinesinden hedefe erişimi ayrıca kontrol edin.
Adımlar bağlantıyı nasıl kullanır
Test editöründe bir adımın Protokol alanını seçtiğinizde Bağlantı listesi yalnızca o protokole uyan bağlantıları gösterir (Bağlantı seçin…). Uygun bağlantı yoksa Bu protokol için bağlantı yok. yazar ve Bağlantı oluştur bağlantısı sizi Bağlantılar sayfasına götürür.
JSON'da adım bağlantıyı connection alanında adıyla anar:
{"id": "order", "name": "Sipariş getir", "protocol": "sql", "connection": "orders-db",
"sql": {"query": "SELECT id, status, total FROM orders WHERE id = $1", "params": ["{{$randInt 1 100000}}"]}}Bu yüzden:
- Bağlantının adını değiştirirseniz testler onu bulamaz. Spitfire bunu engeller: bir test bağlantıyı kullanıyorsa yeniden adlandırma reddedilir (Testler bu bağlantıyı adıyla kullanıyor; önce testleri değiştirin, sonra adını değiştirin.). Önce testlerdeki adımları yeni ada (ya da başka bir bağlantıya) çevirin, sonra adı değiştirin.
- Bir testi kaydederken adı geçen bağlantı yoksa alan altında orders-db adında bağlantı yok hatası çıkar.
- Koşu başladığında controller, testin adımlarının andığı bağlantıları çözer ve secret'larıyla birlikte yalnızca o koşuya katılan runner'lara gönderir.
Ortamlara göre bağlantı değiştirme
Aynı testi staging ve production'a karşı koşturmak için testi kopyalamanız gerekmez. Test editöründeki Ortamlar sekmesinde her ortam, adımların kullandığı bağlantıyı aynı türden başka bir bağlantıyla eşleyebilir, örneğin orders-db → orders-db-staging. Ortam, koşu ya da zamanlama başlatılırken seçilir; koşu hangi ortamı kullandığını kaydeder.
Ortamlar sekmesinde bağlantı eşleme
Eşlenen bağlantı farklı türdeyse (ör. PostgreSQL yerine MySQL) eşleme reddedilir: sorgu sözdizimi ve placeholder'lar farklı olduğu için test o veritabanında çalışmaz.
Bağlantıyı düzenleme ve silme
- Satırın sağındaki kalem simgesine (Düzenle) tıklayın. Pencere başlığı orders-db — düzenle gibi görünür.
- Değiştirmek istediğiniz alanları güncelleyin. Secret alanlarını değiştirmeyecekseniz boş bırakın.
- Kaydet'e tıklayın. Değişiklik, bağlantıyı kullanan testlerin bir sonraki koşusundan itibaren geçerlidir; çalışmakta olan koşu etkilenmez.
Silmek için çöp kutusu simgesine tıklayın ve Bağlantıyı sil penceresinde onaylayın. Bağlantıyı kullanan bir test varsa silme reddedilir (Bu bağlantı testlerde kullanılıyor; önce testlerden kaldırın.).
TLS ayarları
gRPC, MQTT, RabbitMQ, Kafka, Redis ve MongoDB bağlantılarının formunda katlanmış bir TLS bölümü vardır. Tıklayınca şu alanlar açılır:
| Alan | Ne yapar |
|---|---|
| TLS kullan | Bağlantıyı TLS ile kurar. Sunucu TLS bekliyorsa işaretleyin. |
| Sertifikayı doğrulama | Sunucu sertifikasını doğrulamaz. Yalnızca kendinden imzalı test ortamları için; production'da işaretlemeyin. |
| Sunucu adı (SNI) | Sertifikada beklenen ad, adresteki host adından farklıysa yazın. |
| CA sertifikası | Sunucu sertifikasını imzalayan özel CA (PEM, -----BEGIN CERTIFICATE-----). |
| İstemci sertifikası | mTLS isteyen sunucular için istemcinin sertifikası (PEM). |
| İstemci anahtarı | Sertifikanın özel anahtarı (PEM). Secret'tır, şifreli saklanır. |
Kafka bağlantısında TLS bölümü
SQL bağlantılarında TLS bölümü yoktur; sürücünün kendi parametreleri kullanılır: Sürücü parametreleri alanına örneğin PostgreSQL için sslmode = require, SQL Server için encrypt = true ekleyin.
HTTP, WebSocket ve SSE adımları için ayrı bir tür vardır: İstemci sertifikası (mTLS). Sertifikayı, anahtarı ve güvenilecek CA'yı tutar; adım bunu İstemci sertifikası (mTLS) alanında seçer. Ayrıntılar: HTTP, WebSocket ve SSE.
Sık karşılaşılan sorunlar
Belirti: Test et kırmızı, mesajda connection refused.
Neden: Adres veya port yanlış, servis çalışmıyor ya da controller'dan o porta erişim yok.
Çözüm: Host ve portu kontrol edin (ör. PostgreSQL 5432, MySQL 3306, SQL Server 1433, Oracle 1521, Kafka 9092, MQTT 1883/8883, RabbitMQ 5672/5671, Redis 6379, MongoDB 27017). Controller sunucusundan nc -vz host port ile deneyin. Veritabanı yalnızca bir bastion üzerinden erişilebiliyorsa SSH tüneli kullanın.
Belirti: Mesajda i/o timeout, context deadline exceeded ya da 15 saniye sonra başarısız.
Neden: Paketler bir firewall'da düşüyor ya da adres çözülüyor ama yanıt vermiyor.
Çözüm: Firewall / security group kurallarına controller'ın (ve koşu için runner'ların) IP'sini ekleyin.
Belirti: Mesajda no such host.
Neden: Host adı controller'ın DNS'inde çözülmüyor.
Çözüm: Tam alan adını (FQDN) ya da IP'yi yazın. Runner'lar farklı DNS kullanıyorsa onların da çözebildiğinden emin olun.
Belirti: authentication failed, password authentication failed, SASL authentication failed, ACCESS_REFUSED, not authorized.
Neden: Kullanıcı adı, parola ya da mekanizma (ör. Kafka SASL) yanlış; kullanıcının o veritabanına / vhost'a yetkisi yok.
Çözüm: Parolayı yeniden yazıp kaydedin (eski değer görünmez, boş bırakırsanız değişmez). Kafka'da SASL mekanizması broker'ınkiyle aynı olmalı. MongoDB'de Auth source doğru veritabanı olmalı (çoğu zaman admin).
Belirti: x509: certificate signed by unknown authority ya da certificate is valid for …, not ….
Neden: Sunucu özel bir CA ile imzalanmış ya da sertifikadaki ad adresle uyuşmuyor.
Çözüm: TLS bölümüne CA sertifikasını yapıştırın; ad farklıysa Sunucu adı (SNI) alanını doldurun. Yalnızca test ortamında geçici olarak Sertifikayı doğrulama'yı işaretleyebilirsiniz.
Belirti: tls: first record does not look like a TLS handshake ya da bağlantı hemen kapanıyor.
Neden: TLS açık ama sunucu düz TCP bekliyor (ya da tersi).
Çözüm: TLS kullan kutusunu sunucunun gerçek ayarına göre işaretleyin veya kaldırın; doğru portu kullandığınızdan emin olun (TLS'li portlar genelde farklıdır).
Belirti: Kaydederken adreste parola olmasın: şifreli saklanan Parola alanına yazın.
Neden: Parola URL'nin içinde.
Çözüm: URL'den kullanıcı:parola@ kısmını çıkarın; Kullanıcı ve Parola alanlarını kullanın.
Belirti: Ad değiştirilemiyor: Testler bu bağlantıyı adıyla kullanıyor… Neden: Testler bağlantıya adıyla bağlıdır. Çözüm: Önce testlerin adımlarında bağlantıyı değiştirin, sonra yeniden adlandırın. Aynı işi ortama göre yapmak istiyorsanız Ortamlar sekmesindeki eşlemeyi kullanın.
Belirti: Bağlantı ekle düğmesi ya da Test et sütunu görünmüyor.
Neden: Hesabınız user rolünde; bağlantıları yalnızca yöneticiler yönetir.
Çözüm: Çalışma alanı yöneticinizden bağlantıyı eklemesini ya da size yönetici rolü vermesini isteyin.
Belirti: Test yeşil ama koşuda bütün istekler connection refused / zaman aşımı.
Neden: Test et controller'dan dener; runner'lar başka bir ağda.
Çözüm: Runner makinesinden hedefe erişimi kontrol edin; firewall'a runner'ların çıkış IP'lerini ekleyin.



