emptyDir olay spoolunu paylaşan iki konteyner herhangi bir Kubernetes dağıtımında çalışır. Bu kılavuzdaki sertifika teslim yolu (AWS Secrets Manager + Secrets Store CSI Driver + IRSA) yalnızca AWS / EKS’ye özgüdür. Başka bir yerde çalıştırırsanız, pod ve spool düzenini koruyun ve Aşamalar 2 ve 3 için platformunuzun gizli dağıtım mekanizmasını değiştirin.
Bu deseni ne zaman kullanmalısınız. Uygulamanız collector’a ulaşmak için bir ağ sınırını geçmemelidir (düşük gecikmeli pod içi IPC, sıkı yaşam döngüsü bağlaması, kiracı başına pod yalıtımı) when seçin. Bir collector’ı düğüm başına veya küme başına paylaşan çok uygulamalı filo için enterprise-docs/kubernetes-deployment.md dosyasına bakın.
Bir bakışta
- Events (pod içi): uygulamanızın SDK’sı
.jsonldosyalarını$AGENTEYE_HOME/events/adresindeki sharedemptyDir’e yazarsa; collector sweeper onları okur ve yükler. Localhost portu yok, loopback yok, saf shared-filesystem aktarımı. - mTLS cert (pod ← bulut): Secrets Store CSI Driver sertifika bundle’ını Secrets Manager’dan
/etc/agenteye/tls/adresinde salt okunur bir volume’e takar, collector konteynerine kapsamlı olarak.
| Taraf | Sorumluluk |
|---|---|
| Exosphere | mTLS istemci sertifikasını yayınlar ve bundle’ı sizin AWS hesabınızın Secrets Manager’ına stable bir adla teslim eder. Yenilenen bundle’ı sona ermeden önce aynı gizliye yeniden yayınlar. |
| Siz | Secrets Store CSI Driver’ı kurun, pod’un ServiceAccount’ına IRSA aracılığıyla gizliye okuma erişimi verin ve Pod manifest’ini uygulayın. Hepsi bu. |
Ön koşullar
AWS hesabınızda / EKS kümesinde
-
İlişkili bir OIDC sağlayıcısı olan bir EKS kümesi. Şu komutla doğrulayın:
Komut bir
https://oidc.eks.…URL döndürürse OIDC etkinleştirilmiştir. Değilse, birini ilişkilendirin: - Secrets Store CSI Driver ve AWS sağlayıcısı kümede yüklü (bkz. § Aşama 2).
-
AWS CLI v2 ve
kubectliş istasyonunuzda.
Exosphere ile koordinasyon
Dağıtmadan önce, Exosphere mTLS istemci bundle’ını AWS hesabınızın Secrets Manager’ına teslim eder ve sağlar:- Gizli adı (kural:
agenteye/mtls-client/<your-cluster>) - Gizlinin yaşadığı AWS bölgesi
- Collector’ı yapılandırmak için AgentEye arka uç URL’si
- Collector API anahtarı (bkz. enterprise-docs/api-keys.md)
Aşama 1: Exosphere’nin teslim ettikleri
mTLS istemci sertifikasını kendiniz oluşturmazsınız. Exosphere onu yayınlar ve bundle’ı doğrudan AWS hesabınızın Secrets Manager’ına teslim eder, bu nedenle ortamınıza inen tek kimlik bilgisi malzemesi bitmiş, monte etmeye hazır gizlidir. Hesabınıza gelen şeyler:| Özellik | Değer |
|---|---|
| Gizli adı | agenteye/mtls-client/<cluster-name> (yenileme sırasında stabil) |
| Bölge | EKS kümeniz için belirlediğiniz AWS bölgesi |
| Yük | Üç anahtarlı tek bir JSON gizlisi (client.crt, client.key ve ca.crt), her biri PEM kodlu malzemeyi tutar |
| Etiket | AgentEyeCluster=<cluster-name> |
SecretProviderClass ve IAM politikanız değişmeden çalışır. Sertifika yaşam döngüsü (geçerlilik, yenileme hızı, sona erme uyarıları) için bkz. enterprise-docs/kubernetes-deployment.md.
Aşama 2: Secrets Store CSI Driver + AWS sağlayıcısını kurun
AWS gizlilerini CSI aracılığıyla takmış başka bir iş yükü çalıştırıyorsanız bu adımı atlayın.Running.
Neden rotationPollInterval=1h? Exosphere yenilenen bir sertifika yayınladığında, Secrets Manager yerinde güncellenir. CSI Driver bu aralıkta gizliyi yeniden okur ve monte edilen dosyaları yeniden yazar. Collector sertifika dosyalarını başlangıçta bir kez okur, bu nedenle yenilenen sertifikayı sunmaya yalnızca bir işlem yeniden başlaması sonrasında başlar; bkz. § Sertifika yenileme nasıl bir yeniden başlatma tetiklenir.
Aşama 3: Pod’a gizliye okuma erişimi verin (IRSA)
3.1 IAM politikasını oluşturun
agenteye-mtls-reader-policy.json olarak kaydedin:
<region>, <account-id> ve <cluster-name> yerine koyun. Sondaki -* AWS’nin her gizli ARN’ye eklediği altı karakterlik rastgele soneki eşleştirir.
Politikayı oluşturun:
3.2 IAM rolünü oluşturun ve pod’un ServiceAccount’ına bağlayın
agenteye-pod adlı bir ServiceAccount oluşturur ve eks.amazonaws.com/role-arn ek açıklaması yeni role’ü gösterir.
3.3 Gerekli IAM izinleri: özet
| İzin | Kapsam | Neden |
|---|---|---|
secretsmanager:GetSecretValue | arn:aws:secretsmanager:<region>:<acct>:secret:agenteye/mtls-client/<cluster>-* | CSI Driver her monte etme + döndürme onayında gizliyi okur. |
secretsmanager:DescribeSecret | aynı | CSI Driver DescribeSecret çağırır yoklamalar arasındaki sürüm değişikliklerini algılamak için. |
secretsmanager:PutSecretValue, secretsmanager:UpdateSecret veya secretsmanager:DeleteSecret pod’a verin. Pod gizliyi yalnızca okur; sertifika yayınlandığında veya yenilendiğinde gizliye yeni sürümler yazmak Exosphere tarafından işlenir.
Gizli müşteri tarafından yönetilen bir KMS anahtarıyla şifreli ise (varsayılan aws/secretsmanager anahtarı değil), aynı zamanda verin:
Aşama 4: Pod’u dağıtın
4.1 SecretProviderClass
agenteye-mtls-spc.yaml:
jmesPath bloğu AWS sağlayıcısına JSON gizlisini diske üç ayrı dosyaya bölmesini söyler. '"client.crt"' içindeki alıntı gereklidir çünkü JMESPath . işaretçisini bir alt ifade operatörü olarak kabul eder.
4.2 Pod / Dağıtım manifest’i
İki konteyner birbirinden nasıl konuşur. AgentEye SDK ve collector bir ağ socket üzerinden iletişim kurmaz; yerel HTTP portu yoktur. SDK.jsonl dosyaları olarak olay toplamlarını $AGENTEYE_HOME/events/ içine yazar ve collector sürekli o dizini izler ve her dosyayı yükler. Sidecar pod için bu şu anlama gelir:
- Her iki konteyner aynı
emptyDirvolume’ü aynı yolda monte eder. - Her iki konteyner de
AGENTEYE_HOMEo yola ayarla. - Uygulamanız image’ı AgentEye SDK yüklü ve yapılandırılmış olmalıdır (bkz. enterprise-docs/python-sdk.md).
AGENTEYE_HOMEayarlanmadığında, SDK ve collector ikisi de~/.agenteye’ye varsayılan olarak ayarlanır ve iki konteyner farklı ev dizinlerine sahiptir, bu nedenle iki ayrı spool’un üzerine inerler ve handoff sessizce başarısız olurdu.AGENTEYE_HOMEaynı açık yola her iki konteyner’e ayarlayın. §4.3 doğrulama ve eşleşen Sorun Giderme satırı bunun kaçırıldığını yakalarsa.
agenteye-pod.yaml (Bir çoğaltmayla Dağıtım, gerektiğinde ölçeklendir):
agenteye-collector-api-key Gizlisi collector’ın API anahtarını tutar (sağlama için bkz. enterprise-docs/api-keys.md).
Uygulayın:
4.3 Doğrulayın
client.crt, client.key, ca.crt hepsi mevcut ve salt okunur, konteyner kullanıcısı tarafından sahip olunan.
Paylaşılan olay spoolunun her iki konteynerine görünür olduğunu doğrulayın:
AGENTEYE_HOME farklıdır); bkz. § Sorun Giderme.
Uçtan uca duman testi:
Done: N/N uploaded, 0 failed. özetini yazdırır. Spool boş ise No pending files. yazdırır ve hiçbir şeyi doğrulamadan çıkar — bu nedenle bunu yalnızca uygulamanız en az bir olay gönderdikten sonra çalıştırın.
flush exit non-zero yalnızca yerel kurulum hataları için: eksik yapılandırma (hiçbir URL/anahtar çözümlenmemiş) veya okunulabilir/ayrıştırılabilir olmayan TLS sertifikası (§ Sorun Giderme kontrol edin). Yanlış API anahtarı çıkış kodunu değiştirmez — yükleme 401 alır, dosya failed/ dizinine taşınır ve komut hala dosya başına [FAILED] … ve Done: 0/N uploaded, N failed. yazdırır ve 0 ile çıkar. Kötü bir anahtarı veya reddedilen yüklemeyi algılamak için, Done:/[FAILED] çıktısını okuyun veya dosyaları $AGENTEYE_HOME/failed/ dosyasına inmek için denetleyin, çıkış kodu değil.
Sertifika yenileme
İstemci sertifikası 90 gün için geçerlidir ve sona ermeden yaklaşık 15 gün önce otomatik olarak yenilenir; Exosphere daha sonra yenilenen bundle’ı aynı Secrets Manager gizlisine yayınlar. Oradan, pod içi akış şudur:-
Secrets Manager’ın gizli yeni bir
AWSCURRENTsürümü alır. ARN ve ad değişmeden kalır. -
rotationPollIntervaliçinde (varsayılan olarak 1 saat; bkz. § Aşama 2), CSI Driver yeni sürümü okur ve/etc/agenteye/tls/altındaki dosyaları yeniden yazar. -
Collector sertifika dosyalarını başlangıçta bir kez yükler, bu nedenle işlem yeniden başlayana kadar önceki sertifikayı sunmaya devam eder. Yenilenen materyale geçmek için, collector’ı yeniden başlatın; yuvarlanan bir yeniden başlatma yeterlidir:
Bunu otomatik hale getirmek için,
/etc/agenteye/tls/izleyen bir sidecar ekleyin (örneğininotifywaitile) ve dosyalar değiştiğinde yeniden başlatmayı tetikleyin.
Sorun Giderme
| Belirti | Muhtemel Nedeni | Düzeltme |
|---|---|---|
Pod ContainerCreating içinde takılı, olaylar MountVolume.SetUp failed for volume "agenteye-mtls" göster | CSI sağlayıcısı Secrets Manager’a ulaşamaz | IRSA’nın doğru bağlandığını kontrol edin: kubectl describe sa agenteye-pod -n <ns> eks.amazonaws.com/role-arn ek açıklamasını göster. CloudTrail’de AssumeRole çağrısını kontrol edin. |
Hata: AccessDeniedException: not authorized to perform secretsmanager:GetSecretValue | IAM politikası yanlış ARN’ye kapsamlıdır | Gizli ARN soneki rastgeledir; agenteye/mtls-client/<cluster>-* joker karakterle kullanın, tam ARN değil. |
AWS sağlayıcısından ParameterNotFound hatası | Gizli adı uyuşmazlığı SecretProviderClass.objects[].objectName ve Exosphere’nin teslim ettiği gizli arasında | aws secretsmanager list-secrets --filters Key=tag-key,Values=AgentEyeCluster ile tam adı doğrulayın. |
jmesPath hatası, yalnızca bir dosya monte | JMESPath söz dizimi | JSON anahtarlarındaki noktalar çift alıntı gerektirir: '"client.crt"', client.crt değil. |
Collector günlükleri yenileme sonrası tls: bad certificate | CSI Driver yeni sürümü henüz yoklamadı veya collector başlangıçta yüklediği önceki sertifika ile çalışmaya devam ediyor | Monte edilen dosyaların güncellendiğini doğrulayın (ls -l /etc/agenteye/tls/), ardından collector’ı yüklemek için yeniden başlatın: kubectl rollout restart deploy/my-app-with-collector -n <ns>. Bkz. § Sertifika yenileme. |
Collector konteyneri no such file or directory: /etc/agenteye/tls/client.crt ile crashloops | Volume ilk başlangıçta henüz doldurulmamış; başlangıç sondası çok agresif | Küçük bir ilk gecikme ekleyin veya dosyanın var olmasını bekleyen bir init konteyneri kullanın: until [ -f /etc/agenteye/tls/client.crt ]; do sleep 1; done. |
CSI Driver pod OOMKilled | Birçok SecretProviderClass ile kümeler için varsayılan bellek sınırları çok düşük | Helm kurulumuna --set linux.resources.limits.memory=200Mi bump yapın. |
Uygulama temiz çalışır, agenteye-collector flush rapor No pending files., ancak AgentEye panosu hiçbir olay göstermez | Uygulama ve collector olay spoolunu paylaşmıyor | (a) her iki konteyner aynı agenteye-spool emptyDir’i aynı yolda monte eder ve (b) her ikisi de AGENTEYE_HOME o yola ayarla. § 4.3’ten iki ls /var/lib/agenteye/ denetimini çalıştırın; listeleme eşleşmelidir. |
Referans: pod içi diskte dosyalar
Pod’un diskte iki veri yolu vardır:mTLS sertifika bundle’ı: /etc/agenteye/tls/ (CSI, salt okunur, collector yalnızca)
Secrets Store CSI Driver tarafından AWS Secrets Manager’dan monte edilmiş.
| Dosya | İçerik | Collector tarafından kullanıldığı gibi |
|---|---|---|
client.crt | PEM kodlu istemci sertifikası | AGENTEYE_TLS_CERT |
client.key | PEM kodlu özel anahtar | AGENTEYE_TLS_KEY |
ca.crt | PEM kodlu CA sertifikası | AGENTEYE_TLS_CA (isteğe bağlı, yalnızca AgentEye sunucu sertifikası genel olarak güvenilir olmadığında) |
Olay spoolü: $AGENTEYE_HOME/ (emptyDir, her iki konteyner arasında paylaşılan okuma yazma)
Adlandırılmış bir emptyDir volume agenteye-spool aracılığıyla paylaşılır.
| Yol | Yazıldığı | Okunan | Amaç |
|---|---|---|---|
$AGENTEYE_HOME/events/*.jsonl | Uygulama (AgentEye SDK) | Collector sweeper | SDK’nın yüklediği olay toplamları, yükleme beklemesi. |
$AGENTEYE_HOME/failed/ | Collector (yükleme başarısızlığında) | Siz (hata ayıklama sırasında) | Collector yeniden deneme sonrasında yüklemeyi başaramadığı JSONL dosyaları. |
$AGENTEYE_HOME/config.json | Siz (isteğe bağlı) | Collector | İsteğe bağlı collector yapılandırma dosyası (env var’lar için alternatif). |
events/ ve failed/ alt dizinlerinin ikisi de collector tarafından başlangıçta otomatik olarak oluşturulur; initContainer gerekli değildir.
İlgili belgeler
- enterprise-docs/collector-installation.md: collector ikili seçenekleri, mTLS yapılandırma referansı, daemon modları.
- enterprise-docs/kubernetes-deployment.md: çok pod dağıtımı, sertifika yayınlama içerikler, yaşam döngüsü ve sona erme uyarıları.
- enterprise-docs/api-keys.md: pod tarafından tüketilen collector API anahtarını sağlama.
- enterprise-docs/troubleshooting.md: küme genelinde sorun giderme dizini.

