Rancher ile Kubernetes Cluster Kurulumu Dev, Stage ve Prod.
Selamlar, Kubernetes kurulumu yapmak bir hayli uzun ve zor bir süreçtir. Bu sureci nasıl kısaltıp daha kolay hale getirebileceğini öğrenmek ister misiniz?
Son zamanlarda Production (Canlı ortam) için kurulum yaptığım için sizlere kurulumu nasıl yaptığımı, nasıl kolayca production ortamı kurulabileceğini anlatmaya çalışacağım.
Kubernetes Nedir ?
Kubernetes container (Docker Dersleri için Tıklayınız) orkestrasyon aracıdır.
Rancher Nedir ?
Rancher container yönetim aracıdır.
Kubernetes ve Rancher için yaklaşık aynı şeyleri dediğimizi fark etmiş olmalısınız. Bu yüzden rancher açıklamasını biraz genişletelim.
Rancher container yönetimi kısmında kubernetes (k8s) kullanır. Rancher ile birden fazla servis sağlayıcıdan ( AWS, Google, Digital Ocean vb) oluşturduğunuz node’ları tek bir yerden yönetebilirsiniz.
Rancher basit anlamda kubernetes kurulumu ve kubernetes yönetimi yapar diyebiliriz.
Rancher’ı kurmak oldukça basittir. Docker ile tek komut çalıştırılarak UI sayesinde cluster kurulumları kolayca yapılabilinir. Fakat Production için önerilen bir yöntem değildir hadi gelin kurulum yöntemlerini inceleyelim.
Rancher Kurulumu Dev!
- İlk aşama linux vm oluşturmak. Linux vm alabilirsiniz veya normal linux ortam kullanabilirsiniz.
- İkinci aşama Kurulum.
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher
- Kurulum sonrasın giriş yaparak Cluster Kurulumu yapmaya başlayabilirsiniz. Cluster kurulumunu UI sayesinde kolayca yapabilirsiniz.
Rancher Kurulumu Dev ortamı için Kaynak. Daha fazla bilgi için lütfen linke tıklayınız.
Bu kurulum sadece dev ortamı için önerilmektedir. Rancher podunun çökmesi durumunda cluster ile iletişiminiz kesilebilir.
Rancher Kurulumu Stage ve Prod
Stage ve Prod için ilk olarak k8s cluster’ı kurup üzerine yönetim için rancher yükleyeceğiz. Rancher kolayca k8s cluster’ı kurabilmemiz için rke (Rancher kubernetes Engine) adında bir araç geliştirmiştir.
ilk olarak RKE Linke tıklayarak RKE indirme adımlarını yapalım.
Linux için rke binary dosyasını indirip
# Linux $ mv rke_linux-amd64 rke # calıştırma izni verelim chmod +x rke # versiyon kontrolü rke --version
Cluster kurmaya başlamadan önce rke indirdiğiniz makineden cluster kuracağınız diğer makinelere şifresiz bağlanabildiğinizden emin olun. Bunu ssh key ile yapabilirsiniz. Ssh key oluşturup bu keyi diğer makinelere kopyalamalısınız.
1.) Cluster Config Dosyası
Cluster kurmak için ilk aşamamız cluster config dosyası oluşturmak olacak.
nodes: - address: 165.227.114.63 internal_address: 172.16.22.12 user: ubuntu role: [controlplane, worker, etcd] - address: 165.227.116.167 internal_address: 172.16.32.37 user: ubuntu role: [controlplane, worker, etcd] - address: 165.227.127.226 internal_address: 172.16.42.73 user: ubuntu role: [controlplane, worker, etcd] services: etcd: snapshot: true creation: 6h retention: 24h
Yukarıda bulunan örnek verileri kullanarak kendi linux makinelerimizin ip adreslerini, kullanıcı adı ve rolünü belirtelim bunun dışındaki alanlar zorunlu değildir.
Rollerin ne anlama geldiğinden biraz bahsedelim.
Worker: İşçi node olarak çevirebiliriz bizim uygulamanızın çalışacağı nodelar.
Controlplane ve etcd: Etcd bir çeşit veritabanıdır kubernetes bilgilerini tutar ne kadar pod gerekiyor, ne kadarı ayakta, durumları neler vb.) Controlplane ise bu podları yönetilmesinden sorumludur. Bu iki rolü aynı anda kullandığınızda bu node Master node olarak adlandırılabilinir.
NOT: En az 2 Master node olması önerilir. Bu uygulamanıza ve gereksinimine göre değişecektir.
2.) Port İzinleri
Farklı görevler verdiğimiz makinalar için birbirleri ile iletişim olsun diğer işler olsun bazı portları açmamız gerekiyor. Bu yüzden sırasıyla etcd, control plane ve worker node için port izinleri aşağıda belirtilmiştir.
# For etcd nodes, run the following commands: firewall-cmd --permanent --add-port=2376/tcp firewall-cmd --permanent --add-port=2379/tcp firewall-cmd --permanent --add-port=2380/tcp firewall-cmd --permanent --add-port=8472/udp firewall-cmd --permanent --add-port=9099/tcp firewall-cmd --permanent --add-port=10250/tcp # For control plane nodes, run the following commands: firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=2376/tcp firewall-cmd --permanent --add-port=6443/tcp firewall-cmd --permanent --add-port=8472/udp firewall-cmd --permanent --add-port=9099/tcp firewall-cmd --permanent --add-port=10250/tcp firewall-cmd --permanent --add-port=10254/tcp firewall-cmd --permanent --add-port=30000-32767/tcp firewall-cmd --permanent --add-port=30000-32767/udp # For worker nodes, run the following commands: firewall-cmd --permanent --add-port=22/tcp firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=2376/tcp firewall-cmd --permanent --add-port=8472/udp firewall-cmd --permanent --add-port=9099/tcp firewall-cmd --permanent --add-port=10250/tcp firewall-cmd --permanent --add-port=10254/tcp firewall-cmd --permanent --add-port=30000-32767/tcp firewall-cmd --permanent --add-port=30000-32767/udp
firewall-cmd --reload
Eğer kurulum esnasında bir port hatası verirse o portu açıp yüklemeye tekrar devam edebilirsiniz. Dokumanlar bazen geri kalabiliyor 🙂
Daha fazla bilgi için Rancher Port İzinleri.
3.) RKE UP
rke up --config ./rancher-cluster.yml
Dosya yolunu vererek rke up komutunu çalıştırıyoruz. RKE bizim için diğer makinelere bağlanıp rollere uygun olarak kurulumu yapıyor.
4.) TEST Cluster
export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml
Oluşan “kube_config_rancher-cluster.yml” dosyasını KUBECONFIG adı ile export ediyoruz. Bu işlem komut koşabilmemiz için gerekli.
kubectl get nodes NAME STATUS ROLES AGE VERSION 165.227.114.63 Ready controlplane,etcd,worker 11m v1.13.5 165.227.116.167 Ready controlplane,etcd,worker 11m v1.13.5 165.227.127.226 Ready controlplane,etcd,worker 11m v1.13.5
5.) Kubernetes Pod Kontrolü
kubectl get pods --all-namespaces
Tüm podların ayakta ve çalışır durumda olduğundan emin olun.
Daha fazla bilgi için RKE Cluster Kurulumu.
6.) Kubernetes Cluster’ı Üzerine Rancher Kurulumu
1.) Helm Reposunu Eklemek
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
2.) Rancher için Namespace Oluşturmak
kubectl create namespace cattle-system
3.) Ssl Konfigürasyonu
# helm reposunu ekleyelım helm repo add jetstack https://charts.jetstack.io # Repomuzu güncelleyelim helm repo update # Certifica kurulumu helm install cert-manager jetstack/cert-manager \ --namespace cert-manager \ --create-namespace \ --version v1.5.1
Kurulumu test edelim.
kubectl get pods --namespace cert-manager NAME READY STATUS RESTARTS AGE cert-manager-5c6866597-zw7kh 1/1 Running 0 2m cert-manager-cainjector-577f6d9fd7-tr77l 1/1 Running 0 2m cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m
3.) Rancher Kurulumu
helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --set hostname=rancher.my.org \ --set replicas=3
4.) Kurulum Testi
kubectl -n cattle-system rollout status deploy/rancher Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available... deployment "rancher" successfully rolled out
Daha fazla bilgi için Kubernetes Cluster’I Üzerine Rancher Kurulumu.
Let’s Encrypt ssl sertifikası veya diğer işlemlerde ki opsiyonlarınızı görmek için linke gidebilirsiniz.
Tebrikler tamimiyle çalışan bir clusterınız oldu 🙂 (Eğer her şey yolunda gittiyse :D)
Bu dokumanda, yaptıklarımı aklımda kaldığı kadarıyla aktardım. Çok pahalı sistemler olduğundan dolayı evinizde böyle bir sisteme sahip olmak biraz zor 🙂
Yeri gelmişken benim önerim küçük ve orta ölçekli uygulamalar için 2 Master 3 Worker node olacak şekilde tasarlanmasıdır. Master node’un birine bir şey olduğunda diğer node işlemleri yönetecektir sizde o arada sorunu çözmeye odaklanacaksınız.
Sistem gereksinimleri
Daha fazla bilgi için Sistem Gereksinimleri.
Bu yazımda en basit şekliyle k8s Clusterı kurmayı anlatmaya çalıştım. Diğer yazılarda görüşmek üzere 🙂