Otomasyon

Kubernetes YAML'dan diyagram: tüm cluster tek yapıştırmada

Kimse bir Kubernetes cluster'ını manifestler arasında kaydırarak okumaz. Tek yapıştırmada Kubernetes YAML'dan diyagrama geç ve parçaların gerçekte nasıl bağlandığını gör.

Bir Kubernetes deployment'ı, sana hiç göstermediği bir şekli tarif eden bir YAML yığınıdır. Kubernetes YAML'dan diyagram çıkarmanın derdi de buradan doğar: Ingress bir Service'i adıyla gösterir, Service Pod'ları label ile seçer, Pod'lar bir Deployment'tan gelir, yol üzerinde bir yerde de bir ConfigMap ve bir Secret mount edilir. Her bağlantı, farklı bir dosyaya gömülmüş bir string eşleşmesidir. Trafiğin container'ına gerçekte nasıl ulaştığını anlamak için altı dokümanı kafanda tutar, label'ları doğru eşleştirdiğini umarsın.

Bilgi zaten orada; sadece hiç çizilmiyor. O zaman çiz. Manifestlerini LetDraw'a yapıştır; Kubernetes'in okuduğu aynı alanları (selector'lar, isimler, referanslar) okur ve nesnelerin nasıl bağlandığını gösteren bir diyagram yerleştirir. Bir klasör dolusu YAML, bir review'da parmakla gösterebileceğin bir resme dönüşür.

Kubernetes manifestleri grafiği zaten tarif ediyor

Kubernetes, özünde label'lar ve isimlerle birbirine bağlanmış nesnelerden oluşan bir grafiktir. Bir Ingress backend'i bir Service'i adlandırır; bir Service'in selector'ı bir Pod şablonunun label'larıyla eşleşir; bu Pod'ların sahibi bir Deployment'tır; volume'lar bir ConfigMap ya da Secret'a adıyla referans verir. Bu referanslar tam olarak bir diyagramın kenarlarıdır. Yapıyı uydurman ya da bağlantıları tahmin etmen gerekmez; YAML'ın içine birebir string eşleşmeleri olarak yazılmışlardır ve onları otomatik çizmeyi güvenli kılan da tam olarak budur.

namespace: shop hostselector Ingress/api Serviceapi :80 → :8080 Deployment: api 3 pod ConfigMap Secret
Ingress → Service → Deployment → Pod'lar; içeriye bir ConfigMap ve bir Secret mount edilmiş. Her ok, doğrudan YAML'dan alınmış bir label ya da isim eşleşmesi.

Tek yapıştırma, tüm cluster

Özel bir şey export etmen gerekmez. Zaten kubectl apply ettiğin manifestler girdinin ta kendisi. Onları birleştir (ya da aynı çok dokümanlı dosyayı kullan) ve Koddan Oluştur'a yapıştır; LetDraw nesneleri parse eder ve bulduğu bağlantıları çizer.

api.yaml
apiVersion: apps/v1
kind: Deployment
metadata: { name: api }
spec:
  replicas: 3
  selector: { matchLabels: { app: api } }
---
apiVersion: v1
kind: Service
metadata: { name: api }
spec:
  selector: { app: api }   # ← matches the Deployment's pods
  ports: [{ port: 80, targetPort: 8080 }]
---
apiVersion: networking.k8s.io/v1
kind: Ingress
spec:
  rules: [{ http: { paths: [{ backend:
    { service: { name: api } } }] } }]  # ← names the Service

O selector: app: api ve o service.name: api kenarların ta kendisi. LetDraw onları cluster'ın izlediği şekilde izler; böylece diyagram trafiğin nasıl aktığını hatırladığın gibi değil, gerçekte aktığı gibi yansıtır. Namespace'ler her şeyin içinde durduğu kapsayıcılara dönüşür, ikonlar da her nesne türünü bir bakışta tanınır kılar.

YAML cluster'ın nasıl bağlandığını söyler. Diyagram ise sadece o bağlantıların görünür hâlidir.

Artık normal bir diyagram

Taslak tuvale düştüğünde onu dilediğin gibi şekillendirebilirsin. Resmin saklamaya değer bir şeye dönüştüğü yer burası:

  • Gürültüyü buda. Hikâyenin parçası olmayan nesneleri gizle (onboarding diyagramında kimsenin görmesi gerekmeyen on beşinci ConfigMap gibi) ve istek yolunu ön planda tut.
  • Zor kısımlara not düş. Readiness probe'un nerede olduğunu, hangi Service'in yalnızca dahili olduğunu, Secret'ın aslında nereden geldiğini işaretle.
  • Birden fazla namespace göster. Birkaçını yapıştır, sınırlar multi-tenant düzeni apaçık ortaya koysun.
  • Kod olarak sakla. Mermaid ya da D2'ye export et ve manifestlerin yanına, repoya koy; böylece diyagram tarif ettiği cluster ile birlikte gelir.
İpucu. Onboarding diyagramı için tek bir uygulamanın manifestlerini, bir değişiklikten önce etki alanını incelemek için de tüm namespace'i yapıştır. Aynı yapıştırma hem "bu nasıl çalışıyor" hem de "bu neye dokunuyor" sorusunu yanıtlar.

Gerçekten deploy ettiğin cluster'ı gör

Yazdığın YAML ile çalıştırdığın cluster arasındaki boşluk, olayların saklandığı yerdir: hiçbir şeyle eşleşmeyen bir selector, yanlış porta bakan bir Service, unuttuğun bir Ingress route'u. Manifestleri çizmek bu uyumsuzlukları gece 2'de keşfettiğin bir şey olmaktan çıkarıp görebildiğin bir şeye dönüştürür. Zaten apply ettiğin şeyi yapıştır, nasıl bağlandığının resmini al ve onu üreten kodun yanında sakla.

Manifestlerini kopyala, bir kez yapıştır ve cluster'ın kendi kendine bir diyagrama dönüşmesini izle.

Manifestlerini bir Kubernetes cluster diyagramına dönüştür

Zaten apply ettiğin YAML'ı yapıştır; Ingress, Service, Deployment ve Pod'ların gerçekte nasıl bağlandığını gösteren, düzenlenebilir ve kod olarak export edilebilir bir diyagram al.

LetDraw'u ücretsiz aç