EKS Üzerinde PostgreSQL / RDS Entegrasyonu
EKS Üzerinde PostgreSQL / RDS Entegrasyonu
Veritabanını Kubernetes içinde (StatefulSet olarak) çalıştırmak mümkün olsa da, prodüksiyon ortamları için genellikle yönetilen bir servis olan Amazon RDS veya Amazon Aurora önerilir. Çünkü yedekleme, ölçekleme ve High Availability (HA) AWS tarafından yönetilir.
Peki Amazon EKS üzerindeki bir mikroservis, RDS'e en doğru şekilde nasıl bağlanır?
1. Ağ Erişimi (Security Groups)
En yaygın hata, RDS'i 0.0.0.0/0a (tüm dünyaya) açmaktır. Bu büyük bir güvenlik riskidir.
- Doğrusu: RDS'in Güvenlik Grubuna (Security Group), sadece EKS Worker Node'larının Güvenlik Grubundan gelen trafiğe izin veren bir kural (Inbound Rule) ekleyin. Port: 5432 (PostgreSQL).
2. Kimlik Doğrulama: IAM Authentication
Kullanıcı adı ve şifreyi kod içinde veya ConfigMap'te saklamak yerine IAM Database Authentication kullanın.
- Pod'unuza atadığınız IAM rolü (IRSA), RDS'e bağlanma yetkisine sahip olur.
- Uygulamanız, AWS SDK ile geçici bir token alır ve bunu şifre yerine kullanır. Şifre rotasyonu derdi biter.
3. Bağlantı Havuzu (Connection Pooling)
Mikroservisleriniz ölçeklendiğinde (100 pod), her pod veritabanına 10 bağlantı açarsa, toplam 1000 bağlantı olur ve RDS boğulabilir.
- Çözüm: PgBouncer gibi bir bağlantı havuzcusu kullanın. PgBouncer'ı EKS üzerinde bir
Serviceolarak çalıştırın. Podlar PgBouncer'a, PgBouncer ise RDS'e bağlanır.
4. Gecikme (Latency)
EKS kümeniz ve RDS veritabanınız mutlaka aynı AWS Bölgesinde (Region) olmalıdır. Mümkünse aynı Availability Zone (AZ) içinde olmaları gecikmeyi minimuma indirir.
Bu mimari, veritabanı yönetim yükünü AWS'e bırakırken, uygulamanızın performanslı ve güvenli çalışmasını sağlar.