Talos Linux, Kubernetes için özel olarak tasarlanmış bir immutable işletim sistemidir. Sidero Labs tarafından geliştirilen bu dağıtım, geleneksel Linux sistemlerinden temel farklarla ayrılır. Sistemin kendisi de bir container olarak çalışır, konfigürasyonunun tamamı API üzerinden yönetilir ve disk üzerinde kalıcı değişiklik yapılmaz.
Immutable Mimarinin Temelleri
Talos Linux'ta root filesystem read-only squashfs olarak mount edilir. Çalışma zamanı için gereken /dev, /proc, /run, /tmp gibi dizinlerin yanında /system adında özel bir tmpfs alanı oluşturulur; /etc/hosts gibi çok az sayıda dosya yazılabilir kılınır. Talos tek bir imzalı, değiştirilemez sistem imajı olarak dağıtılır.
Güncellemeler, mevcut sistemin üzerine yazılmaz. Talos, yeni bir boot imajı ile gelir ve reboot sonrası bu imaj aktif hale gelir. Eski imaj diskte kalır, A/B şeması sayesinde gerekildiğinde rollback yapılabilir.
Kurulum Öncesi Hazırlık
Talos Linux çalıştırmak için talosctl CLI aracına ihtiyaç vardır. Bu araç, hem cluster oluşturmak hem de mevcut düğümleri yönetmek için kullanılır. İşletim sistemine göre binary indirilip PATH'e eklenir; macOS ve Linux üzerinde brew install siderolabs/tap/talosctl ile kurulabilir. Makineler İnternet'e çıkabilmeli; installer ve container imajlarını çekebilmeli, NTP sorgulayabilmelidir.
Kurulum için ihtiyaç duyulan minimum kaynaklar kontrol düğümü için 2 CPU çekirdeği, 2 GiB RAM ve 10 GiB sistem diskidir. Worker düğümleri 1 CPU, 1 GiB RAM ile çalışabilir.
Makine Konfigürasyonu Oluşturma
Talos'un en güçlü özelliklerinden biri, düğüm konfigürasyonunun YAML dosyası ile tanımlanmasıdır. talosctl gen config komutu cluster adı ve Kubernetes API endpoint URL'si olmak üzere iki argüman alır ve üç dosya üretir: controlplane.yaml, worker.yaml ve talosconfig. Kubernetes versiyonu --kubernetes-version flag'i ile sabitlenebilir; özelleştirme için config patch'leri kullanılır.
Konfigürasyon dosyasında network ayarları, Kubernetes versiyonu, kubelet konfigürasyonu ve scheduler ayarları belirlenir.
Cluster Oluşturma
Bare metal veya sanal ortamda Talos kurmak için önce ISO veya disk imajı indirilir. ISO modu RAM üzerinde live bir installer olarak çalışır, diske talosctl apply-config ile konfigürasyon gönderilene kadar hiçbir şey yazmaz. Raw disk imajı ise doğrudan diske yazılabilir.
Kurulum tamamlandığında düğümler network üzerinden erişilebilir hale gelir. Talos API (apid), varsayılan olarak 50000/tcp portunda dinler. Bu port üzerinden düğüme konfigürasyon gönderilir ve yönetilir.
Kontrol düğümünü başlatmak için talosctl apply-config --insecure --nodes IP_ADRESI --file controlplane.yaml komutu kullanılır. --insecure flag, diske kurulum yapılmamış, maintenance modundaki bir düğüme sertifika doğrulaması olmadan bağlanmak için gereklidir. Konfigürasyon uygulandığında Talos STATE partition'ına yazılır, sistem diske kurulur ve düğüm reboot ile yeni konfigürasyonla açılır.
İlk kontrol düğümünde etcd cluster'ını ayağa kaldırmak için talosctl bootstrap komutu çalıştırılır; bu komut tek seferlik, cluster ömrü boyunca yalnızca bir kez kullanılır.
Kubernetes Entegrasyonu
Talos Linux, Kubernetes'in control plane bileşenlerini (kube-apiserver, kube-controller-manager, kube-scheduler, etcd) kubelet üzerinde static pod olarak çalıştırır. Kubelet, machined adı verilen Talos'un kendi init süreci tarafından yönetilir; systemd yoktur, kullanıcı tanımlı servis çalıştırılamaz.
Kubeconfig almak için talosctl kubeconfig komutu çalıştırılır. Bu komut, admin kubeconfig'i indirir ve varsayılan olarak ~/.kube/config dosyası ile birleştirir; ardından kubectl ile cluster'a erişim sağlanır.
Düğüm Yönetimi
Talos düğümlerinde SSH yoktur. Tüm yönetim işlemleri talosctl üzerinden gRPC API ile yapılır; gRPC, apid servisi üzerinden yönlendirilir.
Sistem durumunu görmek için talosctl health komutu kullanılır. Bu komut, düğümlerin sağlık durumunu, Kubernetes bileşenlerinin çalışıp çalışmadığını kontrol eder. Daha detaylı bilgi için talosctl get komutu ile kaynaklar sorgulanabilir.
Güncelleme yapmak talosctl upgrade komutu ile gerçekleştirilir. Bu komut installer imajını çeker, yeni Talos sürümünü A/B şemasındaki pasif slota yazar ve reboot ile aktif hale getirir. Önceki sürüme dönmek için talosctl rollback komutu kullanılır. Kubernetes bileşenlerinin sürümü ise talosctl upgrade-k8s ile ayrı olarak yükseltilir.
Neden Talos?
Değişmez altyapı, Kubernetes cluster'larının güvenliğini ve yönetilebilirliğini artırır. Konfigürasyon drift'i ortadan kalkar, çünkü sistem dosyaları manuel olarak değiştirilemez. Declarative konfigürasyon ile sistem durumu tanımlanır ve Talos bu durumu sağlar.
Operational overhead azalır. Package manager, systemd, SSH daemon gibi bileşenler olmadığından bakım yükü düşer. Güvenlik yüzeyi daralır, saldırı vektörleri azalır.
GitOps workflow'ları ile tam uyumlu çalışır. Flux veya ArgoCD gibi araçlar, Talos konfigürasyonunu Git reposunda tutar ve değişiklik otomatik olarak cluster'a uygulanır.