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

rke system requirements

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 🙂

One Comment

Add a Comment

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir