iToverDose/Yazılım· 26 MAYIS 2026 · 00:00

Kubernetes Operatörleriyle Self-Service ve Güvenlik Otomasyonu Nasıl Sağlanır?

Kubernetes’ta elle yapılan ayarlar karmaşık YAML dosyalarıyla dolu olabilir. Peki Operator’larla bu süreci otomatikleştirerek geliştiricilere self-service ortamı sunabilir miyiz? Go tabanlı iki operatör örneğiyle inceleyelim.

DEV Community3 dk okuma0 Yorumlar

Kubernetes’ta bir servisi çalıştırmak için gereken Ingress ayarlarından TLS sertifikalarına kadar birçok bileşeni elle yapılandırmak, zaman alan ve hata riski yüksek bir süreçtir. Bu durum, özellikle bulut sağlayıcıların sunduğu hazır çözümlerden yoksun kaldığınızda daha da belirgin hale gelir. Neyse ki Kubernetes’in Custom Operators mekanizması, bu karmaşıklığı otomatikleştirmenin ve geliştiricilere self-service bir deneyim sunmanın kapısını açıyor.

Bu içeriğin ikinci bölümünde, HashiCorp Vault ile entegrasyon sağlamak üzere iki Go tabanlı operatör nasıl geliştirildiğini adım adım ele alacağız. Bu operatörler, Kubernetes kümesi içinde güvenli ve otomatik bir şekilde gizli bilgilerin yönetilmesini kolaylaştırıyor.

Operatör Geliştirmenin Temel Motivasyonu: Manuel Süreçlerin Yükünü Azaltmak

Vault ile Kubernetes arasında güvenli bir köprü kurmak için genellikle tekrarlanan manuel adımlar gerekiyor. Bu adımlar arasında şunlar bulunuyor:

  • Kubernetes içinde bir ServiceAccount oluşturmak.
  • Bu hesabın Vault’a erişebilmesi için özel bir rol ve politika tanımlamak.
  • Bu politikanın JWT token’larıyla ilişkilendirilerek güvenli kimlik doğrulamasını sağlamak.

Bu süreç, her yeni uygulama ya da bileşen için elle tekrarlamak zorunda kalındığında, hem zaman kaybına hem de güvenlik açıklarına yol açıyor. Bu sorunu çözmek için geliştirdiğimiz operatörler, bu adımların tamamını otomatikleştiriyor ve geliştiricilerden gizliyor. Sonuç olarak, kullanıcılar sadece ihtiyaçlarını bildiren basit tanımlamalar yaparken, arkadaki karmaşık güvenlik ayarları operatörler tarafından hallediliyor.

Vault ile Güvenli Entegrasyon İçin Operatör Mimarisi

Operatörlerimizden ilki olan `vaultreaver`, Vault’un API’si ile Kubernetes arasındaki köprüyü yönetiyor. Bu operatör, Vault’un yerleşik Kubernetes kimlik doğrulama yöntemini kullanıyor ve aşağıdaki iki özel kaynak türünü destekliyor:

  • `VaultPolicy`: Uygulamaların Vault’taki hangi verilerde hangi işlemleri yapabileceğini tanımlayan bir politika kaynağı.
  • `VaultKubernetesRoleBinding`: Bu politikanın hangi Kubernetes hizmet hesabına ve Vault rolüne bağlanacağını belirleyen bir kaynak.

Aşağıdaki örnek, bir namespace içinde çalışan bir uygulamanın Vault’taki kv/data/app-teste/secret-secreto yoluna sadece okuma erişimi almasını sağlıyor:

apiVersion: security.platform.io/v1alpha1
kind: VaultPolicy
metadata:
  name: nginx-deployment-external-secret
  namespace: nginx-apps
spec:
  policy: |
    path "kv/data/app-teste/secret-secreto" {
      capabilities = ["read"]
    }
  vaultPolicyName: nginx-deployment-external-secret-policy
---
apiVersion: security.platform.io/v1alpha1
kind: VaultKubernetesRoleBinding
metadata:
  name: nginx-deployment-external-secret
  namespace: nginx-apps
spec:
  audience: vault
  authMount: kubernetes
  boundNamespaces:
    - nginx-apps
  boundServiceAccounts:
    - nginx-deployment-external-secret
  roleName: nginx-deployment-external-secret
  tokenPolicies:
    - nginx-deployment-external-secret-policy
  tokenTTL: 1h

Bu tanımlar sayesinde, uygulama geliştiricileri Vault’taki gizli bilgilere erişmek için gereken tüm güvenlik ayarlarını elle yapılandırmak zorunda kalmıyor. Operatör, JWT token’larını otomatik olarak oluşturuyor ve ilgili hizmet hesabına bağlayarak güvenli iletişimi sağlıyor.

Platform Operatörü ile Self-Service Deneyimi

İkinci operatörümüz olan `platform-operator`, küme içindeki otomasyonları yönetiyor ve geliştiricilere basit bir arayüz sunuyor. Bu operatörün desteklediği kaynaklardan biri olan `VaultCertificate`, TLS sertifikası oluşturmayı son derece kolaylaştırıyor. Aşağıdaki örnek, Cert-Manager’ın Vault’un PKI arka ucunu kullanarak sertifika oluşturmasını sağlıyor:

apiVersion: security.platform.io/v1alpha1
kind: VaultCertificate
metadata:
  name: nginx-deployment-tls
  namespace: nginx-apps
spec:
  vaultUrl: 
  authPath: /v1/auth/kubernetes
  vaultRole: nginx-deployment-tls-role
  pkiPath: pki/sign/internal-dot-infra
  commonName: my-app.internal.infra
  dnsNames:
    - my-app.internal.infra
    - my-app-teste.internal.infra
  secretName: nginx-deployment-tls
  certManagerServiceAccount: cert-manager
  certManagerNamespace: cert-manager

Bu tanımlamayı yaptıktan sonra, operatör otomatik olarak aşağıdaki kaynakları oluşturuyor:

  • Cert-Manager için gerekli RBAC kurallarını taşıyan bir ServiceAccount.
  • Vault’a yönlendiren bir ClusterIssuer ya da Issuer kaynağı.
  • TLS sertifikasının oluşturulmasını tetikleyen Certificate kaynağı.

Benzer şekilde, ExternalSecrets kullanımını kolaylaştırmak için de bir operatör geliştirildi. Bu operatör, Vault’taki gizli bilgilerin SecretStore ve ExternalSecret kaynaklarına otomatik olarak bağlanmasını sağlıyor. Geliştiriciler, sadece ihtiyaçlarını bildiren basit bir tanımlama yaparak gizli bilgilere erişebiliyor.

Operatörlerin Doğrulanması ve Uygulama Senaryosu

Geliştirilen operatörlerin işlevselliğini doğrulamak amacıyla tam bir laboratuvar ortamı kuruldu. Bu ortamda, aşağıdaki senaryolar test edildi:

  • TLS sertifikası oluşturma: Cert-Manager ve Vault’un PKI arka ucu kullanılarak otomatik sertifika üretimi ve Nginx Ingress’e entegrasyonu.
  • Gizli bilgilerin yönetimi: Vault’taki gizli bilgilerin ExternalSecrets aracılığıyla Kubernetes’e otomatik olarak enjekte edilmesi.

Test sürecinde, basit bir Nginx uygulaması kullanıldı. Uygulama, Vault’tan otomatik olarak çekilen gizli bilgilerle yapılandırıldı ve TLS sertifikasıyla korunan bir Ingress aracılığıyla yayınlandı. Bu sayede, geliştiricilerin elle müdahale etmesine gerek kalmadan tamamen otomatik bir dağıtım süreci sağlandı.

Her iki operatörün de kaynak koduna ve detaylı kurulum adımlarına bu demo deposundan ulaşılabilir. Bu depo, operatörlerin nasıl çalıştığını yerinde görmek isteyenler için ideal bir başlangıç noktası sunuyor.

Sonuç: Operatörlerle Kubernetes’i Daha Erişilebilir Hale Getirmek

Kubernetes’in sunduğu esneklik ve gücün yanı sıra, elle yapılan ayarlar geliştiriciler için ciddi bir engel oluşturabiliyor. Custom Operators sayesinde, bu karmaşıklığı gizleyerek geliştiricilere basit ve güvenilir bir self-service deneyimi sunmak mümkün hale geliyor.

Geliştirdiğimiz operatörler, Vault ile Kubernetes arasındaki güvenli entegrasyonu otomatikleştirmenin yanı sıra, TLS sertifikası yönetimi ve gizli bilgilerin yönetimini de basitleştiriyor. Bu yaklaşım, özellikle büyük ölçekli ve karmaşık Kubernetes ortamlarında, operasyonel yükü önemli ölçüde azaltıyor ve güvenlik standartlarını korurken geliştirici verimliliğini artırıyor.

Gelecekte, bu operatörleri genişleterek daha fazla bileşen ve senaryoyu desteklemeyi hedefliyoruz. Böylece, Kubernetes’i sadece sistem yöneticileri için değil, tüm geliştirici ekipler için daha erişilebilir ve kullanışlı bir platform haline getirebiliriz.

Yapay zeka özeti

Kubernetes’ta Operator’lar kullanarak Vault entegrasyonunu otomatikleştirin. Go tabanlı operatörler ile self-service platformu nasıl oluşturabilirsiniz? Ayrıntılar için tıklayın.

Yorumlar

00
YORUM BIRAK
ID #B2SPA1

0 / 1200 KARAKTER

İnsan doğrulaması

4 + 9 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.