Nginx Ingress ve cert-manager ile Kubernetes Dashboard'u Uzaktan Erişebilir Hale Getirme

Giriş

Kubernetes Ingress Controller, Kubernetes kümelerinde gelen HTTP ve HTTPS trafiğini yönlendirmek ve işlemek için kullanılan bir bileşendir. Ingress Controller, gelen istekleri uygun hedeflere yönlendirir ve ayrıca yük dengelemesi, SSL/TLS şifreleme gibi özellikleri sağlar.

Ingress, Kubernetes'te gelen istekleri yönlendirmek için kullanılan bir API nesnesidir. Ingress Controller ise bu Ingress API'sini izleyen ve belirtilen kurallara göre gelen istekleri işleyen bir bileşendir. Ingress Controller, bir yük dengeleyici veya ters proxy ile entegre olarak çalışabilir.

İşlevsel olarak, Ingress Controller, gelen istekleri Ingress kaynaklarındaki kurallara göre eşleştirir. Her bir kural, belirli bir yol veya ana bilgisayarda çalışacak bir hedef uygulama hizmetini tanımlar. Örneğin, "/users" yolu "/users" hizmetine veya "example.com" ana bilgisayarı "example-service" hizmetine yönlendirilebilir.

Ingress Controller, gelen istekleri yönlendirirken, yük dengelemesi yapabilir ve istekleri hedef uygulama hizmetlerine dengeli bir şekilde dağıtabilir. Bu, yüksek kullanılabilirlik ve ölçeklenebilirlik sağlamak için çoklu uygulama kopyaları arasında trafiği dengeler.

Ayrıca, Ingress Controller SSL/TLS şifrelemesini destekler. Bu sayede gelen isteklerin şifrelenmesi sağlanır ve güvenli bir iletişim sağlanır. SSL/TLS sertifikaları, Ingress kaynaklarında yapılandırılarak uygulanabilir.

Kubernetes ekosisteminde çeşitli Ingress Controller seçenekleri bulunmaktadır. Örneğin, popüler Ingress Controller'lar arasında Nginx Ingress Controller, Traefik, HAProxy gibi çözümler bulunur. Her bir Ingress Controller, kendi yapılandırma ve özellik setine sahip olabilir, ancak temelde aynı amacı yerine getirir.

Sonuç olarak, Kubernetes Ingress Controller, gelen HTTP ve HTTPS trafiğini yönlendirmek ve işlemek için kullanılan bir bileşendir. Ingress Controller, Ingress kaynaklarındaki kurallara göre istekleri yönlendirir, yük dengelemesi yapar ve SSL/TLS şifrelemesi gibi özellikleri sağlar. Bu, Kubernetes ortamında gelen trafiği etkin bir şekilde yönetmeyi ve uygulama hizmetlerini dengeli ve güvenli bir şekilde sunmayı sağlar.

Kubernetes Dashboard

Kubernetes Dashboard, Kubernetes kümelerini yönetmek ve görsel olarak izlemek için bir web tabanlı kullanıcı arayüzüdür. Kullanıcılar, Kubernetes kümelerindeki uygulamaları, kaynakları, günlükleri ve diğer önemli bilgileri görüntülemek, izlemek ve yönetmek için Dashboard'u kullanabilirler.

Kubernetes Dashboard'un temel işlevleri şunlardır:

  1. Kümeleri Görsel Olarak İzleme: Dashboard, kullanıcılara Kubernetes kümelerini genel bir bakış açısıyla görsel olarak izleme imkanı sağlar. Kullanıcılar, CPU ve bellek kullanımı, düğüm durumu, pod sayısı gibi kümeye ilişkin temel istatistikleri görebilirler.

  2. Uygulama Yönetimi: Dashboard üzerinden kullanıcılar, uygulamaları oluşturabilir, dağıtabilir, güncelleyebilir ve kaldırabilirler. Yeni bir dağıtım oluşturmak, ölçeklendirmek veya güncellemek için gerekli ayarları yapabilirler. Bu şekilde, kullanıcılar uygulamaları hızlı ve kolay bir şekilde yönetebilirler.

  3. Kaynak Yönetimi: Dashboard, kullanıcılara Kubernetes kaynaklarını yönetme imkanı sunar. Pod'ları, hizmetleri, yeniden başlatmaları, kopyaları yönetme gibi işlemler Dashboard üzerinden gerçekleştirilebilir. Ayrıca, kaynakların durumunu izlemek ve hataları ayıklamak için logları görüntülemek de mümkündür.

  4. Günlük ve Olay İzleme: Kullanıcılar, Dashboard üzerinden pod'ların ve diğer Kubernetes kaynaklarının günlüklerini ve olaylarını görüntüleyebilirler. Bu sayede, uygulamaların çalışma durumunu izleyebilir ve hataları tespit edebilirler.

  5. Güvenlik ve Yetkilendirme: Dashboard, kullanıcıların kimlik doğrulamasını ve yetkilendirilmesini yönetir. Bu sayede, farklı kullanıcıların farklı izinlere sahip olmalarını sağlar ve kümelerin güvenliğini artırır. Kullanıcılar, RBAC (Rol Bazlı Erişim Kontrolü) politikalarını yapılandırarak kullanıcıların belirli kaynaklara erişim düzeyini kontrol edebilirler.

Kubernetes Dashboard, kullanıcı dostu bir arayüze sahiptir ve kullanıcıların Kubernetes kümelerini etkin bir şekilde yönetmelerini sağlar. Dashboard, başlangıç seviyesindeki kullanıcılar için de uygun bir seçenektir, çünkü kompleks Kubernetes yapılandırmaları yerine daha basit bir deneyim sunar. Bununla birlikte, daha gelişmiş kullanıcılar da Dashboard'u kullanarak kümeleri daha verimli bir şekilde yönetebilirler.

Sonuç olarak, Kubernetes Dashboard, Kubernetes kümelerini yönetmek ve izlemek için kullanılan web tabanlı bir kullanıcı arayüzüdür. Uygulama yönetimi, kaynak yönetimi, günlük izleme ve güvenlik gibi temel işlevleri sunar ve kullanıcılara kullanıcı dostu bir deneyim sağlar.

KURULUM

NGINX Ingress Controller veya Cert-Manager kurulu değilse:

1) NGINX Ingress Controller Kurulumu ve Kullanım Örnekleri

2) Kubernetes cert-manager Kurulumu ve Kullanım Örnekleri

UZAKTAN ERİŞİM

NGINX Ingress Controller ve Cert-Manager ile self-signed (kendi imzalı) sertifikalar kullanarak Kubernetes Dashboard'u uzaktan erişilebilir hale getirmek için gerekli YAML dosyaları:

1) Cert-Manager ile Self-Signed Sertifika otoritesi (Certificate authority) oluşturuyoruz.

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: selfsigned-cluster-issuer
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: kubernetes-dashboard-ca
  namespace: cert-manager
spec:
  isCA: true
  commonName: kubernetes-dashboard-ca
  secretName: kubernetes-dashboard-ca
  privateKey:
    algorithm: ECDSA
    size: 256
  dnsNames:
  - kubernetesmaster.local
  issuerRef:
    name: selfsigned-cluster-issuer
    kind: ClusterIssuer
    group: cert-manager.io
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: kubernetes-dashboard-cluster-issuer  
spec:
  ca:
    secretName: kubernetes-dashboard-ca

2) Ingress Yapılandırması:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    cert-manager.io/cluster-issuer: kubernetes-dashboard-cluster-issuer
  name: kubernetes-dashboard-ingress
  namespace: kubernetes-dashboard
spec:
  rules:
  - host: kubernetesmaster.local
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443
  tls:
  - hosts:
    - kubernetesmaster.local
    secretName: kubernetes-dashboard-tls

Kubernetes Dashboard kurulumu tamamlandığına göre artık host dosyasına;

192.168.1.101 kubernetesmaster.local

satırını ekliyoruz.

Hepsi bu kadar.. Artık https://kubernetesmaster.local üzerinden Kubernetes Dashboard'a erişebiliyor olmanız gerekiyor.

Takipte kalın.. :)

Yorumlar kapalı