KOPS ile GCP üzerinde kubernetes cluster kurmak
kops ile kubernetes cluster install edeceğiz.

kops normalde AWS için yapılmış, kubernetes provision etmek için kullanıyor. offical olarak AWS desteği mevcut.
bunun dışında,
beta sürümünde digitalocean ve openstack,
alpha sürümünde iste google cloud ve azure destekliyor. bu yazımda google cloud üzerine kubernetes provision edeceğiz.
Pre-Req
öncelikle indirmemiz gerekenler Kops, gcloud/gsutils ve kubectl.
kops için alpha sürümünü github sayfasından bulup indireceğiz.
gcloud için google officall page den işletim sisteminize göre bulup inderebilirsiniz. gsutils de yanında yüklenecektir.
kubectl için yine işletim sisteminiz için doğru olanı bulup indirebilirsiniz.

öncelikle google sdk ile auth olmamız gerekiyor.
gcloud auth application-default login
komutu çalıştırdıktan sonra browserdan google üyeliğinizi seçip auth olabilirsiniz.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
google size 300$ lık bir free tier sağlar ve 3 ay boyunca yüm servicelere ücretdiz erişebilirsiniz.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
kops terraform gibi bir state reposu ihtiyaç duyuyor bunun için google cloud storage de bir bucket açacağız. bucket name uniqe olması gerekiyor.
gsutil mb -l europe-north1 gs://my-kops-clusters/#gs ismi uniqe olmalı o yüzden sonuna sayı da ekleyebilirsiniz.
state dosyasını bir variable ile bildireceğiz. bunu bashrc ye de ekleyebilirsiniz.
bunun dışından google projenizde Compute Engine API, Cloud Resource Manager API ve Identity and Access Management (IAM) API leri enable olması gerekmektedir.
KOPS

kops ile cluster kurmadan önce hangi proje oldugunu ve GCE ye kuracağımız için google feature ını aktif edeceğiz.
PROJECT=`gcloud config get-value project`
export KOPS_STATE_STORE=gs://my-kops-clusters/
tüm variable ları girdikten sonra

cluster kurma işlemine geçiyoruz.
kops create cluster simple.k8s.local --zones europe-north1-a --state ${KOPS_STATE_STORE}/ --project=${PROJECT}
kops default olarak belirttiğimiz zone a 1 master kuruyor ve 1 tane de worker kuruyor.
!! eğer multi master ve multi worker bir yapı kuracaksanız aşağıdaki komutu kullanabilirsiniz.
kops create cluster cka.k8s.local --node-count 3 --zones europe-west2-b --master-count 3 --state ${KOPS_STATE_STORE}/ --project=${PROJECT}
komutu girdiğimizde hem master hem de worker için instance group oluşturmakta
kops get instancegroup --state ${KOPS_STATE_STORE}/ --name simple.k8s.local

cluster a baktığımızda ise bir tane görünüyor.
kops get cluster

fakat burada aslında ilk adımda cluster oluşmuyor clusterın confiğini ve çalışacak infra oluşuyor, o confiğe de şu şekilde bakabiliriz.
kops get cluster --state ${KOPS_STATE_STORE}/ simple.k8s.local -oyaml
burada oluşacak clusterın yaml formatında confiğini görebilirsiniz.
aynı dosyalara state için create ettiğimiz bucket üzerinden de ulaşabilirsiniz.

KUBERNETS CLUSTER
kops configleri oluştuktan sonra update komutuyla clusterı kuracağız.
kops update cluster simple.k8s.local --state ${KOPS_STATE_STORE} --yes --admin

ardından 10 dakikalık bir bekleyiş sonrası kubernetes clusterımızı validate etmemiz gerekiyor.
öncelikle kubeconfig i çekelim not-authorized hatası alabiliriz.
kops export kubecfg simple.k8s.local --admin
daha sonra validate edeceğiz.
kops validate cluster --state ${KOPS_STATE_STORE}
komutu ile validate edeceğiz. validate ettikten sonra otomatik olarak .kube/config dosyasına kubernetes bilgileri yollayacak.

kops kurulumu google cloud üzerinde bize gereken ne varsa bütün resourceları oluşturarak cluster oluşturuyor.
KUBERNETES API
eğer kubernetes cluster detayına bakarsanız master node ile kubernetes control plane IP sinin farklı olduğunu görürsünüz.

kops un bir güzelliği daha size google cloud üzerinde load balancer yaratması. yani istekler önce loadbalancer a daha sonra ordan kubernetes cluster a geliyor.

eğer multi master bir cluster yapınız varsa işlemlerinizi basitleştirmiş oluyor.
!! kubernetes kubeconfig belli bir duration var (18h) o yüzden üzerinden zaman geçtiği zaman tekrar kubeconfig file ı yani kubernetes sertifikasını yenilemek için
kops export kubecfg simple.k8s.local --admin
komutu çalıştırmamız yeterli.
MULTI-MASTER KUBERNETES
Kops default da 1 master 1 worker kurduğundan bahsetmiştik.
eğer multi master yani fazladan control plane istiyorsanız bunu ilk seferde belirtebilir ya da kurduktan sonra config üzerinde değiştirerecek “kops update cluster “ diyerek update edebilirsiniz.
normal ilk kurulumda yapmak için aşağıdaki komutu kullanabilirsiniz.
kops create cluster \
--node-count 3 \
--master-count 3 \
--zones europe-north1-a,europe-north1-b \
--master-zones europe-north1-a,europe-north1-b \
hacluster.k8s.local
kops genel itibariyle çok kullanışlı bir tool, cloud ortamına hardway kubernetes cluster install yapmak istediğinizde kolayca bunu yapabiliyorsunuz.
production önerileri için sitesini ziyaret edebilirsiniz.
ayrıca acloudguru kops için bir lab ortamı hazırlamış free tier üye olarak faydalanabilirsiniz.