Ana içeriğe atla
Uygulamanızı ve AgentEye collector’ını aynı Kubernetes Pod içinde çalıştırın, böylece telemetri toplanmak üzere hiçbir zaman bir ağ sınırını geçmez. Uygulamanızın SDK’sı ve collector, tek bir pod içi olay spoolunu paylaşır, bu da düşük gecikmeli, işlem içi telemetri aktarımı anlamına gelir - localhost portu açıklanmaz, hizmet ağını geçilmez ve collector’ın yaşam döngüsü doğrudan gözlemlediği iş yüküne bağlıdır. Collector’ın sunduğu mTLS istemci sertifikası doğrudan AWS Secrets Manager’dan pod’unuza teslim edilir, böylece kimlik bilgisi döndürme sizin tarafınızda manuel dosya taşımayı gerektirmez. Burada açıklanan sidecar + shared-spool modeli buluta bağımsızdır; 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

İki veri akışı, iki birim:
  • Events (pod içi): uygulamanızın SDK’sı .jsonl dosyalarını $AGENTEYE_HOME/events/ adresindeki shared emptyDir’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.
İki bağımsız taraf:
TarafSorumluluk
ExospheremTLS 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.
SizSecrets 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 kubectl iş 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:
ÖzellikDeğer
Gizli adıagenteye/mtls-client/<cluster-name> (yenileme sırasında stabil)
BölgeEKS 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
EtiketAgentEyeCluster=<cluster-name>
Yenileme sırasında, aynı gizli yerinde yeni bir sürümle güncellenir, böylece ARN ve ad hiç değişmez; 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.
Doğrulayın:
Beklenen: her pod için 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

Bu, 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

İzinKapsamNeden
secretsmanager:GetSecretValuearn:aws:secretsmanager:<region>:<acct>:secret:agenteye/mtls-client/<cluster>-*CSI Driver her monte etme + döndürme onayında gizliyi okur.
secretsmanager:DescribeSecretaynıCSI Driver DescribeSecret çağırır yoklamalar arasındaki sürüm değişikliklerini algılamak için.
YAPMAYINIZ 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ı emptyDir volume’ü aynı yolda monte eder.
  • Her iki konteyner de AGENTEYE_HOME o yola ayarla.
  • Uygulamanız image’ı AgentEye SDK yüklü ve yapılandırılmış olmalıdır (bkz. enterprise-docs/python-sdk.md).
AGENTEYE_HOME ayarlanmadığı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_HOME aynı 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

Beklenen: 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:
İki listeleme farklılaştırılırsa, volume her iki konteynerine monte edilmemiştir (veya AGENTEYE_HOME farklıdır); bkz. § Sorun Giderme. Uçtan uca duman testi:
Beklenen: collector sıraya alınan tüm olayları yükler ve 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:
  1. Secrets Manager’ın gizli yeni bir AWSCURRENT sürümü alır. ARN ve ad değişmeden kalır.
  2. rotationPollInterval iç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.
  3. 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ğin inotifywait ile) ve dosyalar değiştiğinde yeniden başlatmayı tetikleyin.
Önceki sertifika yenilemenin ardından yaklaşık 15 gün boyunca geçerli kaldığından, yeniden başlatmayı alımda kesintisiz olarak gerçekleştirebileceğiniz geniş bir pencereniz vardır. Exosphere yenilenen bundle’ı sizin için yayınlar; sizin tarafınızda tek rutin eylem, collector’ın bu pencere içinde yeniden başlatılmasını sağlamaktır.

Sorun Giderme

BelirtiMuhtemel NedeniDüzeltme
Pod ContainerCreating içinde takılı, olaylar MountVolume.SetUp failed for volume "agenteye-mtls" gösterCSI sağlayıcısı Secrets Manager’a ulaşamazIRSA’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:GetSecretValueIAM politikası yanlış ARN’ye kapsamlıdırGizli 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ındaaws secretsmanager list-secrets --filters Key=tag-key,Values=AgentEyeCluster ile tam adı doğrulayın.
jmesPath hatası, yalnızca bir dosya monteJMESPath söz dizimiJSON anahtarlarındaki noktalar çift alıntı gerektirir: '"client.crt"', client.crt değil.
Collector günlükleri yenileme sonrası tls: bad certificateCSI Driver yeni sürümü henüz yoklamadı veya collector başlangıçta yüklediği önceki sertifika ile çalışmaya devam ediyorMonte 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 crashloopsVolume ilk başlangıçta henüz doldurulmamış; başlangıç sondası çok agresifKüçü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 OOMKilledBirçok SecretProviderClass ile kümeler için varsayılan bellek sınırları çok düşükHelm 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östermezUygulama 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.
Önce grafiklenecek günlükler:

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İçerikCollector tarafından kullanıldığı gibi
client.crtPEM kodlu istemci sertifikasıAGENTEYE_TLS_CERT
client.keyPEM kodlu özel anahtarAGENTEYE_TLS_KEY
ca.crtPEM kodlu CA sertifikasıAGENTEYE_TLS_CA (isteğe bağlı, yalnızca AgentEye sunucu sertifikası genel olarak güvenilir olmadığında)
Üçü de salt okunur olarak monte edilir ve konteyner kullanıcısı tarafından sahip olunan. Gizli döndüğünde CSI Driver tarafından yeniden yazılır.

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.
YolYazıldığıOkunanAmaç
$AGENTEYE_HOME/events/*.jsonlUygulama (AgentEye SDK)Collector sweeperSDK’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.jsonSiz (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